版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计部分例题及课后习题参考程序1.编程计算如下分段函数:2?+3?10y=4?0?<105?-6?<?0参考程序#include<stdio.h>intmain()floatx,y;printf("inputx:");scanf("%f",&x);if(x>=10)y=2*x+3;elseif(x>=0)y=4*x;elsey=5*x-6;printf("y=%.2fn",y);2编程将从键盘输入的百分制成绩转换为等级分,转换方法如下:90以上(大于或等于90,下同)为A,80分以
2、上为B,70分以上为C,60分以上为D,60分以下,即低于60分为E。参考程序#include<stdio.h>intmain()floatscore;charrank;printf("inputascore:");scanf("%f",&score);if(score>100|score<0)printf("invalidscoreinputn");exit(-1);switch(int)score/10)case10:case9:rank='A'break;case8:rank=
3、39;B'break;case7:rank='C'break;case6:rank='D'break;default:rank='E'printf("%.2f:%cn",score,rank);return0;3 .编程判断以从键盘输入的三个数为边长,是否能构成三角形。参考程序#include<stdio.h>intmain()floata,b,c;printf("inputa,b,c:");scanf("%f%f%f",&a,&b,&c);i
4、f(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a)printf("(%.2f,%.2f,%.2f)能围成三角形n",a,b,c);elseprintf("(%.2f,%2.2f,%.2f)不能围成三角形n",a,b,c);4 .编程实现将从键盘输入的一个正整数逆序输出,如输入1234,输出3421参考程序#include<stdio.h>intmain()intn;printf("inputan
5、umber:");scanf("%d",&n);doprintf("%d",n%10);n/=10;while(n!=0);return0;5 .输入一个110范围内的整数,计算该数的阶乘。参考程序#include<stdio.h>intmain()intn,s=1,i;printf("inputanumber(110):");scanf("%d",&n);for(i=2;i<=n;i+)s*=i;printf("%d!=%dn",n,s);retur
6、n0;6 .从键盘输入的一行字符,统计其含有多少个字符。【参考程序】#include<stdio.h>intmain()charch;intcnt=0;printf("inputacharline:");ch=getchar();while(ch!='n')cnt+;ch=getchar();printf("%dn",cnt);return0;7 .打印乘法口诀表。【参考程序】#include<stdio.h>intmain()inti,j;for(i=1;i<=9;i+)for(j=1;j<=i;j+
7、)printf("%d*%d=%-3d",j,i,i*j);printf("n");return0;8 .在屏幕上打印如下规律的图形,具体行数由键盘输入。*【参考程序】#include<stdio.h>intmain()inti,j,n;printf("请输入打印图形的行数:");scanf("%d",&n);for(i=1;i<=n;i+)for(j=1;j<=n-i;j+)printf("");for(j=1;j<=2*i-1;j+)printf(&qu
8、ot;*");printf("n");return0;9 .从键盘输入一个正整数,编程判断其是否为素数(质数)【参考程序】#include<stdio.h>intmain()inti,n;printf("请输入一个正整数:");scanf("%d",&n);for(i=2;i*i<=n;i+)if(n%i=0)break;if(i*i<=n|n=1)printf("%d不是一个素数.n",n);elseprintf("%d是一个素数.n",n);retu
9、rn0;10 .从键盘输入100个整数,求其中正整数的和。【参考程序】#include<stdio.h>#defineN100intmain()intn,s=0,i;for(i=1;i<=N;i+)printf("请输入第%dj整数:",i);scanf("%d",&n);if(n<0)continue;s+=n;printf("%dn",s);return0;11 .从键盘输入1000个学生某门课程的百分制成绩,分别统计其中80分以上(即大于或等于80)、60分以上及低于60分的人数。【参考程序】#i
10、nclude<stdio.h>#defineN1000intmain()intm,n,k,i;floatscore;m=n=k=0;for(i=1;i<=N;i+)printf("请输入第个成绩:",i);scanf("%f",&score);if(score>100|score<0)printf("输入的成绩不符合百分制成绩要求,本成绩输入作废,请重新输入第%d个成绩:”,i);i-;continue;if(score>=80)m+;elseif(score>=60)n+;elsek+;pri
11、ntf("%d:%d:%dn",m,n,k);return0;12 .运用如下公式计算圆周率的近似值,当最后一项的绝对值小于10-6时,停止计算。?_114=-35-117+?+(-1严-1k+?【参考程序】#include<stdio.h>intmain()doublepi=0.0,t=1.0;intsgn=1;while(t<1000000)pi+=sgn/t;sgn=-sgn;t+=2;printf("Pi=%.6lfn",4*pi);return0;13 .古代某工地需要搬运砖块,已知男人每人每次搬3块,女人每人每次搬2块,小孩
12、两人每次抬一块,现有45人一次正好搬完全部砖块,请问男人、女人、小孩各几人?【参考程序】#include<stdio.h>intmain()intw,m,c;for(m=0;m<=15;m+)for(w=0;w<=22;w+)c=45-m-w;if(m*3+w*2+c*.5=45)printf("%d:%d:%dn",m,w,c);return0;14 .从键盘输入两个正整数到m、n中,求它们的最大公约数和最小公倍数。【参考程序】#include<stdio.h>intmain()intm,n,m1,n1,r;printf("请
13、输入两个正整数:");scanf("%d%d",&m,&n);m1=m;n1=n;r=m%n;while(r!=0)m=n;n=r;r=m%n;printf("gcd(%d,%d)=%dn",m1,n1,n);printf("lcm(%d,%d)=%dn",m1,n1,m1*n1/n);14.编程计算如下式子的值,直到return0;n等于100。-+-+?+(-1产1-+?234?【参考程序】#include<stdio.h>intmain()doubles=0.0,t=1.0;intsgn=1
14、;while(t<=100)s+=sgn/t;sgn=sgn;t+=1;printf("s=%.6lfn",s);return0;15.计算如下规律式子的值。其中a与n的值都是由键盘输入确定。如当a为2,n为3时,该式子表示的含义为2+22+222,故结果为246。a+aa+aaa+?+aaa?a(n个a)【参考程序】#include<stdio.h>intmain()inta,n,s=0,t;printf("inputa,n:");scanf("%d%d",&a,&n);t=a;while(n>
15、;0)s+=t;t=t*10+a;n-;printf("%dn",s);return0;16 .计算如下式子的值。3571011+2+4+6+?+100【参考程序】#include<stdio.h>intmain()intn;floats=0.0;for(n=2;n<=100;n+=2)s+=(float)(n+1)/n;printf("%.6fn",s);return0;17 .如数列第1项为2,此后各项的值均为其前一项的2倍再加3,编程计算该数列的前10项之和。【参考程序】#include<stdio.h>intmain
16、()intn,s=0,i;n=2;for(i=1;i<=3;i+)s+=n;n=n*2+3;printf("%dn",s);return0;18 .现要求将1角钱换成1分、2分或5分的硬币,请问有多少种换法,并输出每一种换法。【参考程序】#include<stdio.h>intmain()intone,two,five,cnt=0;for(five=0;five<=2;five+)for(two=0;two<=5;two+)one=10-five*5-two*2;if(one>=0)printf("%d:%d:%dn"
17、,one,two,five);cnt+;printf("一共有%d种换法n",cnt);return0;20. 编程统计并输出200到300以内的全部素数。【参考程序】#include<stdio.h>intmain()intm,i,k=0;for(m=201;m<300;m+=2)for(i=3;i*i<=m;i+=2)if(m%i=0)break;if(i*i>m)k+;printf("%8d",m);if(k%5=0)printf("n");printf("n200到300之间一共有%d个
18、素数n",k);return0;21. 打印所有“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数自身。如153【参考程序】#include<stdio.h>intmain()intm,n,k;for(m=1;m<=9;m+)for(n=0;n<=9;n+)for(k=0;k<=9;k+)if(m*m*m+n*n*n+k*k*k=m*100+n*10+k)printf("%5d",m*100+n*10+k);printf("n");return0;22. 输出200到300之间满足如下条件的数
19、,即各位数字之和为12,数字之积为42.【参考程序】#include<stdio.h>intmain()intm,n;for(m=0;m<=9;m+)for(n=0;n<=9;n+)if(m+n=10&&m*n=21)printf("%5d",200+m*10+n);printf("n");return0;23. 编程将一个正整数进行质因数分解,例如输入90,须在屏幕上打印出90=2*3*3*5【参考程序】#include<stdio.h>intmain()intm,n;scanf("%d&q
20、uot;,&m);printf("%d=",m);n=2;while(m!=1)while(m%n=0)printf("%d",n);if(m!=n)printf("*");m/=n;n+;printf("n");return0;24. 输入一行字符,分别统计其中英文字母、空格、数字及其他字符的个数。【参考程序】#include<stdio.h>intmain()charch;intletter,space,digit,other;letter=space=digit=other=0;print
21、f("inputacharline:");ch=getchar();while(ch!='n')if(ch>='a'&&ch<='z'|ch>='A'&&ch<='Z')letter+;elseif(ch>='0'&&ch<='9')digit+;elseif(ch='')space+;elseother+;ch=getchar();printf("%d:
22、%d:%d:%dn",letter,digit,space,other);return0;25. 编程输出1000以内的全部完数。所谓完数,是指该数恰好等于他的全部真因子的和。如6=1+2+3【参考程序】#include<stdio.h>intmain()intm,i,t;for(m=2;m<=1000;m+)t=1;for(i=2;i*i<=m;i+)if(m%i=0)t+=i;if(i*i!=m)t+=m/i;if(t=m)printf("%dn",m);return0;26. 从键盘输入10个整数,求这些整数的总和及平均值,并统计不低
23、于平均值的元素个数。【参考程序】#include<stdio.h>#defineN5intmain()intaN,i,cnt=0;floataver;printf("请输入%d个整数:",N);aver=0.0;for(i=0;i<N;i+)scanf("%d",&ai);aver+=ai;for(i=0;i<N;i+)if(ai>=aver/N)cnt+;printf("这d个整数的和是.0f,平均值是.2fn",N,aver,aver/10);printf("不低于平均值的数有%d个
24、n",cnt);return0;27. 设有存放于数组中一组整数,现从键盘输入一个整数,在数组中查找该数,如果数组中含有该数,则输出其全部出现位置,否则输出“*不存在”,*代表该数值。【参考程序】#include<stdio.h>#defineN10intmain()intaN=16,35,48,29,56,43,93,64,90,48;intn,sgn,i;printf("请输入待查找的整数:");scanf("%d",&n);sgn=0;for(i=0;i<N;i+)if(ai=n)sgn=1;printf(&qu
25、ot;%d在数组中的%d位置出现.n",n,i+1);if(sgn=0)printf("%d不存在n",n);return0;28. 设有一存在有10个随机数的数组,请编程找出其中的最大数及其在数组中的位置。【参考程序】#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN10intmain()intaN,i,k;srand(time(NULL);for(i=0;i<N;i+)ai=rand();printf("%6d",ai);k=0;f
26、or(i=1;i<N;i+)if(ai>ak)k=i;printf("n最大值是%d,它是数组的第d个数n",ak,k+1);return0;29. 现有一未排序的整型数组,要求用选择法将该数组按由大到小的顺序排序。【参考程序】#include<stdio.h>#defineN10intmain()intaN,i,k,j,t;printf("请输入%d个整数:",N);for(i=0;i<N;i+)scanf("%d",&ai);for(j=0;j<N-1;j+)k=j;for(i=j+1;
27、i<N;i+)if(ai>ak)k=i;t=aj;aj=ak;ak=t;printf("排序后的数组:n");for(i=0;i<N;i+)printf("%5d",ai);printf("n");return0;30. 现有一数组,其元素已按由大到小的顺序排列,现从键盘输入一个数,插入到该数组中,要求插入后的数组元素依然由大到小排列。【参考程序】#include<stdio.h>#defineN10intmain()intaN+1=98,96,87,78,72,64,56,51,43,36;intn,i
28、;printf("插入前的数组:n");for(i=0;i<N;i+)printf("%5d",ai);printf("n");printf("请输入待插入的整数:");scanf("%d",&n);for(i=N-1;i>=0;i-)if(ai<n)ai+1=ai;elsebreak;ai+1=n;printf("插入后的数组:n");for(i=0;i<=N;i+)printf("%5d",ai);printf(&quo
29、t;n");return0;31. 设有存放于一维数组中一组整数,且已按由小到大顺序排序,现从键盘输入一个整数,在数组中查找该数,如果数组中含有该数,则输出该数的出现位置,否则输出“*不存在”,*代表该数值。【参考程序】#include<stdio.h>#defineN10intmain()intaN=93,90,64,56,50,48,43,35,29,16;intn,sgn,top,bott,mid;printf("请输入待查找的整数:");scanf("%d",&n);sgn=0;top=0;bott=N-1;whil
30、e(top<=bott)mid=(top+bott)/2;if(amid=n)sgn=1;break;elseif(amid>n)top=mid+1;elsebott=mid-1;if(sgn=0)printf("%d不存在n",n);elseprintf("%d在第%d个数位置被发现.n",n,mid+1);return0;32. 按如下格式打印杨辉三角形,具体行数由键盘输入。1111211331464151010【参考程序】#include<stdio.h>#defineN20intmain()intyangNN,n,i,j;
31、printf("请输入要打印的的行数:");scanf("%d",&n);for(i=0;i<n;i+)yangi0=yangii=1;for(i=2;i<n;i+)for(j=1;j<i;j+)yangij=yangi-1j+yangi-1j-1;for(i=0;i<n;i+)for(j=0;j<n-i-1;j+)printf("%3c",'');for(j=0;j<=i;j+)printf("%6d",yangij);printf("n&qu
32、ot;);return0;33. 编程实现从一字符串中删除指定的字符。【参考程序】#include<stdio.h>#defineN80intmain()charstrN,ch,i,j=0;printf("请输入一个字符串:");gets(str);printf("请输入待删除的字符:");ch=getchar();for(i=0;stri!='0'i+)if(stri!=ch)strj+=stri;strj='0'printf("删除指定字符后的字符串:%sn",str);return0;
33、34. 现有若干字符串存放于一个二维数组中,每行存放一个字符串,现要求用冒泡法将这些字符串按由小到大排序,即按字符母顺排序。【参考程序】#include<stdio.h>#include<string.h>#defineN80#defineM6intmain()charstrMN,tempN,i,j;printf("请输入%d个字符串:",M);for(i=0;i<M;i+)gets(stri);for(i=0;i<M-1;i+)for(j=0;j<M-i-1;j+)if(strcmp(strj,strj+1)>0)strcp
34、y(temp,strj);strcpy(strj,strj+1);strcpy(strj+1,temp);printf("排序后的字符串:n");for(i=0;i<M;i+)puts(stri);return0;35. 现有一个英文句子,请编程统计其中的单词数,已知单词之间用空格分隔(空格数大于等于1),不考虑单词是否为合法英语单词,特别提醒,第一单词之前也可能有若干空格。【参考程序】#include<stdio.h>#defineN80intmain()charstrN,i,cnt;printf("请输入一个英文句子,以回车结束:"
35、);gets(str);if(str0=''|str0='0')cnt=0;elsecnt=1;for(i=0;stri!='0'i+)if(stri=''&&stri+1!=''&&stri+1!='0')cnt+;printf("该句子一共含有%d个单词n",cnt);return0;36. 现有一实型一维数组,请编程分别找出其中的最大值和最小值,并将最大值与数组的最后一个元素交换,最小值与数组的第一个元素交换。【参考程序】#include&l
36、t;stdio.h>#defineN10intmain()floataN,t;intma,mi,i;printf("请输入%d个实数:");for(i=0;i<N;i+)scanf("%f",&ai);ma=mi=0;for(i=1;i<N;i+)if(ai>ama)ma=i;if(ai<ami)mi=i;t=a0;a0=ami;ami=t;if(ma=0)ma=mi;t=ama;ama=aN-1;aN-1=t;printf("处理后的数组:");for(i=0;i<N;i+)printf(
37、"%6.2f",ai);printf("n");return0;37. 编程求一方阵的两条对角线元素和(包括主副对角线)【参考程序】#include<stdio.h>#defineN5intmain()intaNN,i,j,s=0;printf("请输入一个方阵:n");for(i=0;i<N;i+)printf("请输入方阵的第%d行元素:",i+1);for(j=0;j<N;j+)scanf("%d",&aij);for(i=0;i<N;i+)s+=ai
38、i;for(i=0;i<N;i+)if(i!=N-i-1)s+=aiN-i-1;printf("该方阵的对角元素的和为%dn",s);return0;2个38. 编程将一个一维数组中的元素颠倒次序,即第1元素与最后一个元素交换位置,第元素倒数第2个元素交换位置,依此类推。【参考程序】#include<stdio.h>#defineN10intmain()intaN,i,t;printf("请输入%d个整数:",N);for(i=0;i<N;i+)scanf("%d",&ai);for(i=0;i<
39、N/2;i+)t=ai;ai=aN-i-1;aN-i-1=t;printf("颠倒后的数组:");for(i=0;i<N;i+)printf("%5d",ai);printf("n");return0;39. 用筛法求100以内的全部素数。【参考程序】#include<stdio.h>#defineN100intmain()intaN,i,j;for(i=0;i<N;i+)ai=i+1;a0=0;for(i=0;i*i<=N;i+)if(ai!=0)for(j=i+1;j<N;j+)if(aj%ai
40、=0)aj=0;printf("%d以内的全部素数:n",N);for(i=0;i<N;i+)if(ai!=0)printf("%5d",ai);printf("n");return0;40. 对于从键盘输入的英文句子,将其中的空格用替换。*【参考程序】#include<stdio.h>#defineN81intmain()charstrN,i;printf("请输入一个英文句子:");gets(str);for(i=0;stri!='0'i+)if(stri=''
41、)stri='*'printf("替换后的字符串:");puts(str);return0;41. 请写一个函数用于统计在一个一维数组中出现指定数值的次数,要求一维数组及指定数值都是由主函数通过参数传递。【参考程序】#include<stdio.h>#defineN10intmyseek(inta,intlen,intn)inti,cnt=0;for(i=0;i<len;i+)if(ai=n)cnt+;returncnt;intmain()intnumN,n,i,count;printf("请输入%d个整数:",N);f
42、or(i=0;i<N;i+)scanf("%d",&numi);printf("请输入待统计其出现次数的数:");scanf("%d",&n);count=myseek(num,N,n);printf("%d一共出现%d次.n",n,count);return0;42. 编写一个函数,用于判断给定的整数是否为素数,如是则返回1,否则返回0,并写一主函数调用上述函数,输出3100之间的所有素数。【参考程序】#include<stdio.h>intisprime(intn)inti;f
43、or(i=2;i*i<=n;i+)if(n%i=0)return0;return1;intmain()inti;for(i=3;i<100;i+=2)if(isprime(i)=1)printf("%5d",i);printf("n");return0;43. 编写了递归函数求Fibonacci数列的第n项,其中n由参数传递,并在主函数中调用该函数输出数列的前20项。【参考程序】#include<stdio.h>longfib(intn)if(n=1|n=2)return1;returnfib(n-1)+fib(n-2);intm
44、ain()inti;for(i=1;i<21;i+)printf("%l8d",fib(i);printf("n");return0;44. 编写一函数,实现用冒泡法将数组元素按由大到小排列,其中排序的数组及参与排序的元素个数由参数传递。【参考程序】#include<stdio.h>#defineN10voidbubble_sort(intarr,intn)inti,j,t;for(i=0;i<n-1;i+)for(j=0;j<n-i-1;j+)if(arrj<arrj+1)t=arrj;arrj=arrj+1;arr
45、j+1=t;intmain()intaN,i;printf("请输入%d个整数:",N);for(i=0;i<N;i+)scanf("%d",&ai);bubble_sort(a,N);printf("排序后的数组:n");for(i=0;i<N;i+)printf("%5d",ai);printf("n");return0;45. 编写一函数,实现用选择法将数组元素按由小到大排列,其中排序的数组及参与排序的元素个数由参数传递。【参考程序】#include<stdio.
46、h>#defineN10voidselect_sort(intarr,intn)inti,j,t,k;for(i=0;i<n-1;i+)k=i;for(j=i+1;j<n;j+)if(arrj<arrk)k=j;t=arrk;arrk=arri;arri=t;intmain()intaN,i;printf("请输入%d个整数:",N);for(i=0;i<N;i+)scanf("%d",&ai);select_sort(a,N);printf("排序后的数组:n");for(i=0;i<N;i+)printf("%5d",ai);printf("n");return0;46. 编写一个函数,其原型为voiddelete_char(charstr,charch),功能是从参数str指定的字符串删除由ch指定的字符。【参考程序】#include<stdio.h>#defin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北师大版初中数学七年级上有理数混合运算教案
- 2025消防安全考试题目和答案
- 2026年两融风险测评题库及答案
- 地砖干硬性砂浆铺贴施工工艺
- 2026年供应链管理专业考试试题及答案
- G1工业锅炉司炉证考试题库(含答案)
- 护理安宁疗护恶心呕吐管理查房
- 安全通道搭设专项方案
- (正式版)DB36∕T 859-2015 《公路隧道LED照明施工验收规范》
- 2026年苏教版高二第二学期政治期末同步检测试卷(附答案可下载)
- 2026年广东省汕头市潮南区中考一模英语(含详细答案解析)
- 建筑防水维修用快速堵漏材料验收方案
- 2026年安全生产月:非煤矿山爆破作业安全管理课件
- 13 任何可能的紧急情况的处理措施、预案以及抵抗风险包括工程施工过程中可能遇到
- 中国成人患者肠外肠内营养临床应用指南(2026版)
- 2025年交通运输概论考试试题及答案
- 青岛科技大学2026年综合评价招生《笔试 + 面试》模拟试题及参考答案
- 五下道法 全册必背120个考点26春
- 幼儿园把握语言领域发展目标实施科学全面语言教育讲座课件
- 创业培训GYB课件实际用
- DL∕T 2045-2019 中性点不接地系统铁磁谐振防治技术导则
评论
0/150
提交评论