C语言经典编程100例程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,358,13,21.2.程序源代码:main()(longint i;fl=f2=l;for(i=l;i=20;i+)printf(M%121d%121d,fl,f2);if(i%2=0)printf(”n”);/*控制输出,每行四个*/前两个月加起来赋值给第三个月*/f2=fl+f2;/*前两个月加起来赋值给第三个月*/【程序2】题口:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断索数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。2.程序源代码:#include math.hmain()int m,i,k,h=0,leap=l;printf(n);for(m=101:m=200;m+)k=sqrt(m+1);fbr(i=2;i=k;i+)if(m%i=0)(leap=0;break;)if(leap)printf(%-4d,m);h+;if(h%10=0)printf(nu);leap=1;)printf(nThe total is%d.h);【程序3】题IR:打印出所有的“水仙花数”,所 谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码:main()(int i,j,k,n;printf(water flowernumber is:);for(n=100;n k,但 n能被k 整除,则应打卬出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n 不能被k 整除,则用k+1 作为k的值,重复执行第步。2.程序源代码:/*z h e n g in t is d iv id e d y in s h u*/ma in Oin t n,i;p r in t f (X n p l e a s e in p u t a n u mb e r:nz,);scanf&n);p r in t f(%d=,n);f o r(i=2;i=9 0分的同学用A表示,6 0-8 9分之间的用B表示,6 0分以下的用C表示。1 .程序分析:(a b)?a:b这是条件运算符的基本例子。2 .程序源代码:ma in()(in t s c o r e;c h a r g r a d e;p r in t f(*p l e a s e in p u t a s c o r e n );scanf&score);g r a d e=s c o r e =9 0?A,:(s c o r e =6 0?*B :C );p r in t f (d b e l o n g s t o%cz/,s c o r e,g r a d e);)【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。2 .程序源代码:ma in Oin t a,b,n u ml,n u m2,t e mp;p r in t f (*p l e a s e in p u t t w o n u mb e r s:X n );s c a n f (%d,%d ,&n u ml,&n u m2);if(n u m1 t e mp=n u ml;n u ml=n u m2;n u m2=t e mp;)a=n u ml;b=n u m2;w h il e(b!=0)/*利用辗除法,直到b为0 为止*/t e mp=a%b;a=b;b=t e mp;p r in t f(g o n g y u e s h u:%d n ,a);p r in t f (g o n g b e is h u:%d n,z,n u ml*n u m2/a);【程序7】题目:输入行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。1 .程序分析:利用w h il e 语句,条件为输入的字符不为 n.2.程序源代码:#i n c l u d e s t d i o.h m a i n()c h a r c;i n t l e t t e rs=0,s p a c e=0,d i g i t=O,o t h e rs=0;p ri n t f(p l e a s e i n p u t s o m e c h a ra c t e rs、。”);w h i l e (c=g e t c h a r0)!=,n)i f (c=,a&c=,A&c=O&c 二 9)d i g i t+;e l s eo t h e rs+;p ri n t f (z,a l l i n a l l :c h a r=%d s p a c e=%d d i g i t=%d o t h e rs=%d n,)l e t t e rs,s p a c e,d i g i t,o t h e rs);)【程序8】题目:求 s=a+a a+a a a+a a a a+a a.a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。1.程序分析:关键是计算出每一项的值。2.程序源代码:m a i n()(i n t a,n,c o u n t=l;l o n g i n t s n=0,t n=0;p ri n t f(p l e a s e i n p u t a a n d n n);s c a n f (刎,%d,&a,&n);p ri n t f(a=%d,n=%d n,a,n);w h i l e (c o u n t=n)tn=tn+a;sn=sn+tn;a=a*10;+count;printf Ca+aa+.=%ldn”,sn);【程序9】题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。1.程序分析:请参照程序 一上页程序14.2.程序源代码:main()(static int k10;int i,j,n,s;for(j=2;j1000;j+)n=-l;s=j;for(i=l;i if(j%i)=O)n+;s=s-i;kn=i;)i f(s=0)prinlf(级d is a wanshu,j);for(i=0;i printf(%d,ki);printf(%dn,kn);【程序10题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?1.程序分析:见下面注释2.程序源代码:main()(float sn=100.0,hn=sn/2;int n;for(n=2;n=10;n+)sn=sn+2*hn;/*第n次落地时共经过的米数*/hn=hn/2;/*第n次反跳高度*/printf(the total of road is%fn”,sn);printf(the tenth is%f metern”,hn);【程序11题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。2.程序源代码:m a i n()i n t i,j,k;p ri n t f (n);f o r(i=l;i 5;i+)/*以卜为三重循环*/f o r(j=l;j 5;j+)f o r(k=l;k 5;k+)(i f (i!=k&i!=j&j!=k)/*确保 i、j、k 三位互不相同*/p ri n t f (%d,%d,%d nz/,i,j,k);)【程序12题I R:企业发放的奖金根据利润提成。利涧(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到6 0万之间时高于40万元的部分,可提成3机6 0万到100万之间时,高于6 0万元的部分,可提成L 5%,高于100万元时,超过100万元的部分按现提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。2.程序源代码:m a i n O(l o n g i n t i;i n t b o n u s l,b o n u s 2,b o n u s 4,b o n u s 6,b o n u s 10,b o n u s;s c a n f (机d,&i);b o n u s 1 =100000*0.1;b o n u s 2=b o n u s 1+100000*0.7 5;b o n u s 4=b o n u s 2+200000*0.5;b o n u s 6=b o n u s 4+200000*0.3;b o n u s 10=b o n u s 6+400000*0.15;i f(i=100000)b o n u s=i*0.1;e l s e i f(i=200000)b o n u s=b o n u s l+(i-100000)*0.07 5;e l s e i f(i=400000)b o n u s=b o n u s 2+(i-200000)*0.05;e l s e i f(i=6 00000)b o n u s=b o n u s 4+(i-400000)*0.03;e l s e i f(i=1000000)b o n u s=b o n u s 6+(i-6 00000)*0.015;e l s eb o n u s二b o n u s 10+(i T 000000)*0.01;p ri n t f (b o n u s=%d,b o n u s);【程序13题目:一个整数,它加上100后是一个完全平方数,再加上16 8又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加I上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:2.程序源代码:i n c l u d e m at h.h m ai n()(l on g i n t i,x,y,z;f or (i=l;i 2)/*如果是闰年且月份大于2,总天数应该加,天*/s u m+;pr i n t f (It i s t h e%d t h d ay.”,s u m);【程序15题目:输入三个整数x,y,z,请把这三个数由小到大输出。1.程序分析:我们想办法把最小的数放到x 上,先将x与y 进行比较,如果x y 则将x与 y的值进行交换,然后再用x 与 z 进行比较,如果x z 则将x与z的值进行交换,这样能使x 最小。2.程序源代码:m ai n()(i n t x,y,z,t;s c an f (/,%d%d%d/,&x,&y,&z);i f (x y)t=x;x=y;y=t;/*交换 x,y 的值*/i f(x z)t=z;z=x;x=t;/*交换 x,z 的值*/i f(y z)t=y;y=z;z=t;/*交换 z,y 的值*/pr i n t f(s m al l t o b i g:%d%d /d n ,x,y,z);【程序16题目:用*号输出字母C的图案。1.程序分析:可先用*号在纸上写出字母C,再分行输出。2.程序源代码:#i n c l u d e s t d i o.h m ai n()(pr i n t f (*He l l o C-w or l d!n 0;pr i