《C语言经典程序片段(21页).doc》由会员分享,可在线阅读,更多相关《C语言经典程序片段(21页).doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-C语言经典程序片段-第 21 页C语言经典程序片段以下程序只能出了实现程序功能的核心语句,请掌握其编程思想。1. 编写函数fun求1!+2!+3!+ +n!的和,在main函 数中由键盘输入n值,并输出运算结果。请编写fun 函数。int i;float f=1,s=0;for(i=1;i=n;i+) f=f*i; s=s+f; return s;2. 从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。 请编写fun函数。int min,i;min=x0;for(i=1;in;i+)if(ximin) min=xi;return min;3. 从键盘
2、输入一个大于3的整数,调用函数fun判断 其是否素数,然后在main函数中输出相应的结论信息。int i;int j;j= 1;for(i=2;in;i+)if(n%i=0) j= 0;return j;4. 输入2个学生3门课的成绩,计算学生成绩平均分,课程平均分和最高分.int i,j;float sum; for(i=0;i2;i+) /*计算第i个学生平均分*/ sum=0; for(j=0;j3;j+) sum=sum+scoreij; StuAgvi=sum/3; for(j=0;j3;j+) /*计算第j门课的平均分*/ sum=0; for(i=0;i2;i+) sum=sum
3、+ score ij; CouAgvj=sum/2; Max=score00; for(i=0;i2;i+) for(j=0;j3;j+) if(Max=scoreij)Max=scoreij; return ;5. 从字符串s中删除指定的字符c。int i,k=0; for(i=0;si!=0;i+) if(si!=c) sk+=si; sk=0;6. 求出二维数组周边元素之和,作为函数值返回。二 维数组的值在主函数中赋予。int s=0; int i,j; for(i=0;iM;i+) s=s+ai0+aiN-1; for(j=1;j1e-4); return r1;8. 求一个四位数的各
4、位数字的立方和。int d,k,s=0; while (n0) d=n%10; s+=d*d*d; n/=10; return s;9. 求1到100之间的偶数之积。double y=1; int i; for(i=1;i=m;i+) if(i%2=0)y*=i; return y;10. 找出一批正整数中的最大的偶数。int i,amax=-1; for(i=0;iamax) amax=ai; return amax;11. 求5行5列矩阵的主、副对角线上元素之和。注意,两条对角线相交的元素只加一次。int s=0; int i,j; for(i=0;iM;i+) s=s+aii+aiM-1
5、-i; s=s-a(M-1)/2(M-1)/2; return s;12. 计算并输出给定整数n的所有因子之和(不包括1与自身)。注意:n的值不大于1000。int s=0,i; for(i=2;in;i+) if(n%i=0)s=s+i; return s;13. 计算n门课程的平均值,计算结果作为函数值返回。int i; float y=0; for(i=0;in;i+) y+=ai; y=y/n; return y;14. 调用函数fun判断一个三位数是否水仙花数。在main函数中从键盘输入一个三位数,并输出判断结果。请编写fun函数。说明:所谓水仙花数是指一3位数,其各位数字立方和等于
6、该数本身。例如:153是一个水仙花数,因为153=1+125+27。int bw,sw,gw;bw=n/100;sw=(n-bw*100)/10;gw=n%10; if(n=bw*bw*bw+sw*sw*sw+gw*gw*gw) return 1; else return 0;15. 从键盘为一维整型数组输入10个整数,调用fun函数 找出其中最小的数,并在main函数中输出。int min,i;min=x0;for(i=1;in;i+)if(ximin) min=xi;return min;16. 将主函数中输入的字符串反序存放。例如:输入字符串“abcdefg”,则应输出“gfedcba”
7、。int i,j; char c;for(i=0,j=n-1;ij;i+,j-) /*或者for(i=0,j=n-1;in/2;i+,j-)*/c=*(str+i);*(str+i)=*(str+j);*(str+j)=c;17. 统计出若干个学生的平均成绩,最高分以及得最高分的人数。int i;float sum=0,ave; Max=array0;for(i=0;in;i+) if(Maxarray i) Max=array i; sum=sum+array i; ave=sum/n; for(i=0;in;i+) if(array i=Max) J+;return(ave);18. 求出
8、NM整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。int max,i,j;max=array 00;Row=0;Col=0;for(i=0;iN;i+) for(j=0;jM;j+) if(maxarray ij) max=array ij; Row=i;Col=j;return(max);19. 输入一个字符串,过滤此串,只保留串中的字母字 符,并统计新生成串中包含的字母个数。int i,j;for(i=0,j=0;*(ptr+i)!=0;i+)if(*(ptr+i)=a|*(ptr+i)=A)*(ptr+j)=*(ptr+i);j+;*(ptr+
9、j)=0;return(j);20. 判断m是否为素数。int i,k=1; if(m=1) k=0; for(i=2;im;i+) if(m%i=0) k=0;return k;21. 在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的积,并在fun() 函数中输出。int sum;int i,j;sum=1;for(i=0;i3;i+) sum=sum*aii; return sum;22. 编写函数fun其功能是:根据整型形参m,计算如下 公式的值:y=1/2!+1/4!+1/m!(m是偶数)double y=0.0;int i,j;double s=1;fo
10、r (i=2;i=m;i+=2)for(j=i-1;j=i;j+)s=s*j;y=y+1.0/s;return y;23. 判断一个整数w的各位数字平方之和能否被5整除,可以被5整除则返回1,否则返回0。int k,s=0; do s=s+(w%10)*(w%10); w=w/10; while(w!=0); if(s%5=0)k=1; else k=0; return(k);24. 求1到w之间的奇数之和。long y=0; int i; for(i=1;i=w;i+) if(i%2=1)y+=i; return y;25. 能计算从1开始到n的自然数中偶数的平方的和,n由 键盘输入,并在m
11、ain()函数中输出。(n是偶数)int sum,i;sum =0;for(i=2;i=n;i=i+2)sum=sum+i*i;return(sum);26. 在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的平方和,并在 fun()函数中输出。int sum;int i;sum=0;for(i=0;i10)n=n+i*(w%10);w/=10;i*=10;return n;28. 能计算从1开始到n的自然数的和,n由键盘输入,并在main()函数中输出。int sum,i;sum =0;for(i=1;i=n;i+)sum=sum+i;return(sum);29
12、. 编写程序,实现矩阵(3行3列)的转置(即行列互换) int i,j,t; for(i=0; i 3; i+) for(j=0; j =5)return(int)(h*100+1)/100.0;elsereturn(int)(h*100)/100.0;31. 计算出k以内最大的10个能被13或17整除的自然数之 和。int a=0,b=0;while(k=2)&(b10)if(k%13=0)|(k%17=0) a=a+k;b+; k-; return a;32. 找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回。int i,k;for(i=n+1;i+)for(k=2;ki;k+)
13、if(i%k=0)break;if(k=i)return(i);33. 根据整型参数n,计算如图公式的值double a=1;int i;for(i=1;in;i+)a=1.0/(1+a);return a;34. 计算并输出给定整数的所有因子之积(包括自身)。规定这个整数的值不大于50。long s=1,i; for(i=2;i=n;i+) if(n%i=0)s=s*i; return s;35. 求给定正整数n以内的素数之积。(n28)long i,k;long s=1; for(i=2;i=n;i+) for(k=2;k0) d=n%10; s*=d; n/=10; return s;3
14、7. 从字符串中删除指定的字符。同一字母的大、小写 按不同字符处理。char *q=s; for(; *q; q+) if(*q != c) *(s+)=*q; *s=0;38. 将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放 在c数的百位和个位上, b数的十位和个位数依次放在c数的十位和千位上。 例如:当a45,b=12。调用该函数后,c=2415。*c=a/10*100+a%10+b/10*10+b%10*1000;39. 编写程序,实现矩阵(3行3列)的转置(即行列互换) int i,j,t; for(i=0; i 3; i+) for(j=
15、0; j i; j+) t=arrayij; arrayij=arrayji; arrayji=t; 40. 判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。x的值由主函数从键盘读入,要求不大于100。说明:所谓“同构数”是指这样的数,这个数出现在它的平方数的右边。int k; k=x*x; if(k%10=x)|(k%100=x) return 1; else return 0;41. 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如:假定输入的字符串为:asdasasdfgasdaszx67asdmklo, 字符串为:as,则应输出6。int i
16、,n=0; for(i=0;i=strlen(str)-2;i+) if(stri=substr0)&(stri+1=substr1) n+; return n;42. 删除所有值为y的元素。数组元素中的值和y的值由 主函数通过键盘输入。int i,j; for(i=0;i*n;) if(bbi=y) for(j=i;j*n;j+) bbj=bbj+1; *n=*n-1; else i+;43. 在键盘上输入一个3行3列矩阵的各个元素的值(值 为整数),然后输出矩阵第一行与第三行元素之和, 并在fun()函数中输出。int sum;int i,j;sum=0;for(i=0;i3;i+=2)f
17、or(j=0;j3;j+) sum=sum+aij; return sum;44. 将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上, b数的十位和个位数依次放在 c数的个位和百位上。 例如:当a45,b=12。调用该函数后,c=4251。 *c=a/10*1000+a%10*10+b/10+b%10*100;45. 将从键盘上输入的每个单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,用.结束输入。if (*c= ) return 1;elseif(status & *c = a)*c += A - a;return
18、0;46. 把20个随机数存入一个数组,然后输出该数组中的 最小值。其中确定最小值的下标的操作在fun函数中 实现,请给出该函数的定义。int i,min=0; for(i=1; i listi) min=i; return min;从低位开始取出长整型变量s中偶数位上的数,依次 构成一个新数放在t中。 例如:当s中的数为:7654321时,t中的数为:642。 long sl=10;s /= 10; t = s % 10;while(s 0) s = s/100; t = s%10*sl + t;sl = sl * 10;从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。 例
19、如:当s中的数为:7654321时,t中的数为:7531。long sl=10; t = s % 10;while(s 0) s = s/100; t = s%10*sl + t;sl = sl * 10;47. 请编一个函数void fun(int ttMN,int ppN), tt指向一个M行N列的二维数组,求出二维数组每列 中最小元素,并依次放入pp所指一维数组中。二维 数组中的数已在主函数中赋予。int i,j; for(j=0;jN;j+) ppj=tt0j; for(i=1;iM;i+) if(ttijppj) ppj=ttij;48. 请编一个函数void fun(int ttM
20、N,int ppN), tt指向一个M行N列的二维数组,求出二维数组每列 中最大元素,并依次放入pp所指一维数组中。二维 数组中的数已在主函数中赋予。int i,j; for(j=0;jN;j+) ppj=tt0j; for(i=1;ippj) ppj=ttij;49. 根据整型形参m,计算如下公式的值:y=1/21/4 1/6.1/2mdouble y=0; int i; for(i=1; i=m; i+) y+=1.0/(2*i); return(y);50. 对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。例如:原来的字符串为CEAedca,排序后输出为CedcEAa
21、。int i,j; char t; for(i=1;inum-1;i+) for(j=i+1;jnum-1;j+) if(sisj) t=si;si=sj;sj=t;51. 求小于lim的所有素数并放在aa数组中,该函数返回所求出素数的个数。int n=0; int i,j; for(i=2;i=lim;i+) for(j=2;ji;j+) if(i%j=0) break; if(j=i) aan+=i; return n;52. 对长度为8个字符的字符串,将8个字符按降序排列。int i,j; char t; for(i=0;inum;i+) for(j=i+1;jnum;j+) if(si
22、sj) t=si;si=sj;sj=t;53. 求大于lim(lim小于100的整数)并且小于100的所有素数并放在aa数组中,该函数返回所求出素数的个数。int n=0; int i,j; for(i=lim;i=100;i+) for(j=2;ji;j+) if(i%j=0) break; if(j=i) aan+=i; return n;54. 根据整型形参m,计算如下公式的值: y=1/5+1/61/71/81/9+1/10.1/(m+5)double y=0; int i; for(i=0; i=m; i+) y+=1.0/(i+5); return(y);55. 根据整型形参m,计
23、算如下公式的值:y=sin(m)*10。double y=0; y=sin(m)*10; return(y);56. 实现两个整数的交换。int t; t=*a;*a=*b;*b=t;57. 把20个随机数存入一个数组,然后输出该数组中的最大值。 int i,max=0; for(i=1; i size; i+)if(listmaxlisti) max=i; return max;58. 编写程序, 求矩阵(3行3列)与2的乘积int i,j; for(i=0; i 3; i+) for(j=0; j 3; j+) arrayij=arrayij*2; 59. 求给定正整数m以内的素数之和。i
24、nt i,k,s=0; for(i=2;i=m;i+) for(k=2;k=a&si=A&si0) d=n%10; s+=d*d*d; n/=10; return s;62. 求1到100之间的偶数之积。double y=1; int i; for(i=1;i=m;i+) if(i%2=0)y*=i; return y;63. 求一组数中大于平均值的数的个数。int i,k=0; float s=0,ave; for(i=0;in;i+) s+=ai; ave=s/n; printf(%f ,ave); for(i=0;iave)k+;return k;64. 找出一批正整数中的最大的偶数。i
25、nt i,amax=-1; for(i=0;iamax) amax=ai; return amax;65. 求一分数序列2/1,3/2,5/3,8/5,13/8,21/13的前n项之和。int i; float f1=1,f2=1,f3,s=0; for(i=1;i=n;i+) f3=f1+f2; f1=f2; f2=f3; s=s+f2/f1;return s;66. 编写函数判断一个整数m的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100200之间满足条件的所有数。int k,s=0; do s=s+m%10; m=m/10; while(m!=0);
26、if(s%7=0)k=1; else k=0; return(k);67. 用函数将第2个串连接到第1个串之后,不允许使用strcat函数。int i,j; for(i=0;c1i!=0;i+); for(j=0;c2j!=0;j+) c1i+j=c2j; c1i+j=0;68. 用函数求一个N阶方阵右下三角元素的和(包括副对角线上的元素)。 int i,j,k=0; for(i=0;iN;i+) for(j=N-1-i;jN;j+) k=k+aij; return(k);69. 用函数求fibonacci数列前n项的和。long f,k=f1+f2; int i; for(i=3;i10)
27、z=log(x+3) (x-3) z=sin(x)/(cos(x)+4)double z; if(x10) z=exp(x); else if(x-3) z=log(x+3); else z=sin(x)/(cos(x)+4); return(z);72. 从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x4) z=x的八次幂(x-4) z=z=4/(x*(x+1)(x-10) z=|x|+20(其他)float z; if(x4) z=sqrt(x-4); else if(x-4) z=pow(x,8); else if(x-10) z=4/(x*(x+1); els
28、e z=fabs(x)+20; return(z);73. 编写函数用选择排序法对数组中的数据进行从小到大的排序。int i,j,k,t; for(i=0;in-1;i+) k=i; for(j=i+1;jaj) k=j; if(k!=i) t=ai; ai=ak; ak=t;74. 编写函数用冒泡排序法对数组中的数据进行从小到大的排序。int i,j,t; for(i=0;in-1;i+) for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t;75. 给定n个数据, 求最大值出现的位置(如果最大值出 现多次,求出第一次出现的位置即可)。int i,k; k=0; for(
29、i=1;isk) k=i; return(k+1);76. 用辗转相除法求两个整数的最大公约数。int r,t; if(nm) t=n;n=m;m=t; r=n%m; while(r!=0) n=m;m=r;r=n%m; return(m);77. 求一批数中小于平均值的数的个数。int i,sum=0,k=0; double average; for(i=0;in;i+) sum=sum+ai; average=sum*1.0/n; for(i=0;iai) k+;return(k);78. 给定n个数据, 求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)。int i,k;
30、 k=0; for(i=1;in;i+) if(sisk) k=i; return(k);79. 用函数实现字符串的复制, 不允许用strcpy()函数。int i; for(i=0;str1i!=0;i+) str2i=str1i;str2i=0;80. 产生20个30,120上的随机整数放入二维数组a54 中,求每行元素的和。int i,j; for(i=0;i5;i+) bi=0; for(j=0;j=A & stri=Z) stri=stri+32;82. 用函数求N个10,60上的整数中能被5整除的最大的数,如存在则返回这个最大值,如果不存在则返回0。int i; for(i=0;i
31、m) m=arri;83. 求一批数中最大值和最小值的差。int i,max,min; max=min=a0; for(i=1;imax) max=ai; else if(aimin) min=ai; return(max-min);84. 编写函数判断一个整数能否同时被3和5整除,若能则返回值为1,否则为0。调用该函数求出15300之 间能同时被3和5整除的数的个数。if(n%3=0&n%5=0) return(1); return(0);85. 编写函数求表达式的和(n的值由主函数输入)。1-1/2+1/3-1/4+.+1/mfloat s=0; int i,k=1; for(i=1;i=
32、n;i+) s=s+k*1.0/i; k=-k; return(s);86. 编写函数求表达式的和(n的值由主函数输入)。 1-1/2+1/3-1/4+.+1/mfloat s=0; int i,k=1; for(i=1;i=n;i+) s=s+k*1.0/i; k=-k; return(s);87. 编写函数求1100中奇数的平方和。float s=0; int i; for(i=1;i=a & stri=z) stri=stri-32;89. 求一批数中最大值和最小值的积。int i,max,min; max=min=a0; for(i=1;imax) max=ai; else if(ai
33、min) min=ai; return(max*min);90. 编写函数求3!+6!+9!+12!+15+18!+21!。int i,j; float t,s=0; for(i=3;i=n;i=i+3) t=1; for(j=1;j=i;j+) t=t*j; s=s+t; return(s);91. 产生20个30,120上的随机整数放入二维数组 a54中, 求其中的最小值。int i,j,s; s=a00; for(i=0;i5;i+) for(j=0;jaij)s=aij; return(s);92. 求n阶方阵主、副对角线上的元素之积。int i,j; float t=1; for(i
34、=0;iN;i+) for(j=0;jN;j+) if(i=j|i+j=N-1) t=t*arrij;return(t);93. 编写函数fun对主程序中用户输入的具有10个数据的数组a按由大到小排序,并在主程序中输出排序结果。int k,j,t; for (k=0;kn-1;k+) for (j=k+1;jn;j+) if (arraykarrayj) t=arrayk; arrayk=arrayj; arrayj=t;94. 编写函数fun(str,i,n),从字符串str中删除第i个字符开始的连续n个字符(注意:str0代表字符串的第一个字符)。while(stri+n-1) stri-1=stri+n-1; i+; stri-1=0;