40个C语言的基础编程题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C语言基础编程题【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....2.程序源代码:main(){longf1,f2;inti;f1=f2=1;for(i=1;i=20;i++){printf(%12ld%12ld,f1,f2);if(i%2==0)printf(\n);/*控制输出,每行四个*/f1=f1+f2;/*前两个月加起来赋值给第三个月*/f2=f1+f2;/*前两个月加起来赋值给第三个月*/}}========================================【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。2.程序源代码:#includemath.hmain(){intm,i,k,h=0,leap=1;printf(\n);for(m=101;m=200;m++){k=sqrt(m+1);for(i=2;i=k;i++)if(m%i==0){leap=0;break;}if(leap){printf(%-4d,m);h++;if(h%10==0)printf(\n);}leap=1;}printf(\nThetotalis%d,h);}========================================【程序3】题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码:main(){inti,j,k,n;printf('waterflower'numberis:);for(n=100;n1000;n++){i=n/100;/*分解出百位*/j=n/10%10;/*分解出十位*/k=n%10;/*分解出个位*/if(i*100+j*10+k==i*i*i+j*j*j+k*k*k){printf(%-5d,n);}}printf(\n);}========================================【程序4】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。2.程序源代码:/*zhengintisdividedyinshu*/main(){intn,i;printf(\npleaseinputanumber:\n);scanf(%d,&n);printf(%d=,n);for(i=2;i=n;i++){while(n!=i){if(n%i==0){printf(%d*,i);n=n/i;}elsebreak;}}printf(%d,n);}========================================【程序5】题目:利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。1.程序分析:(ab)?a:b这是条件运算符的基本例子。2.程序源代码:main(){intscore;chargrade;printf(pleaseinputascore\n);scanf(%d,&score);grade=score=90?'A':(score=60?'B':'C');printf(%dbelongsto%c,score,grade);}========================================【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。2.程序源代码:第一种做法:#includestdio.hvoidmain(){intm,n,i;printf(请输入两个正整数:);scanf(%d%d,&m,&n);if(mn)i=m;elsei=n;while((m%i!=0)||(n%i!=0))i--;printf(%d和%d的最大公约为:%d\n,m,n,i);}//第二种做法:#includestdio.hvoidmain(){intm,n,r;printf(请输入两个正整数:);scanf(%d%d,&m,&n);if(mn){r=m;m=n;n=r;}r=%n;while(r!=0){m=n;n=r;r=m%n;}printf(最大公约数为:%d\n,n);}========================================【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。1.程序分析:利用while语句,条件为输入的字符不为'\n'.2.程序源代码:#includestdio.hmain(){charc;intletters=0,space=0,digit=0,others=0;printf(pleaseinputsomecharacters\n);while((c=getchar())!='\n'){if(c='a'&&c='z'||c='A'&&c='Z')letters++;elseif(c=='')space++;elseif(c='0'&&c='9')digit++;elseothers++;}printf(allinall:char=%dspace=%ddigit=%dothers=%d\n,letters,space,digit,others);}========================================【程序8】题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。参照P214例21.程序分析:关键是计算出每一项的值。2.程序源代码:main(){inta,n,count=1;longintsn=0,tn=0;printf(pleaseinputaandn\n);scanf(%d,%d,&a,&n);printf(a=%d,n=%d\n,a,n);while(count=n){tn=tn+a;sn=sn+tn;a=a*10;++count;}printf(a+aa+...=%ld\n,sn);}========================================【程序9】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?1.程序分析:见下面注释2.程序源代码:main(){floatsn=100.0,hn=sn/2;intn;for(n=2;n=10;n++){sn=sn+2*hn;/*第n次落地时共经过的米数*/hn=hn/2;/*第n次反跳高度*/}printf(thetotalofroadis%f\n,sn);printf(thetenthis%fmeter\n,hn);}#includestdio.hmain(){floath=100,s=100;inti=1;while(i=10){h=h/2;printf(第%2d次反弹的高度:%12.9f,第%2d次落地时经过的距离:%12.8f\n,i,h,i,s);s=s+2*h;i++;}}========================================【程序10】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。2.程序源代码:main(){inti,j,k;printf(\n);for(i=1;i5;i++)/*以下为三重循环*/for(j=1;j5;j++)for(k=1;k5;k++){if(i!=k&&i!=j&&j!=k)/*确保i、j、k三位互不相同*/printf(%d,%d,%d\n,i,j,k);}}========================================【程序11】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:2.程序源代码:#includemath.hmain(){longinti,x,y,z;for(i=1;i100000;i++){x=sqrt(i+100);/*x为加上100后开方后的结果*/y=sqrt(i+268);/*y为再加上168后开方后的结果*/if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/printf(\n%ld\n,i);}}========================================【程序12】题目:输入三个整数x,y,z,请把这三个数由小到大输出。1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果xy则将x与y的值进行交换,然后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使x最小。2.程序源代码:main(){intx,y,z,t;scanf(%d%d%d,&x,&y,&z);if(xy){t=x;x=y;y=t;}/*交换x,y的值*/if(xz){t=z;z=x;x=t;}/*交换x,z的值*/if(yz){t=y;y=z;z=t;}/*交换z,y的值*/printf(smalltobig:%d%d%d\n,x,y,z);}========================================【程序13】题目:用*号输出字母C的图案。1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。2.程序源代码:#includestdio.hmain(){printf(HelloC-world!\n);printf(****\n);printf(*\n);printf(*\n);printf(****\n);}========================================【程序14】题目:输出9*9口诀。1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。2.程序源代码:#includestdio.hmain(){inti,j,result;printf(\n);for(i=1;i10;i++){for(j=1;j10;j++)/*如果是ji就是输出三角形的乘法表*/{result=i*j;printf(%d*%d=%-3d,i,j,result);/*-3d表示左对齐,占3位*/}printf(\n);/*每一行后换行*/}}========================================【程序15】题目:要求输出国际象棋棋盘。1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。2.程序源代码:#includestdio.hmain(){inti,j;for(i

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功