精品C语言编程练习60题docx.docx
- 文档编号:7209107
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:28
- 大小:234.82KB
精品C语言编程练习60题docx.docx
《精品C语言编程练习60题docx.docx》由会员分享,可在线阅读,更多相关《精品C语言编程练习60题docx.docx(28页珍藏版)》请在冰豆网上搜索。
精品C语言编程练习60题docx
综合编程题
1.请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。
例如,原来的字符串为CEAedca,排序后输出为CedcEAao
intfun(char*s,intnum){}
2.输入三个字符串,按由小到大顺序输出。
编写交换函数fun,用交换指针的方式实现交换。
charfun(char*pl,char*p2){}
3.编写函数fun,函数的功能是:
计算并输出给定整数n的所有因子Z和(不包括1与自身)。
规定n的值不大于lOOOo例如:
n的值为855时,应输出704。
intfun(intn){}
4.编写函数fu门求1000以内所有7的倍数之和。
intfun(intm){}
5.用函数求一个邯介方阵右下三角元素的和(包括副对角线上的元素)。
#defineN3
intsum(inta[][N]){}
6.调用函数fun判断一个三位数是否〃水仙花数〃。
在main函数中从键盘输入一个三位数,并输出判断结果。
请编写fun函数。
所谓〃水仙花数〃是指一3位数,其各位数字立方和等于该数本身。
例如,153是一个水仙花数,因为153=1+125+27。
intfun(intn){}
7.编写函数fun,函数的功能是:
求一•组数中大于平均值的数的个数。
例如:
给定的一组数为
1,3,6,9,4,23,35,67,12,88时,函数值为3。
intfun(inta[],intn){}
8.编写函数fun,函数的功能是:
求给定正整数hi以内的素数Z和。
例如:
当呼20时,函数值为77。
intfun(intm){}
9.求一批数屮最大值和最小值的差。
intmaxmin(inta[],intn){}
10.请编写一个函数fun,函数的功能是:
求出MXM整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。
例如:
输入的数组为:
123
4156
12189
10112
求出的最大数为1&行坐标为2,列坐标为1。
^defineN4#defineM3
intfun(intarray[N][M]){}
11.编写函数判断一个整数in的各位数字之和能否被7整除,可以被7整除则返回1,否则返回0。
调用该函数找111100^200之间满足条件的所有数。
intsub(intm){}
12.产生20个[30,120]上的随机整数放入二维数组a[5][4]屮,求每行元素的和。
voidrowsum(inta■⑸[4],intb[5]){}
13.编写函数fun,函数的功能是:
求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。
每一分数的分母是前两项的分母之和;每一分数的分子是前两项的分子之和。
例如:
求前20项之和的值为32.660259。
floatfun(intn){}
14.编写函数fun其功能是在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的平方和,并在fun()函数屮输岀。
intfun(inta[3][3]){}
15.编写函数fun,函数的功能是:
求给定正整数m以内的素数之和。
例如:
当m二20时,函数值为77。
intfun(intm){}
16.从键盘上输入任意实数x,求出其所对应的函数值。
z=(x-4)的二次幕(x>4)
z二x的八次幕(x>-4)
z=z=4/(x*(x+1))(x>-10)
z=|x|+20(其他)
floaty(floatx){}
17.编写函数fun,函数的功能是:
求一个四位数的各位数字的立方和
intfun(intn){}
18.编写函数fun,函数的功能是:
求1到100之间的偶数之积。
doublefun(intm){}
19.计算并输出high以内最大的10个素数之和,high由主函数传给fun两数,若high的值为100,则函数的值为732。
20.将一个字符串中的前7个字符复制到一个字符数组中去,不许使用strcpy函数。
练习题:
1:
将字母转换成密码,转换规则是将当前字母变成其后的第四个字母,但W变成A、X变成B、Y变成C、Z变成D。
小写字母的转换规则同样。
#include
{
charc;
while((c=getchar())!
=,\n')
if((c>='a'&&cv二'z')||(c>二'A'&&cv二'Z'))c+=4;
if((c>Z&&c<=T+4)||c>N)c-=26;printf(,l%c,\c);
2:
将一个数组屮的元素按逆序存放。
#defineN7main()
staticinta[N]={12,9,16,5/7,2」},k,s;printf(°\ntheoriganalarray:
\nM);
for(k=0;k printf(n%4d\a[k]); /***********space***********/ for(k=0;k s=a[k]; a[k]=a[N-k-l]; /***********VPAQP***********/ a[N-k-l]=s; } printf(H\nthechangedarray: \nM); for(k=0;k printf(H%4d,\a[k]); 3: 产生10个[30,90]区间上的随机整数,然后对其用选择法进行由小到大的排序。 #include"stdlib.h”main() intt; intij,k; inta[10]; for(i=0;i<10;i++) a[i]=nindom(61)+30; for(i=0;i<9;i++) for(j=i+l;j<10;j++) if(a[k]>a[j])k=j;if(k! =i) { t=a[k]; a[k]=a[i];a[i]=t; } for(i=0;i<10;i++) printf(n%5dn,a[i]);printf(H\nn); 4: 将一个字符串中的前N个字符复制到一个字符数组中去,不许使用strcpy函数。 main() { charstrl[80],str2[80]; inti,n; /***********QDApp***********/ gets(slrl);scanf("%dn,&n); /***********CDApp***********/ for(i=0;i str2[i]=strl[i]; slF2m]=、0: printf(H%s\nH,str2); } 5: 数组名作为函数参数, floataver(floata[]) 1 求平均成绩。 严定义求平均值函数,形参为一浮点型数组名*/ inti; floatav,s=a[0]; for(i=l;i<5;i++) /***********£PA「p***********/ s+=a[i]; av=s/5; /***********VPAQP***********/ returnav; } voidmain() { floatsco[5],av; inti; printf(M\ninput5scores: \nn); for(i=0;i<5;i++) /***********QPAQF***********/ scanfC%f;&sco[i]); av=aver(sco); printf(Haveragescoreis%5.2f\n,\av);getch(); }6: 输入数组,最大的与最后一个元素交换,最小的与第一个元素交换,输出数组。 main() { intnumber[10]; input(number); max_min(number); output(number); } input(number) intnumber]10]; { inti; /***********SPACE***********/ for(i=0;iv9;i++) scanf("%d,",&number[i]); scanf("%d",&number[9]); } max_min(array) intarray[10]; { int*max,*min,kj; intarr_end; arr_end=array+10; max二min二array; for(p=array+1;p if(*p>*max) max=p; elseif(*p<*min) /***********SPACE***********/ min=p; k=*max; l=*min; *p=array[O]; array[0]=l; /***********VPAQP***********/ *p=array[9]; /***********space***********/ array[9]=k; k=*p; return; } output(cirray) intarray[10]; { int*p; for(p=array;p printf(”%d,",*p);printfC^d^^array⑼); }7: 输出Fibonacci数列的前15项,要求每行输出5项。 #include main() 8: 将一个字符串中下标为m的字符开始的全部字符复制成为另一个字符串。 #include voidstrcopy(char*str1,char*str2,intm) }main() inti,m; charstrl[80],str2[80]; gets(strl);scanf(H%d,\&m); strcopy(strl,str2,m);puts(strl);puts(str2); 9: 通过函数的递归调用讣算阶乘。 longpower(intn){ longf; if(n>l) f=power(n-l)*n;else f=l; return(f); } main() { intn; longy; printf(Minputainteagernumber: \nu); /**********KPAQP***********/ scanf(,,%d,\&n); y=power(n); printf(H%d! =%ld\n,\n,y);getch(); }10: 计算圆周率的近似值。 #include #include { ints; /***********vpa「f***********/ floatn,pi; doublet; t=l;pi=O;n=l;s=l; /***********CDApp***********/ while(fabs(t)>=2e-6) pi+=t;n+=2;s=-s;t=s/n; } /***********space***********/ piJ4; printf(npi=%.6f\n,\pi); 11: 删除字符串中的数字字符。 例如: 输入字符串: 48CTYP9E6,则输出: CTYPE。 #include char*p=s; while(*p) if((*p>=rOf)&&(*p<-9,))p++; else*s++=*p++; *s=,\0,; main() { charitem[100]; printf(n\nEnterastring: H);gets(item);fun(item); printf("\nThestring: \"%s\"\n",item);}12: 计算并输出500以内最大的10个能被13或17整除的自然数之和。 #include #include /***********space***********/ intfun(intk) intm=0,mc=0J,n; 严**********space***********/ while(k>=2&&me<10) 严**********space***********/ if(k%13==0||k%17==0) m=m+k;mc++; } k—; } /***********SPACE***********/ returnm; } main() { clrscr(); printf(n%d\n\fun(500)); 13: 统计一个字符串中的字母、数字.空格和其它字符的个数。 #include"stdio.h"main() {charsl[80];inta[4]={0};intk; /***********SPACE***********/voidfun(chars[],intb[]); gets(sl); /***********SPACE***********/fun(sl,a); puts(sl); for(k=0;k<4;k++)printf(H%4d\a[k]); voidfun(chars[],inlbfl) inti; for(i=0;s[i]! =,\0';i++) if(,a,<=s[i]&&s[i]<=,z,||,A,<=s[i]&&s[i]<=,Z,)b[0]++; /***********VPAQP***********/ elseif(,0,<=s[i]&&s[i]<=,9')b[l]卄; /***********space***********/ elseif(s[i]=='')b⑵++; else b⑶++; }14: 求两个非负整数的最大公约数和最小公倍数。 main() intm,n,r5p,gcdjcm; scanf("%d%dM,&m,&n); if(m r=m%n; /***********space***********/ while(r! =0) /***********space***********/ m=n;n=r;r=m%n; ) /***********space***********/ gcd=n; lcm=p/gcd; /***********space***********/ printf(ngcd=%d,lcm=%d\n,\gcdjcm); 15: 以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。 #include #include main() inti,n,sum; sum=0; /***********space***********/ n=0; /***********space***********/ for(i=l;i<=300;i++) /***********space***********/ if(i%7==0||i%17==0)if(i%2==0) sum=sum+i; n++; printf(u%6dn,i); 严**********SPACE***********/if(n%5==0)printf(H\nH); } printf(H\ntotal=%d,l,sum); 16: 不用第三个变量,实现两个数的对调操作。 #include { inta,b; scanf(H%d&b); printf(,'a=%d,b=%d\n',,a,b); /***********£PA「p***********/ a=a+b; /***********space***********/ b=a-b; /***********space***********/ a=a-b; printf("a=%d,b=%d\n",a,b); }17: 找出数组中最大值和此元素的下标,数组元素的值由键盘输入。 #includenstdio.hHvoidmain() { inta[10],*p,*s,i; for(i=0;i<10;i++) scanf(l,%d,\a+i); 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 { charnumberf61; charname[6]; intscore[3]; }stu[2]; voidoutput(structstudentstu[2]); voidmain() { inti,j; /***********SPACE***********/ for(i=0;i<2;i++) { printf(“请输入学生%(1的成绩: \n”,i+l);printfC学号: ”); /***********SPACE***********/ scanf("%s",&stu[i].number);print”姓名: ”); scanf(,,%$,\$tu[i].name); for(j=0;j<3;j++) printf(H成绩%d.”,j+1); /***********SPACE***********/scanf("%d",&stu[i].score[j]); } printf(H\nu); Olltput(stu); } voidoutput(structstudentstu[2]) { 成绩3\nH); intij; printfC学号姓名成绩1成绩2 for(i=0;i<2;i++) printf(M%-6s%-6s,\stu[i].number,stu[i].name);foW=0;jv3;j++) printf(H%-8d,\stu[i].score[j]); printf(n\nn); 19: 计算平均成绩并统计90分以上人数。 main() { intn,m;floatguide,average; /**********KPAQP***********/ average=n=m=0;while(l) } if(n)printf(,,%.2f%d\n,,,average/n,m); 20: 输入三个整数x,y,z,请把这三个数由小到大输出。 main() /***********space***********/ 21: 三角形的面积为: area=sqrt(s*(s-a)*(s-b)*(s-c)).M中 ,s=(a+b+c)/2,a、b、c为三角形三条边的长。 定义两个带 参数的宏,一个用来求s,另一个用来求area。 编写程序, 在稈序中用带参数的宏求面积areao #includenmath.hn #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(na,b,c=n); scanf(H%f,%f,%f\&a,&b、&c); if(a+b>c&&b+c>a&&c+a>b) { /***********QPAQF***********/ s=S(abc); area=AREA(s,a,b,c);printf(Harea=%f\n,\area); ) } 22: 下血函数为二分法查找key值。 数组中元素已递增排序,若找到key则返回对应的下标,否则返回-1。 fun(inta[],intn,intkey) { intlow,high,mid; low=0; high=n-l; /***********£PA**********/ while(low<=high) mid=(low+high)/2;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 语言 编程 练习 60 docx
![提示](https://static.bdocx.com/images/bang_tan.gif)