2022年C语言教程经典程序设计题 .pdf
http:/ C 语言教程经典程序设计题1、有一个函数:y= #include main() int x,y; printf(input x:); scanf(%d,&x); if(x1) y=x; else if(x10) y+2*x-1; else y=3*x-1; printf(y=%dn,y); 运行结果: input x:21 y=62 根据所输入的年份和月份,计算该月有多少天?#include main() int year,month,day; printf(input the year and month:); scanf(%d,%d,&year,&month); switch(month) case 4: case 6: case 9: case 11:day=30;break; case 2:day=(year%4=0&year%100!=0|year%400=0?29:28);break; (& 和|的优先性?) default:day=31;break; printf(the month is %d dayn,day); 运行结果:input the year and month:2006,2 the month is 28 day 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - input the year and month:2006,12 the month is 31 day 输入 4 个整数,要求按大小顺序输出。#include main() int a,b,c,d,t; printf(input a,b,c,dn:); scanf(%d%d%d%d,&a,&b,&c,&d); if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(ad) t=a;a=d;d=t; if(bc) t=b;b=c;c=t; if(bd) t=b;b=d;d=t; if(cd) t=c;c=d;d=t; printf(the result is : %d,%d,%d,%dn,a,b,c,d); 运行结果:input a,b,c,d :8 4 9 6 the result is : 9,8,6,4 所谓“水仙花数”是指一个3 位数,其各位数字的立方和等于该数本身。例如:371 是一个“水仙花数” ,371=33+73+13 #include main() int i,a,b,c,sum; sum=0; for(i=100;i=999;i+) a=i%10; b=i/10-i/100*10; (或 b=i%100/10; )c=i/100; sum=a*a*a+b*b*b+c*c*c; if(i=sum) printf(%4d ,i); 结果:153 370 371 407 . 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 编写程序实现一个专家诊断系统。假设系统库中有3 种病例:肺炎、气管炎、感冒,如果咳嗽并发烧则属肺炎;如果咳嗽但不发烧则属气管炎;流鼻涕且不咳嗽属感冒。#include main() char cough,fever,snot; int ill; printf(do you cough:n); scanf(%c,&cough); printf(do you fever:n); scanf(%c,&fever); printf(do you snot:n); scanf(%c,&snot); if(cough= y ) if(fever= y ) ill=1; else ill=2; else if(snot= y ) ill=3; else ill=0; switch(ill) case 1:printf(you get pneumonia);break; case 2:printf(you get tracheitis);break; case 3:printf(you catch a cold);break; default: printf(sorry,see other doctor); 结果:do you cough: y do you fever: y do you snot: n you get tracheitis 编写程序:打印九九乘法表。1、#include 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - main() int i,j; for(i=1;i=9;i+) for(j=1;j=9;j+) printf(%4d,i*j); printf(n); 运行结果:1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81 2、#include main() int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%-4d,j,i,i*j); printf(n); 运行结果:1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 1)编写程序:求300-360 之间素数的个数。#include #include main() int m,n,i,k; n=0; for(m=301;m360;m+=2) k=(int)sqrt(m); i=2; while(m%i!=0&i=k) i+; if(i=k+1) n=n+1; printf(The prime number is %d.,n); 运行结果:The prime number is 10. 2)编写程序:统计300-360 之间和 600-680 之间所有素数的个数。#include #include main() int m,n,i,k; n=0; for(m=301;m360&m600) continue; k=(int)sqrt(m); for(i=2;i=k;i+) if(m%i=0) break; if(i=k+1) n=n+1; printf(The prime number is %d.,n); 运行结果:The prime number is 24. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 1)求 15! 。#include main() int n; long t=1; for(n=2;n=15;n+) t=t*n; printf(%ldn,t); 运行结果: 2004310016 2)计算: 1!+3! +5!+ +99! 。#include main() int n; long t=1,sum=0; for(n=1;n100;n+) t=t*n; if(n%2=0) continue; sum=sum+t; printf(sum=%ldn,sum); 运行结果:sum=80303791 3)计算: 1=+1/2+1/3+1/4+ +1/10. #include main() int n;float s; s=1.0; for(n=10;n1;n-) s=s+(float)1/n; printf(%6.4fn,s); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 运行结果: 2.9290 4)有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13 求出这个数列的前30 项之和。#include main() int i=1; float t,x=1,y=2,m,sum=0; while(i=30) m=y/x; sum=sum+m; t=y; y=y+x; x=t; i+; printf(the result is %.2fn,sum); 运行结果: the result is 48.84 5)统计 1000!的末尾有多少个0. 提示:统计1000!中 5 的个数。#include main() int i,k,n=0; for(i=5;i=1000;i=i+5) n+; k=i/5; while(k%5=0) n+; k=k/5; printf(n=%dn,n); 运行结果: 249 1)编写程序:从键盘输入一个二进制数,输出其对应的十进制数。#include main() long sum=0,x,y,r,t=1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - printf(input the x:); scanf(%ld,&x); y=x; do r=x%10; sum=sum+r*t; t=t*2; x=x/10; while(x!=0); printf(%ld=%dn,y,sum); 运行结果:input the x:111010 111010=58 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -