C语言程序设计部分习题及例题参考程序

上传人:汽*** 文档编号:569365393 上传时间:2024-07-29 格式:PDF 页数:25 大小:795.68KB
返回 下载 相关 举报
C语言程序设计部分习题及例题参考程序_第1页
第1页 / 共25页
C语言程序设计部分习题及例题参考程序_第2页
第2页 / 共25页
C语言程序设计部分习题及例题参考程序_第3页
第3页 / 共25页
C语言程序设计部分习题及例题参考程序_第4页
第4页 / 共25页
C语言程序设计部分习题及例题参考程序_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《C语言程序设计部分习题及例题参考程序》由会员分享,可在线阅读,更多相关《C语言程序设计部分习题及例题参考程序(25页珍藏版)》请在金锄头文库上搜索。

1、C 语言程序设计部分例题及课后习题参考程序 1.编程计算如下分段函数: 参考程序 include int main() float x,y; printf(”input x:); scanf(”%f”,x); if(x=10) y=2x+3; else if(x=0) y=4*x; else y=5x6; printf(y=%.2fn”,y); 2 编程将从键盘输入的百分制成绩转换为等级分, 转换方法如下: 90 以上(大于或等于 90,下同)为 A,80 分以上为 B,70 分以上为 C,60 分以上为 D,60 分以下,即低于 60 分为 E。 参考程序 include stdio.h i

2、nt main() float score; char rank; printf(”input a score:); scanf(”f”,&score); if(score100|score0) printf(invalid score inputn); exit(-1); switch(int)score/10) case 10: case 9: rank=A;break; case 8: rank=B;break; case 7: rank=C;break; case 6: rank=D;break; default: rank=E; printf(.2f:cn”,score,rank)

3、; return 0; 3。编程判断以从键盘输入的三个数为边长,是否能构成三角形. 参考程序 include stdio.h int main() float a,b,c; printf(input a,b,c:); scanf(%ff%f,a,&b,&c); if(a0 & b0 c0 & a+bc & a+cb b+ca) printf(”(.2f,%。2f,%.2f)能围成三角形n,a,b,c); else printf(%。2f,%2。2f,。2f)不能围成三角形n” ,a,b,c); 4。编程实现将从键盘输入的一个正整数逆序输出,如输入 1234,输出 3421 参考程序 #incl

4、ude int main() int n; printf(input a number:); scanf(d”,&n); do printf(%d,n%10); n/=10; while(n!=0); return 0; 5。输入一个 110 范围内的整数,计算该数的阶乘。 参考程序 include stdio。h int main() int n,s=1,i; printf(input a number(110):”) ; scanf(%d,n); for(i=2;i=n;i+) s=i; printf(”d!=dn”,n,s) ; return 0; 6.从键盘输入的一行字符,统计其含有多

5、少个字符。 【参考程序】 #include stdio。h int main() char ch; int cnt=0; printf(input a char line:”); ch=getchar(); while(ch!=n) cnt+; ch=getchar(); printf(”%dn”,cnt); return 0; 7。打印乘法口诀表. 【参考程序】 #include int main() int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(d*%d=3d,j,i,ij); printf(”n”); return 0; 8。在屏幕上打印

6、如下规律的图形,具体行数由键盘输入。 * * * * * * 【参考程序】 include stdio。h int main() int i,j,n; printf(”请输入打印图形的行数: ”); scanf(d”,&n); for(i=1;i=n;i+) for(j=1;j=ni;j+) printf( ) ; for(j=1;j=2*i-1;j+) printf(”) ; printf(”n”); return 0; 9.从键盘输入一个正整数,编程判断其是否为素数(质数). 【参考程序】 #include int main() int i,n; printf(请输入一个正整数:) ; s

7、canf(d,n); for(i=2;ii=n;i+) if(ni=0) break; if(i*i=n|n=1) printf(”d 不是一个素数。n,n) ; else printf(%d 是一个素数。n,n); return 0; 10.从键盘输入 100 个整数,求其中正整数的和. 【参考程序】 #include stdio.h define N 100 int main() int n,s=0,i; for(i=1;i=N;i+) printf(”请输入第d 个整数:,i) ; scanf(d,n) ; if(n0) continue; s+=n; printf(%dn,s); re

8、turn 0; 11。从键盘输入 1000 个学生某门课程的百分制成绩,分别统计其中 80 分以上(即大于或等于 80) 、60 分以上及低于 60 分的人数. 【参考程序】 include 100|score=60) n+; else k+; printf(%d:%d:dn”,m,n,k); return 0; 12.运用如下公式计算圆周率的近似值,当最后一项的绝对值小于 106时,停止计算。 【参考程序】 #include int main() int w,m,c; for(m=0;m=15;m+) for(w=0;w=22;w+) c=45-mw; if(m*3+w2+c.5=45) p

9、rintf(”d:%d:%dn,m,w,c); return 0; 14.从键盘输入两个正整数到 m、n 中,求它们的最大公约数和最小公倍数. 【参考程序】 #include int main() int m,n,m1,n1,r; printf(”请输入两个正整数: ”); 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,m1n1/n); return 0; 14。编程计算如下式子的值,直到 n

10、等于 100。 【参考程序】 #include stdio。h int main() double s=0。0,t=1.0; int sgn=1; while(t=100) s+=sgn/t; sgn=-sgn; t+=1; printf(s=%。6lfn”,s); return 0; 15。计算如下规律式子的值。其中 a 与 n 的值都是由键盘输入确定。如当 a 为 2,n 为 3 时,该式子表示的含义为 2+22+222,故结果为 246。 【参考程序】 include int main() int a,n,s=0,t; printf(input a,n:); scanf(dd,a,&n)

11、 ; t=a; while(n0) s+=t; t=t*10+a; n-; printf(dn,s) ; return 0; 16。计算如下式子的值。 【参考程序】 #include int main() int n; float s=0。0; for(n=2;n=100;n+=2) s+=(float) (n+1)/n; printf(”%.6fn,s); return 0; 17.如数列第 1 项为 2,此后各项的值均为其前一项的 2 倍再加 3,编程计算该数列的前 10 项之和。 【参考程序】 include stdio.h int main() int n,s=0,i; n=2; fo

12、r(i=1;i=3;i+) s+=n; n=n2+3; printf(dn”,s); return 0; 18.现要求将 1 角钱换成 1 分、2 分或 5 分的硬币,请问有多少种换法,并输出每一种换法. 【参考程序】 #include stdio.h int main() int one,two,five,cnt=0; for(five=0;five=2;five+) for(two=0;two=0) printf(d:%d:dn”,one,two,five); cnt+; printf(”一共有%d 种换法n”,cnt); return 0; 20.编程统计并输出 200 到 300 以内

13、的全部素数。 【参考程序】 include stdio。h int main() int m,i,k=0; for(m=201;m300;m+=2) for(i=3;ii=m;i+=2) if(mi=0) break; if(i*im) k+; printf(”8d,m); if(k%5=0) printf(n); printf(”n200 到 300 之间一共有%d 个素数n,k); return 0; 21.打印所有“水仙花数” ,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数自身。如 153 【参考程序】 include int main() int m,n,k; for(m

14、=1;m=9;m+) for(n=0;n=9;n+) for(k=0;k=9;k+) if(m*m*m+nnn+k*kk=m100+n10+k) printf(5d”,m100+n*10+k); printf(”n); return 0; 22.输出 200 到 300 之间满足如下条件的数,即各位数字之和为 12,数字之积为 42。 【参考程序】 include int main() int m,n; scanf(”d”,&m); printf(”%d=”,m); n=2; while(m!=1) while(m%n=0) printf(d,n); if(m!=n) printf() ; m

15、/=n; n+; printf(”n); return 0; 24.输入一行字符,分别统计其中英文字母、空格、数字及其他字符的个数。 【参考程序】 #include stdio。h int main() char ch; int letter,space,digit,other; letter=space=digit=other=0; printf(”input a char line:) ; ch=getchar() ; while(ch!=n) if(ch=ach=0ch=9) digit+; else if(ch= ) space+; else other+; ch=getchar();

16、 printf(d:d:%d:dn,letter,digit,space,other); return 0; 25.编程输出 1000 以内的全部完数.所谓完数,是指该数恰好等于他的全部真因子的和.如6=1+2+3 【参考程序】 #include stdio.h int main() int m,i,t; for(m=2;m=1000;m+) t=1; for(i=2;i*i=m;i+) if(mi=0) t+=i; if(i*i!=m) t+=m/i; if(t=m) printf(”dn,m); return 0; 26。从键盘输入 10 个整数,求这些整数的总和及平均值,并统计不低于平均

17、值的元素个数。 【参考程序】 #include stdio.h #define N 5 int main() int aN,i,cnt=0; float aver; printf(请输入%d 个整数:,N); aver=0。0; for(i=0;iN;i+) scanf(%d”,&ai); aver+=ai; for(i=0;iN;i+) if(ai =aver/N) cnt+; printf(这%d 个整数的和是.0f,平均值是.2fn,N,aver,aver/10) ; printf(”不低于平均值的数有%d 个n” ,cnt); return 0; 27.设有存放于数组中一组整数,现从键

18、盘输入一个整数,在数组中查找该数,如果数组中含有该数,则输出其全部出现位置,否则输出“不存在”,*代表该数值。 【参考程序】 include stdio.h #define N 10 int main() int aN=16,35,48,29,56,43,93,64,90,48 ; int n,sgn,i; printf(”请输入待查找的整数: ”); scanf(d”,&n); sgn=0; for(i=0;iN;i+) if(ai=n) sgn=1; printf(”%d 在数组中的%d 位置出现。n”,n,i+1); if(sgn=0) printf(”d 不存在n,n); return

19、 0; 28.设有一存在有 10 个随机数的数组,请编程找出其中的最大数及其在数组中的位置。 【参考程序】 #include stdio。h include stdlib。h #include define N 10 int main() int aN,i,k; srand(time(NULL)); for(i=0;iN;i+) ai=rand(); printf(”%6d”,ai); k=0; for(i=1;i define N 10 int main() int aN,i,k,j,t; printf(”请输入d 个整数: ” ,N); for(i=0;iN;i+) scanf(”%d”,

20、ai); for(j=0;jN-1;j+) k=j; for(i=j+1;iN;i+) if(ai ak) k=i; t=aj;aj=ak;ak=t; printf(”排序后的数组:n” ) ; for(i=0;iN;i+) printf(5d,ai) ; printf(n”); return 0; 30.现有一数组,其元素已按由大到小的顺序排列,现从键盘输入一个数,插入到该数组中,要求插入后的数组元素依然由大到小排列. 【参考程序】 include stdio.h define N 10 int main() int aN+1=98,96,87,78,72,64,56,51,43,36; i

21、nt n,i; printf(插入前的数组:n) ; for(i=0;iN;i+) printf(”%5d”,ai); printf(”n”); printf(请输入待插入的整数:); scanf(”d,&n) ; for(i=N1;i=0;i-) if(ain) ai+1=ai; else break; ai+1=n; printf(”插入后的数组:n); for(i=0;i=N;i+) printf(”5d,ai); printf(”n”); return 0; 31。 设有存放于一维数组中一组整数,且已按由小到大顺序排序,现从键盘输入一个整数,在数组中查找该数,如果数组中含有该数,则输出

22、该数的出现位置,否则输出“不存在,*代表该数值。 【参考程序】 include #define N 20 int main() int yangNN,n,i,j; printf(请输入要打印的的行数:); scanf(”d,n); for(i=0;in;i+) yangi0=yangii=1; for(i=2;in;i+) for(j=1;ji;j+) yangij=yangi1j+yangi-1 j-1; for(i=0;in;i+) for(j=0;jn-i-1;j+) printf(”3c, ); for(j=0;j=i;j+) printf(%6d”,yangij); printf(n

23、”); return 0; 33.编程实现从一字符串中删除指定的字符。 【参考程序】 include stdio。h define N 80 int main() char strN,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) ; return 0; 34.现有若干字符串存放于一个二维数组中,每行存放一个字符串,现要

24、求用冒泡法将这些字符串按由小到大排序,即按字符母顺排序。 【参考程序】 include #include string。h #define N 80 #define M 6 int main() char strM N,tempN,i,j; printf(请输入%d 个字符串:”,M); for(i=0;iM;i+) gets(stri); for(i=0;iM1;i+) for(j=0;jM-i-1;j+) if(strcmp(strj,strj+1 ) 0) strcpy(temp,strj); strcpy(strj,strj+1 ); strcpy(strj+1 ,temp); pri

25、ntf(排序后的字符串:n”); for(i=0;iM;i+) puts(stri ) ; return 0; 35.现有一个英文句子,请编程统计其中的单词数,已知单词之间用空格分隔 (空格数大于等于1),不考虑单词是否为合法英语单词,特别提醒,第一单词之前也可能有若干空格。 【参考程序】 include stdio.h define N 80 int main() char strN ,i,cnt; printf(请输入一个英文句子,以回车结束:); gets(str); if(str0= str0=0) cnt=0; else cnt=1; for(i=0;stri !=0;i+) if(

26、stri= stri+1!= &stri+1!=0) cnt+; printf(该句子一共含有%d 个单词n” ,cnt); return 0; 36。现有一实型一维数组,请编程分别找出其中的最大值和最小值,并将最大值与数组的最后一个元素交换,最小值与数组的第一个元素交换. 【参考程序】 include stdio。h #define N 10 int main() float aN,t; int ma,mi,i; printf(”请输入%d 个实数:); for(i=0;iama) ma=i; if(ai ami ) mi=i; t=a0; a0=ami; ami=t; if(ma=0) m

27、a=mi; t=ama ; ama=aN1 ; aN-1=t; printf(”处理后的数组:) ; for(i=0;iN;i+) printf(”6。2f”,ai); printf(n) ; return 0; 37。编程求一方阵的两条对角线元素和(包括主副对角线) 【参考程序】 #include stdio。h define N 5 int main() int aN N,i,j,s=0; printf(请输入一个方阵:n” ); for(i=0;iN;i+) printf(”请输入方阵的第%d 行元素:,i+1); for(j=0;jN;j+) scanf(”%d,&ai j); for

28、(i=0;iN;i+) s+=aii; for(i=0;iN;i+) if(i!=N-i1) s+=ai Ni-1; printf(该方阵的对角元素的和为dn,s); return 0; 38.编程将一个一维数组中的元素颠倒次序,即第 1 元素与最后一个元素交换位置,第 2 个元素倒数第 2 个元素交换位置,,依此类推。 【参考程序】 include stdio。h define N 10 int main() int aN ,i,t; printf(”请输入%d 个整数:,N); for(i=0;iN;i+) scanf(d,ai); for(i=0;iN/2;i+) t=ai; ai=aN

29、-i-1; aN-i1=t; printf(颠倒后的数组:) ; for(i=0;iN;i+) printf(%5d”,ai ) ; printf(”n); return 0; 39.用筛法求 100 以内的全部素数。 【参考程序】 #include #define N 100 int main() int aN,i,j; for(i=0;iN;i+) ai=i+1; a0=0; for(i=0;i*i=N;i+) if(ai!=0) for(j=i+1;jN;j+) if(aj%ai=0) aj=0; printf(d 以内的全部素数:n”,N); for(i=0;iN;i+) if(ai

30、!=0) printf(”5d,ai); printf(”n); return 0; 40.对于从键盘输入的英文句子,将其中的空格用替换。 【参考程序】 #include stdio.h #define N 81 int main() char strN,i; printf(”请输入一个英文句子:”); gets(str); for(i=0;stri!=0;i+) if(stri= ) stri=*; printf(替换后的字符串:) ; puts(str); return 0; 41。 请写一个函数用于统计在一个一维数组中出现指定数值的次数, 要求一维数组及指定数值都是由主函数通过参数传递.

31、 【参考程序】 include stdio。h #define N 10 int myseek(int a,int len,int n) int i,cnt=0; for(i=0;ilen;i+) if(ai=n) cnt+; return cnt; int main() int numN ,n,i,count; printf(”请输入d 个整数:,N); for(i=0;iN;i+) scanf(d”,numi); printf(请输入待统计其出现次数的数: ” ); scanf(d”,n); count=myseek(num,N,n); printf(d 一共出现%d 次。n” ,n,co

32、unt); return 0; 42。编写一个函数,用于判断给定的整数是否为素数,如是则返回 1,否则返回 0,并写一主函数调用上述函数,输出 3100 之间的所有素数。 【参考程序】 include int isprime(int n) int i; for(i=2;i*i=n;i+) if(ni=0) return 0; return 1; int main() int i; for(i=3;i100;i+=2) if(isprime(i)=1) printf(%5d,i) ; printf(”n”); return 0; 43.编写了递归函数求 Fibonacci 数列的第 n 项, 其

33、中 n 由参数传递,并在主函数中调用该函数输出数列的前 20 项. 【参考程序】 include stdio.h long fib(int n) if(n=1|n=2) return 1; return fib(n-1)+fib(n2); int main() int i; for(i=1;i #define N 10 void bubble_sort(int arr ,int n) int i,j,t; for(i=0;in1;i+) for(j=0;jni1;j+) if(arrjarrj+1 ) t=arrj;arrj=arrj+1 ;arrj+1=t; int main() int a

34、N,i; printf(”请输入%d 个整数:”,N) ; for(i=0;iN;i+) scanf(%d,ai); bubble_sort(a,N) ; printf(排序后的数组:n); for(i=0;iN;i+) printf(”5d”,ai); printf(n); return 0; 45.编写一函数,实现用选择法将数组元素按由小到大排列,其中排序的数组及参与排序的元素个数由参数传递。 【参考程序】 include stdio。h define N 10 void select_sort(int arr ,int n) int i,j,t,k; for(i=0;in1;i+) k=

35、i; for(j=i+1;j #define N 81 void delete_char(char str ,char ch) int i,j=0; for(i=0;stri!=0;i+) if(stri!=ch) strj+=stri; strj=0; int main() char sN,ch; printf(请输入一个字符串:) ; gets(s) ; printf(”请输入待删除字符: ”); ch=getchar(); delete_char(s,ch) ; printf(删除指定字符后的字符串:%sn,s); return 0; 47. 输入 3 个数,判断能否构成三角形 【参考程

36、序】 #include int main() float a,b,c; scanf(f%f%f,&a,b,c); if(a0|b0c0) printf(边长为f,%f,f 的三条边不能构三角形。n”,a,b,c); return -1; if(a+bca+cb&b+ca) printf(”边长为%f,f,%f 的三条边能构三角形。n”,a,b,c); else printf(边长为%f,%f,f 的三条边不能构三角形。n,a,b,c); return 0; 48. 从键盘输入若干整数(数量不定),求其中所有非负数的各,直到和大于 1000,程序结束。 【参考程序】 #include stdio

37、。h int main() int n,s; s=0; do printf(请输入一个整数:); scanf(d”,n) ; if(n0) s+=n; printf(s=%dn”,s); while(s=1000); return 0; 49。 编程求某个整数的位数以及各数位之和. 【参考程序】 include int main() int count, in,s=0; scanf(”%d”, &in) ; printf(d 是一个” , in); count =0; if(in #define N 81 int rec_strlen(char str) if(str0=0) return 0; return rec_strlen(str1)+1; int non_rec_strlen(char str) int i; for(i=0;stri !=0;i+); return i; int main() char sN; printf(请输入一个字符串:) ; gets(s); printf(”递归函数:该字符串长度为dn,rec_strlen(s)); printf(”非递归函数:该字符串长度为dn” ,non_rec_strlen(s) ); return 0;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号