C语言程序设计上机习题与参考答案.docx
- 文档编号:25499433
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:19
- 大小:18.65KB
C语言程序设计上机习题与参考答案.docx
《C语言程序设计上机习题与参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计上机习题与参考答案.docx(19页珍藏版)》请在冰豆网上搜索。
C语言程序设计上机习题与参考答案
C语言程序设计上机习题
1、给出三角形的三边a、b、c,求三角形的面积(应先判断a、b、c三边是否能构成一个三角形)。
2、某幼儿园只收2~6岁的小孩,2~3岁编入小班,4岁编入中班,5~6岁编入大班,编制程序实现每输入一个年龄,输出该编入什么班。
3、编写程序,输入一个整数,判断它能否被3、5、7整除,并根据情况输出下列信息:
(1)能同时被3、5、7整;
(2)能同时被3、5、7中的两个数整除,并输出这两个数;(3)只能被3、5、7中的一个数整除;(4)不能被3、5、7中的任何一个数整除。
4、请列出所有的个位数是6,且能被3整除的两位数。
5、求1~500中能被5整除的数的倒数之和。
6、编写程序,输入某门功课的若干个同学的成绩,以-1作为终值,计算平均成绩并输出。
7、若口袋里放入12个球,3个红球,3个白的,6个黑的,从中任取8个,编写程序,列出所有可能的取法。
8、编写一个程序,求2012!
的末尾有多少个0?
9、一个自然数平方的末几位与该数相同时,称该数为同构数。
例如:
252=625,则25为同构数。
编程求出1~1000中的同构数。
10、输入一个较大的整数,求小于该整数的最大5个素数。
11、求下列数列的近似值:
S=1-1/22+1/33-1/44+…(-1)n/nn.输入精度,当某一项的精度小于该值时停止计算。
floatfun(floatesp)
{}
voidmain()
{floatesp;
scanf(“%f”,&esp);
printf(“%f\n”,fun(esp));}
12、编写一个函数change(intx,intr),将十进制整数x转换成r(1 13、求1000以内的亲密数对。 亲密数对的定义为: 若整数a的所有因子(不包括本身)之和为b,b的所有因子(不包括b本身)之和为a,且a和b不相等,则称a与b为亲密数对。 intfun(intx) {} voidmain() {intn,a,b; for(n=1;n<1000;n++) {b=fun(n); a=fun(b) if(a! =b&&a==n)printf(“\n%d,%d\n”,a,b); }} 14、用递归法求下列问题的解: 一对小兔,一个月后长成中兔,第二个月长成大兔,长成大兔,长成大兔后以后每个月生一对小兔。 第20个月有多少对兔子? 15、定义一个函数longf(chars[]),函数功能是将字符串s(只由数字符组成)转换为一个整数,并作为函数的返回值。 longf(chars[]) {} voidmain() {chars[10]; longintres; gets(s); res=f(s); printf(“%ld\n”,res);} 16、自编一函数,其功能是求一维数组最大值的下标,最大值由主函数输出。 intfun(floataa[],intn) {} voidmain() {floata[10]; intk,max; for(k=0;k<10;k++) scanf(“%f’,a+k); max=fun(a,10); printf(“Max=%f\n”,a[max]);} 17、编写一个函数fun(chars[],intn),函数的功能是将字符串s循环左移n个字符。 主函数输入一个字符串的一个整数。 voidfun(chafs[],intn) {} voidmain() {charss[255]; intn; gets(ss); printf(“Inputdata: \n”); scanf(“%d”,&n); fun(ss,n); puts(ss);} 18、编写一个函数,其功能是将字符串中指定的字符删除。 voidfun(char*ss,charc) {} voidmain() {chars[255],ch; printf(“Inputastring: \n”); gets(s); printf(“Inputacharacter: \n”); scanf(“%c”,&ch); fun(s,ch); puts(s); } 19、完成下面的函数,函数的功能是将a数中大于平均值的数组元素存入b数组中,大求平均值的数据个数通过指针方式返回。 voidfun(int*a,int*b,intk,int*n) {} voidmain() {inta[10],b[10],kk,,sum; for(kk=0;kk<10;kk++) scanf(“%d”,aa+k); fun(a,b,10,&sum); for(kk=0;kk printf(“%6d”,*(b+kk)); } 20、从键盘输入一任意的字符串,编一函数,其功能是将该字符串的数字字符构成一个数据返回。 例如: 输入字符串为1dfk3d45,得到返回值为1345. voidfun(char*s,longint*n) {} voidmain() {chars[20]; longintd; gets(s); fun(s,&d); printf(“%ld\n”,d);} 参考答案 1. #include #include voidmain() { floata=3,b=4,c=5,p=0,s=0; if((a+b>c)&&(a+c>b)&&(b+c>a)) { p=0.5*(a+b+c); s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("面积是%f\n",s); } elseprintf("不能构成三角形\n"); } 2. #include #include voidmain() { intage; printf("请输入年龄: "); scanf("%d",&age); if(age>=2&&age<=6) if(age<=3) printf("编入小班\n"); else if(age<=5) printf("编入中班\n"); else printf("编入大班\n"); else printf("您的输入有误! \n"); } 3. (1)#include voidmain() { intn; printf("请输入数n: \n"); scanf("%d",&n); if(n%3==0&&n%5==0&&n%7==0) printf("能同时被3,5,7整除"); } (2)#include voidmain() { intn; printf("请输入数n: \n"); scanf("%d",&n); if(n%3==0&&n%5==0&&n%7! =0)printf("能同时被3,5整除\n"); if(n%3==0&&n%5! =0&&n%7==0)printf("能同时被3,7整除\n"); if(n%3! =0&&n%5==0&&n%7==0)printf("能同时被5,7整除\n"); } (3) #include voidmain() { intn; printf("请输入数n: "); scanf("%d",&n); if(n%3==0&&n%5! =0&&n%7! =0)printf("只能被3整除\n"); if(n%3! =0&&n%5==0&&n%7! =0)printf("只能被5整除\n"); if(n%3! =0&&n%5! =0&&n%7==0)printf("只能被7整除\n"); } (4)#include voidmain() { intn; printf("请输入数n: "); scanf("%d",&n); if(n%3! =0&&n%5! =0&&n%7! =0) printf("不能被3、5、7中的任何一个数整除\n"); } 4.. #include voidmain() { inti; for(i=1;i<100;i++) { if(i%10==6&&i%3==0) printf("%d",i); } printf("\n"); } 5. #include voidmain() { floatsum=0; for(inti=1;i<=500;i++) { if(i%5==0) sum+=(1.0/i); } printf("sum=%f\n",sum); } 6. #include voidmain() { intn=0; floats=0,sum=0; printf("请输入若干学生成绩(输入-1结束): "); while(s! =-1) { sum+=s; scanf("%f",&s); n++; }sum=sum/(n-1); printf("该课程的平均成绩是: %5.2f\n",sum); } 7. #include voidmain() { intRed,White,Black; intCount=0; for(Red=0;Red<=3;Red++) for(White=0;White<=3;White++) { Black=8-Red-White; if(Black>=0&&Black<=6) printf("%2d.%d个红球,%d个白球,%d个黑球\n",++Count,Red,White,Black); } printf("\n共有%d种! \n\n",Count); } 8.(这道题目就是看可以分解成多少个5相乘的数) #include intmain(){ intresult=0; for(inti=1;i<=2012;++i) for(intn=i;n%5==0;n/=5) ++result; printf("%d\n",result); return0; } 9. #include voidmain() { longi,j,k; k=10; for(i=1;i<=1000;i++) { if(i==k) { k*=10; } j=i*i; if(j%k==i) { printf("%ld\t%ld\n",i,j); } } } 10. #include voidmain() { intn,count=0; printf("请输入一个整数n: "); scanf("%d",&n); for(inti=n;i>=2;i--) for(intt=2;t*t<=i;t++) { if(i%t==0) break; else { count++; if(count<=5) printf("%d\t",i); break; } } printf("\n"); } 11. #include #include floatfun(floatesp) { intn=0; floats=0; do{ n++; s+=pow(-1,n-1)*1.0/pow(n,n); }while(1.0/pow(n,n)>esp); returns; } voidmain() {floatesp; scanf("%f",&esp); printf("%f\n",fun(esp)); } 12. #include voidchange(intx,intr) { inta[32],i; for(i=0;x! =0;i++) { a[i]=x%r; x/=r; } for(i--;i>=0;i--) printf("%d",a[i]); printf("\n"); } voidmain() { intx,r; printf("请输入x和r: "); scanf("%d%d",&x,&r); change(x,r); } 13. #include intfun(intx) { inty=0; for(inti=1;i { if(x%i==0) y+=i; } returny; } voidmain() { intn,a,b; for(n=1;n<1000;n++) { b=fun(n); a=fun(b); if(a! =b&&a==n) printf("%d%d\n",a,b); } } 14. #include intfunc(intn) { if(n==1||n==0) return1; elsereturn2*func(n-1)+func(n-2); } voidmain() { printf("%d\n",func(20)); } 15. #include #include longf(chars[]) {longt=0; for(inti=0;i<10;i++) { t+=(s[i]-48)*pow(10,9-i); } returnt; } voidmain() {chars[10]; longintres; gets(s); res=f(s); printf("%ld\n",res); } 16. #include intfun(floataa[],intn) {intmax=0; for(inti=0;i<10;i++) if(aa[i]>=aa[max]) max=i; returnmax; } voidmain() { floata[10]; intk,max; for(k=0;k<10;k++) scanf("%f",&a[k]); max=fun(a,10); printf("Max=%f\n",a[max]); } 17. #include #include voidfun(chars[],intn) { chara[200]=""; memcpy(a,s,n); strcat(strcpy(s,s+n),a); } voidmain() { charss[255]; intn; gets(ss); printf("Inputdata: \n"); scanf("%d",&n); fun(ss,n); puts(ss); } 18. #include voidfun(char*ss,charc) { inti,j; for(i=0;ss[i]! =0;i++) { if(ss[i]==c) for(j=i;ss[j]! =0;j++) ss[j]=ss[j+1]; } } voidmain() { chars[255],ch; printf("Inputastring: \n"); gets(s); printf("Inputacharacter: \n"); scanf("%c",&ch); fun(s,ch); puts(s); } 19. #include voidfun(int*a,int*b,intk,int*n) { floatsum=0,avg=0; inti,j=0; for(i=0;i sum+=*(a+i); avg=sum/k; for(i=0;i { if(a[i]>avg) { b[j]=a[i]; j++; } } *n=j; } voidmain() {inta[10],b[10],kk,sum; for(kk=0;kk<10;kk++) scanf("%d",&a[kk]); fun(a,b,10,&sum); for(kk=0;kk printf("%6d",*(b+kk)); } 20. #include #include voidfun(char*s,longint*n) { longintt=0; intcount=0,i; inta; for(i=0;i<20;i++) { if(s[i]>=48&&s[i]<=57) { count++; } } for(i=0;i<20;i++) { if(s[i]>='0'&&s[i]<='9') {count--; t=t+(s[i]-48)*pow(10,count); } } *n=t; } voidmain() {chars[20]; longintd; gets(s); fun(s,&d); printf("%ld\n",d); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 上机 习题 参考答案