C语言编程练习60题.docx
- 文档编号:8790676
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:32
- 大小:21.44KB
C语言编程练习60题.docx
《C语言编程练习60题.docx》由会员分享,可在线阅读,更多相关《C语言编程练习60题.docx(32页珍藏版)》请在冰豆网上搜索。
C语言编程练习60题
综合编程题
1.编写函数fun求1000以内所有7的倍数之和。
intfun(intm){}
2.用函数求一个N阶方阵右下三角元素的和(包括副对角线上的元素)。
#defineN3
intsum(inta[][N]){}
3.编写函数fun,函数的功能是:
求一组数中大于平均值的数的个数。
例如:
给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3。
intfun(inta[],intn){}
4.编写函数fun,函数的功能是:
求给定正整数m以内的素数之和。
例如:
当m=20时,函数值为77。
intfun(intm){}
5.求一批数中最大值和最小值的差。
intmax_min(inta[],intn){}
6.编写函数fun,函数的功能是:
求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。
每一分数的分母是前两项的分母之和;每一分数的分子是前两项的分子之和。
例如:
求前20项之和的值为32.660259。
floatfun(intn){}
7.编写函数fun,函数的功能是:
求一个四位数的各位数字的立方和
intfun(intn){}
8.编写函数fun,函数的功能是:
求1到100之间的偶数之积。
doublefun(intm){}
9.计算并输出high以内最大的10个素数之和,high由主函数传给fun函数,若high的值为100,则函数的值为732。
10.将一个字符串中的前N个字符复制到一个字符数组中去,不许使用strcpy函数。
练习题:
2:
将一个数组中的元素按逆序存放。
#defineN7
main()
{
staticinta[N]={12,9,16,5,7,2,1},k,s;
printf("\ntheoriganalarray:
\n");
for(k=0;k printf("%4d",a[k]); /***********SPACE***********/ for(k=0;k { s=a[k]; /***********SPACE***********/ a[k]=a[N-k-1]; /***********SPACE***********/ a[N-k-1]=s; } printf("\nthechangedarray: \n"); for(k=0;k /***********SPACE***********/ printf("%4d",a[k]); } 3: 产生10个[30,90]区间上的随机整数,然后对其用选择法进行由小到大的排序。 #include"stdlib.h" main() { /***********SPACE***********/ intt; inti,j,k; inta[10]; for(i=0;i<10;i++) a[i]=random(61)+30; for(i=0;i<9;i++) { /***********SPACE***********/ k=i; for(j=i+1;j<10;j++) /***********SPACE***********/ if(a[k]>a[j])k=j; if(k! =i) { t=a[k]; a[k]=a[i]; a[i]=t; } } /***********SPACE***********/ for(i=0;i<10;i++) printf("%5d",a[i]); printf("\n"); } 5: 数组名作为函数参数,求平均成绩。 floataver(floata[])/*定义求平均值函数,形参为一浮点型数组名*/ { inti; floatav,s=a[0]; for(i=1;i<5;i++) /***********SPACE***********/ s+=a[i]; av=s/5; /***********SPACE***********/ returnav; } voidmain() { floatsco[5],av; inti; printf("\ninput5scores: \n"); for(i=0;i<5;i++) /***********SPACE***********/ scanf("%f",&sco[i]); /***********SPACE***********/ av=aver(sco); printf("averagescoreis%5.2f\n",av); getch(); } 7: 输出Fibonacci数列的前15项,要求每行输出5项。 Fibonacci数列: 1,1,2,3,5,8,13........... #include main() { /***********SPACE***********/ intfib[14],i; fib[0]=1;fib[1]=1; for(i=2;i<15;i++) /***********SPACE***********/ fib[i]=fib[i-2]+fib[i-1]; for(i=0;i<15;i++) { printf("%d\t",fib[i]); /***********SPACE***********/ if(i%5==4)printf("\n"); } } 9: 通过函数的递归调用计算阶乘。 longpower(intn) { longf; if(n>1) /***********SPACE***********/ f=power(n-1)*n; else f=1; return(f); } main() { intn; longy; printf("inputainteagernumber: \n"); /***********SPACE***********/ scanf("%d",&n); y=power(n); /***********SPACE***********/ printf("%d! =%ld\n",n,y); getch(); } 10: 计算圆周率的近似值。 #include #include main() { ints; /***********SPACE***********/ floatn,pi; doublet; t=1;pi=0;n=1;s=1; /***********SPACE***********/ while(fabs(t)>=2e-6) { pi+=t;n+=2;s=-s;t=s/n; } /***********SPACE***********/ pi*=4; printf("pi=%.6f\n",pi); } 11: 删除字符串中的数字字符。 例如: 输入字符串: 48CTYP9E6,则输出: CTYPE。 #include /***********SPACE***********/ voidfun(char*s) { char*p=s; while(*p) if((*p>='0')&&(*p<='9'))p++; /***********SPACE***********/ else*s++=*p++; /***********SPACE***********/ *s='\0'; } main() { charitem[100]; printf("\nEnterastring: "); gets(item);fun(item); printf("\nThestring: \"%s\"\n",item); } 12: 计算并输出500以内最大的10个能被13或17整除的自然数之和。 #include #include /***********SPACE***********/ intfun(intk) { intm=0,mc=0,j,n; /***********SPACE***********/ while(k>=2&&mc<10) { /***********SPACE***********/ if(k%13==0||k%17==0) { m=m+k; mc++; } k--; } /***********SPACE***********/ returnm; } main() { clrscr(); printf("%d\n",fun(500)); } 13: 统计一个字符串中的字母、数字、空格和其它字符的个数。 #include"stdio.h" main() { chars1[80];inta[4]={0}; intk; /***********SPACE***********/ voidfun(chars[],intb[]); gets(s1); /***********SPACE***********/ fun(s1,a); puts(s1); for(k=0;k<4;k++) printf("%4d",a[k]); } voidfun(chars[],intb[]) { inti; for(i=0;s[i]! ='\0';i++) if('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z') b[0]++; /***********SPACE***********/ elseif('0'<=s[i]&&s[i]<='9') b[1]++; /***********SPACE***********/ elseif(s[i]=='') b[2]++; else b[3]++; } 14: 求两个非负整数的最大公约数和最小公倍数。 main() { intm,n,r,p,gcd,lcm; scanf("%d%d",&m,&n); if(m p=m*n; r=m%n; /***********SPACE***********/ while(r! =0) { /***********SPACE***********/ m=n;n=r;r=m%n; } /***********SPACE***********/ gcd=n; lcm=p/gcd; /***********SPACE***********/ printf("gcd=%d,lcm=%d\n",gcd,lcm); } 15: 以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。 #include #include main() { inti,n,sum; sum=0; /***********SPACE***********/ n=0; /***********SPACE***********/ for(i=1;i<=300;i++) /***********SPACE***********/ if(i%7==0||i%17==0) if(i%2==0) { sum=sum+i; n++; printf("%6d",i); /***********SPACE***********/ if(n%5==0) printf("\n"); } printf("\ntotal=%d",sum); } 16: 不用第三个变量,实现两个数的对调操作。 #include main() { inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); /***********SPACE***********/ a=a+b; /***********SPACE***********/ b=a-b; /***********SPACE***********/ a=a-b; printf("a=%d,b=%d\n",a,b); } 17: 找出数组中最大值和此元素的下标,数组元素的值由键盘输入。 #include"stdio.h" voidmain() { inta[10],*p,*s,i; for(i=0;i<10;i++) /***********SPACE***********/ scanf("%d",a+i); /***********SPACE***********/ for(p=a,s=a;p-a<10;p++) /***********SPACE***********/ if(*p>*s)s=p; /***********SPACE***********/ printf("max=%d,index=%d\n",*s,s-a); } 18: 输入学生成绩并显示。 #include structstudent { charnumber[6]; charname[6]; intscore[3]; }stu[2]; voidoutput(structstudentstu[2]); voidmain() { inti,j; /***********SPACE***********/ for(i=0;i<2;i++) { printf("请输入学生%d的成绩: \n",i+1); printf("学号: "); /***********SPACE***********/ scanf("%s",&stu[i].number); printf("姓名: "); scanf("%s",stu[i].name); for(j=0;j<3;j++) { printf("成绩%d.",j+1); /***********SPACE***********/ scanf("%d",&stu[i].score[j]); } printf("\n"); } output(stu); } voidoutput(structstudentstu[2]) { inti,j; printf("学号姓名成绩1成绩2成绩3\n"); for(i=0;i<2;i++) { /***********SPACE***********/ printf("%-6s%-6s",stu[i].number,stu[i].name); for(j=0;j<3;j++) printf("%-8d",stu[i].score[j]); printf("\n"); } } 19: 计算平均成绩并统计90分以上人数。 main() { intn,m;floatgrade,average; /***********SPACE***********/ average=n=m=0; while (1) { /***********SPACE***********/ scanf("%f",&grade); if(grade<0)break; n++; average+=grade; /***********SPACE***********/ if(grade<90)continue; m++; } if(n)printf("%.2f%d\n",average/n,m); } 20: 输入三个整数x,y,z,请把这三个数由小到大输出。 main() { intx,y,z,t; scanf("%d%d%d",&x,&y,&z); /***********SPACE***********/ if(x>y){t=x;x=y;y=t;} /***********SPACE***********/ if(x>z){t=z;z=x;x=t;} /***********SPACE***********/ if(y>z){t=y;y=z;z=t;} printf("smalltobig: %d%d%d\n",x,y,z); } 21: 三角形的面积为: area=sqrt(s*(s-a)*(s-b)*(s-c)).其中 ,s=(a+b+c)/2,a、b、c为三角形三条边的长。 定义两个带 参数的宏,一个用来求s,另一个用来求area。 编写程序, 在程序中用带参数的宏求面积area。 #include"math.h" /***********SPACE***********/ #defineS(x,y,z)(x+y+z)/2 #defineAREA(s,x,y,z)sqrt(s*(s-x)*(s-y)*(s-z)) main() { floata,b,c,s,area; printf("a,b,c="); /***********SPACE***********/ scanf("%f,%f,%f",&a,&b,&c); if(a+b>c&&b+c>a&&c+a>b) { /***********SPACE***********/ s=S(a,b,c); /***********SPACE***********/ area=AREA(s,a,b,c); printf("area=%f\n",area); } } 24: 要求输出如下结果: b=-1a=65535 a=65534 a=30b=6c=5 main() { /***********SPACE***********/ intb=-1,c;unsigneda; /***********SPACE***********/ a=b; printf("b=%da=%u\n",b,a); /***********SPACE***********/ a+=b; printf("a=%u\n",a); /***********SPACE***********/ b=(a=30)/(c=5); printf("a=%db=%dc=%d\n",a,b,c); } 25: 用函数调用方式,实现字符串的复制。 voidstring_copy(char*str_from,char*str_to) { inti=0; /***********SPACE***********/ for(;(*(str_to+i)=*(str_from+i))! ='\0';i++); } main() { staticchararray_str1[20]="Iamateacher."; chararray_str2[20]; /***********SPACE***********/ string_copy(array_str1,array_str2); /***********SPACE***********/ printf("array_str2=%s\n",array_str2); } 26: 计算并输出high以内最大的10个素数之和,high由主函数传给fun函数,若high的值为100,则函数的值为732。 #include #include #include intfun(inthigh) { intsum=0,n=0,j,yes; /***********SPACE***********/ while((high>=2)&&(n<10)) { yes=1; for(j=2;j<=high/2;j++) /***********SPACE***********/ if(high%j==0) { yes=0; break; } if(yes) { sum+=high; n++; } high--; } /***********SPACE***********/ returnsum; } main() { clrscr(); printf("%d\n",fun(100)); } 27: 下面的程序是求1! +3! +5! +……+n! 的和。 main() { longintf,s; inti,j,n; /***********SPACE***********/ s=0; scanf("%d",&n); /***********SPACE***********/ for(i=1;i<=n;i+=2) { f=1; /***********SPACE***********/ for(j=1;j<=i;j++) /***********SPACE***********/ f=f*j; s=s+f; } printf("n=%d,s=%ld\n",n,s); } 28: 打印以下图形。 ***** ***** ***** ***** ***** main() { chara[5][9]={""}; inti,j; for(i=0;i<5;i++) /***********SPACE***********/ for(j=i;j a[i][j]='*'; /***********SPACE***********/ for(i=0;i<5;i++) { for(j=0;j<9;j++) /***********SPACE***********/ printf("%c",a[i][j]); /***********SPACE***********/ printf("\n"); } } 29: 求一个二维数组中每行的最大值和每行的和。 #include"s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程 练习 60