经典C语言编程100例.pdf
《经典C语言编程100例.pdf》由会员分享,可在线阅读,更多相关《经典C语言编程100例.pdf(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言编程经典1 0 0例A:【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。2 .程序源代码:m a i n()(i n t i,j,k;p r i n t f(n );fo r(i =l;i 5;i+)/*以下为三重循环*/fo r(j=l;j 5;j+)fo r (k=l;k 5;k+)(i f(i!=k&i!=j&j!=k)/*确保 i、j、k 三位互不相同*/p r i n t f(u%d,%d,%d n ,i,j,k);)【程序2】题目:
2、企业发放的奖金根据利润提成。利润低于或等于1 0万元时,奖金可提1 0%;利润高于1 0万元,低于2 0万元时,低于1 0万元的部分按1 0%提成,高于1 0万元的部分,可可提成7.5机2 0万到4 0万之间时,高于2 0万元的部分,可提成5%;4 0万到6 0万之间时高于4 0万元的部分,可提成3乳6 0万到1 0 0万之间时,高于6 0万元的部分,可提成1.5%,高于1 0 0万元时,超过1 0 0万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。2 .程序源代码:m a i n()(l o n g i n
3、t i;i n t bo n u s l,bo n u s 2,bo n u s 4,bo n u s 6,bo n u s l O,bo n u s;s ca n f(%l d ,&i);bo n u s 1=1 0 0 0 0 0*0.1;bo n u s 2=bo n u s l+1 0 0 0 0 0*0.7 5;bo n u s 4=bo n u s 2+2 0 0 0 0 0*0.5;bo n u s 6=bo n u s 4+2 0 0 0 0 0*0.3;bo n u s 1 0=bo n u s 6+4 0 0 0 0 0*0.1 5;i f(i =1 0 0 0 0 0)b
4、o n u s=i*0.1;e l s e i f(i (=2 0 0 0 0 0)bo n u s=bo n u s l+(i-1 0 0 0 0 0)*0.0 7 5;e l s e i f(i (=4 0 0 0 0 0)bo n u s=bo n u s 2+(i-2 0 0 0 0 0)*0.0 5;e l s e i f(i (=6 0 0 0 0 0)bo n u s=bo n u s 4+(i-4 0 0 0 0 0)*0.0 3;e l s e i f(i =1 0 0 0 0 0 0)bo n u s=bo n u s 6+(i-6 0 0 0 0 0)*0.0 1 5;e
5、 l s ebo n u s=bo n u s 1 0+(1-1 0 0 0 0 0 0)*0.0 1;p r i n t f(bo n u s=%d ,bo n u s);)【程 序3】题目:一个整数,它 加 上1 0 0后是一个完全平方数,再加上1 6 8又是一个完全平方数,请问该数是多少?1.程序分析:在1 0万以内判断,先将该数加上1 0 0后再开方,再将该数加上2 6 8后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:2 .程序源代码:#i n cl u d e m a t h,h”m a i n ()l o n g i n t i,x,y,z;fo r (i=l;i
6、 1 0 0 0 0 0;i+)x=s q r t(i+1 0 0);/*x为加上1 0 0后开方后的结果*/y=s q r t(i+2 6 8);/*y为再加上1 6 8后开方后的结果*/i f(x*x=i+1 0 0&y*y=i+2 6 8)/*如果一一个数的平方根的平方等于该数,这说明此数是完全平方数*/p r i n t f(un%l d n ,i);)【程 序4】题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。2 .程序源代码:m a i n ()
7、i n t d a y,m o n t h,y e a r,s u m,l e a p;printf(unplease input year,month,dayn);scanf(a%d,%d,%d&year,&month,&day);switch(month)/*先计算某月以前月份的总天数*/(case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum
8、=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf(udata error a);break;)sum=sum+day;/*再加上某天的天数*/if(year%400=0|(year%4二 二 0&丫 0%100!=0)/*判断是不是闰年*/leap=l;elseleap=0;if(leap=l&month)2)/*如果是闰年且月份大于2,总天数应该加一天*/sum+;printf(uIt is the%dth day.a
9、,sum);【程 序 5】题目:输入三个整数x,y,z,请把这三个数由小到大输出。1.程序分析:我们想办法把最小的数放到x 上,先 将 x 与 y 进行比较,如 果 Xy 则将x 与 y 的值进行交换,然后再用x 与 z 进行比较,如 果 xz 则 将 x 与 z 的值进行交换,这样能使x 最小。2.程序源代码:main()(int x,y,z,t;scanf(%d%d%d,&x,&y,&z);if(x)y)t=x;x=y;y=t;/*交换 x,y 的值*/if(x)z)t=z;Z=X;X=t;/*交换 X,z 的值*/if(y)z)t=y;y=z;z=t;/*交换 z,y 的值*/p r i
10、 n t f(u s m a l l t o bi g:%d%d%d n ”,x,y,z);)【程序6】题目:用*号输出字母C的图案。1.程序分析:可先用*号在纸上写出字母C,再分行输出。2.程序源代码:#i nc lu d e s t d io.h ma in()(p r int f(uH e llo C-w o r ld!n);p r int f(*n );p r int f(“*n);p r int f (“*n);p r int f(a*n );)【程序7】题目:输出特殊图案,请在c环境中运行,看一看,V e r y B e a u t if u l!1.程序分析:字符共有2 5 6个
11、。不同字符,图形不一样。2.程序源代码:#i nc lu d e s t d io.h ma in()(c h a r a=176,b=219;p r int f (%c%c%c%c%c n”,b,a,a,a,b);p r int f (r t%c%c%c%c%c n,a,b,a,b,a);p r int f (%c%c%c%c%c n,a,a,b,a,a);p r int f (r t%c%c%c%c%c n,a,b,a,b,a);p r int f (a%c%c%c%c%c n”,b,a,a,a,b);)【程序8】题目:输出9*9 口诀。1.程序分析:分行与列考虑,共9行9列,i控制行,j
12、控制列。2.程序源代码:#i nc lu d e s t d io.h ma in()(int i,j,r e s u lt;p r int f (n);f o r (i=l;i(10;i+)f o r(j=l;j 10;j+)r e s u lt=i*j;p r int f (%d*%d=%-3d ,i,j,r e s u lt);/*-3d 表示左对齐,占 3 位*/)p r int f (“n);/*每一行后换行*/)【程序9】题目:要求输出国际象棋棋盘。1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。2.程序源代码:#i nc lu d e u
13、s t d io.h ma in()(int i,j;f o r(i=0;i 8;i+)(f o r(j=0;j 8;j+)if(i+j)%2=0)p r int f (r t%c%c “,219,219);e ls ep r int “);p r int f(“n);【程序10题目:打印楼梯,同时在楼梯上方打印两个笑脸。1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。2.程序源代码:#i nc lu d e s t d io.h ma in()(int i,j;p r int f(lln);/*输出两个笑脸*/f o r (i=l;i 11;i+)(f o r(j
14、=l;j=i;j+)p r int f (“枇枇“,219,219);p r int “n);【程 序11题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.2.程序源代码:ma in()(lo ng f l,f 2;int i;f l=f 2=l;f o r(i=l;i=20;i+)p r int f(“%121d%121dif(i%2=0)p r int f(“n );/*控制输出,每行四个*/f l=f l+f 2;/*前两个月
15、加起来赋值给第三个月*/f 2=f l+f 2;/*前两个月加起来赋值给第三个月*/【程 序12题目:判 断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到s q r t (这个数),如果能被整除,则表明此数不是素数,反之是素数。2.程序源代码:#i nc lu d e ma t h,hma in()int m,i,k,h=0,le a p=l;p r int f(n);f o r(m=101;m(=200;m+)k=s q r t(m+1);f o r(i=2;i=k;i+)if(m%i=0)le a p=0;b r e a k;if (le
16、 a p)p r int f (%-4d ”,m);h+;if (h%10=0)p r int f(“n );p r int f(anT h e t o t a l is%d ”,h);【程序13题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5 的三次方+3 的三次方。1.程序分析:利用f o r 循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码:ma in()(int i,j,k,n;p r int f(w a t e r f lo w e r nu mb e r
17、is:);f o r(n=100;n 1000;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)p r int f(“强-5d ,n);)p r int f(n);【程序14题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对 n 进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。如果n k,但 n能被k 整除,则应打印出k的值,并用n除以k的商,
18、作为新的正整数你n,重复执行第一步。(3)如果n 不能被k 整除,则用k+1作为k的值,重复执行第一步。2.程序源代码:/*zh e n g i n t i s d i v i d e d yi n s h u*/m a i n()(i n t n,i;p ri n t f(un p l e a s e i n p ut a n um b e r:n );s c a n f(%d ,&n);p ri n t f (%d=,n);f o r(i=2;i =n;i+)(w h i l e(n!=i)(i f(n%i=O)p ri n t f(“%d*“,i);n=n/i;)e l s eb re
19、a k;)p ri n t f(%d ,n);【程序15 题目:利用条件运算符的嵌套来完成此题:学习成绩)=9 0分的同学用A表示,6 0-8 9分之间的用B表示,6 0分以下的用C表示。1.程序分析:(ab)?a:b这是条件运算符的基本例子。2.程序源代码:m a i n()(i n t s c o re;c h a r g ra d e;p ri n t f(p l e a s e i n p ut a s c o re n );s c a n f(u%d u,&s c o re);g ra d e=s c o re)=9 0?A :(s c o re)=6 0?B :C );p ri n
20、 t f(u%d b e l o n g s t o%c u,s c o re,g ra d e);)【程序16 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。2.程序源代码:m a i n ()i n t a,b,n um l,n um 2,t e m p;p ri n t f(p l e a s e i n p ut t w o n um b e rs:n );s c a n f (/d,%d ”,&n um l,&n um 2);i f(n um l t e m p=n um l;n um l=n um 2;n um 2=t e m p;)a=n um
21、 l;b=n um 2;w h i l e(b!=0)/*利用辗除法,直到b为0为止*/(t e m p=a%b;a=b;b=t e m p;)p ri n t f(g o n g yue s h u:%d n ”,a);p ri n t f(g o n g b e i s h u:%d n ”,n um l*n um 2/a);)【程 序17 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。L程序分析:利 用w h i l e语句,条件为输入的字符不为n .2.程序源代码:#i n c l ud e “s t d i o.h m a i n()c h a r c;i
22、n t l e t t e rs=0,s p a c e=0,d i g i t=0,o t h e rs=0;p ri n t f(p l e a s e i n p ut s o m e c h a ra c t e rs n );w h i l e(c=g e t c h a r()!=,n )(i f(c)=a&c=z|c=A&c 仁 V )l e t t e rs+;e l s e i f(c=,)s p a c e+;e l s e i f(c)=O&c 二9 )d i g i t+;e l s eo t h e rs+;)p ri n t f(a l l i n a l l:c
23、h a r=%d s p a c e=%d d i g i t=%d o t h e rs=%d n u,l e t t e rs,s p a c e,d i g i t,o t h e rs);)【程 序18 题 目:求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 un 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
24、 e i n p ut a a n d n n );s c a n f(u%d,%d ,&a,&n);p ri n t f (a=%d,n=%d n a,n);w h i l e(c o un t (=n)(t n=t n+a;s n=s n+t n;a=a*10;+c o un t;)p ri n t f(a+a a+.=%l d n ,s n);)【程 序 19 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例 如 6=1+2+3.编程找 出 1000以内的所有完数。1.程序分析:请 参 照 程 序 一上页程序14.2.程序源代码:m a i n()s t a t i c i
25、 n t k 10;i n t i,j,n,s;f o r(j=2;j (1000J+)(n=-l;s=j;f o r(i=l;i i f(j%i)=O)n+;s=s-i;k n =i;)i f(s=0)(p ri n t f(%d i s a w a n s h u”,j);f o r(i=0;i p ri n t f(%d,k i );p ri n t f(u%d n ,k n );【程序20题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 10次落地时,共经过多少米?第 10次反弹多高?1.程序分析:见下面注释2.程序源代码:m a i n()(f l o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 经典 语言 编程 100
限制150内