发布时间:2019-09-19 08:04:20编辑:auto阅读(1569)
第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; }
上一篇: python 操作redis集群
下一篇: H3C交换机配置命令
47839
46384
37278
34728
29311
25969
24907
19947
19540
18019
5789°
6410°
5925°
5959°
7062°
5909°
5941°
6436°
6403°
7774°