文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C语言 基础60题(3)

2023-01-31 07:06

关注

第17题
int sum_nth(unsigned int num, unsigned int n);
功  能:求出给定自然数的指定位置的数字(个位为0,十位为1,......)
参  数:num为给定的自然数;n为指定位置.
返回值:>=0,给定自然数的指定位置的数字; <0,不成功.
分  值:

//第17题
int sum_nth(unsigned int num,unsigned int n){
    if(num>=0){
        unsigned int i;
        if(num>10){
            for(i=1;i<=n;i++){
                num=num/10;
                if(num<10 && (n-i)>0)
                    return -1;
            } 
        }
        num=num%10;
        return num;
    }else{
    return -1;
    }
}

第18题
int sum_square(unsigned int num);
功  能:求出给定自然数的各位数字的平方和(例如 自然数1234的各位数字的平方和为30)
参  数:num为给定的自然数.
返回值:>=0,给定自然数的各位数字的平方和;<0,不成功.
分  值:

//第18题
int sum_square(unsigned int num){
    int sum=0;
    int temp;
    while(num>10){
        temp=num%10;
        sum=sum+temp*temp;
        num=num/10;
    }
    sum=sum+num*num;
    return sum;
}

第19题
int sort_acend(double* array, unsigned int n);
功  能:对给定数组中的数按升序排序
参  数:array为给定的数组;n为数组中元素的个数.
返回值:>=0,成功排序; <0,不成功.
分  值:

//第19题
//使用选择排序算法
int sort_ascend(double *arry, unsigned int n){
    unsigned int i,k;
    unsigned int lowIndex;
    for(i=0;i<n;i++){
        lowIndex=i;
        for(k=i+1;k<n;k++){
            if(*(arry+k)<*(arry+i))
                lowIndex = k;
        }
        double temp=*(arry+i);
        *(arry+i)=*(arry+lowIndex);
        *(arry+lowIndex)=temp;
    }

    bool flag1=true;
    for(i=0;i<n-1;i++){
        if(*(arry+i)<*(arry+i+1) && flag1){
            flag1=true;
        }else{
            flag1=false;
        }
    }
    
    if(flag1)
        return 1;
    return -1;
}

第20题
int sort_decend(double* array, unsigned int n);
功  能:对给定数组中的数按降序排序
参  数:array为给定的数组;n为数组中元素的个数.
返回值:>=0,成功排序; <0,不成功.
分  值:

//第20题
//插入排序算法
int sort_descend(double *arry, unsigned int n){
    unsigned int i,k;
    for(i=1;i<n;i++){
        for(k=i;k>0;k--){
            if(*(arry+k)>*(arry+k-1)){
                double temp=*(arry+k);
                *(arry+k)=*(arry+k-1);
                *(arry+k-1)=temp;
            }    
        }
    }
    bool flag1=true;
    for(i=0;i<n-1;i++){
        //printf("\n%.2f\n",*(arry+i));
        if(*(arry+i)>*(arry+i+1) && flag1){
            flag1=true;
        }else{
            flag1=false;
        }
    }
    
    if(flag1)
        return 1;
    return -1;
}

第21题
int search_bin(int* array, unsigned int n, int value);
功  能:用二分检索法(也称折半法,字典法等)找出给定数值在数组中位置的下标值
参  数:array为给定的数组;n为数组中元素的个数; value为要查找的数值.
返回值:>=0, 给定数值在数组中位置的下标; <0,未找到.
分  值:

//第21题
//二分检索法
int search_bin(int* array, unsigned int n, int value){
    
    int low=0,high=n-1,mid;//置当前查找区间上、下界的初值
    while(low<=high){
        if(*(array+low)==value)
            return low;
        if(*(array+high)==value)
            return high;
        //当前查找区间array[low..high]非空
        mid=low+((high-low)/2);
        //使用(low+high)/2会有整数溢出的问题
        if(*(array+mid)==value)
            return mid;//查找成功返回
        if(*(array+mid)<value)
            low=mid+1;//继续在array[mid+1..high]中查找
        else
            high=mid-1;//继续在array[low..mid-1]中查找
     
    }
    if(low>high)
        return-1;//当low>high时表示所查找区间内没有结果,查找失败
}

第22题
unsigned int factorial(unsigned int n);
功  能:求给定自然数的阶乘。
参  数:n为给定的自然数.
返回值:给定数的阶乘n!.
分  值:

//第22题

unsigned int factorial(unsigned int n){
    if(n==0||n==1){
        return 1;
    }else{
        return n*factorial(n-1);
    }

}

第23题
char*   strn2b(unsigned int n);
功  能:求出给定自然数的二进制字符串表示(例如,5的二进制字符串表示为“101”)
参  数:n为给定的自然数.
返回值:二进制字符串数组的首地址.
分  值:

//第23题
char*   strn2b(unsigned int n){
     char arr[32]={};//因为是无符号整数,所以二进制表示最长为32位
    for(int i=31;i>=0;i--){
        if((n & 0x1)==1){
            arr[i]='1';
        }else{
            arr[i]='0';
        }
        n=(n>>1);
    }

    return arr;
}


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯