资源预览内容
第1页 / 共53页
第2页 / 共53页
第3页 / 共53页
第4页 / 共53页
第5页 / 共53页
第6页 / 共53页
第7页 / 共53页
第8页 / 共53页
第9页 / 共53页
第10页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C语言经典算法实例100本篇又影视网 提 供/?加:wvm 【程序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 tf(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 r i n tf(%d,%d,%d n ,i,j,k);)【程序2】题目:企业发放的奖金根据利润提成。利润低于或等于1 0万元时,奖金可提10%:利润高于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()万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。2.程序源代码:m a i n()l o n g i n t i;i n t bo n u s 1 ,bo n u s 2,bo n u s 4,bo n u s 6,bo n u s 1 0,bo n u s;s ca n f(H%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 1+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)bo 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)bon us二bon us6+(1600000)*0.015;elsebonus=bonuslO+(i-l 000000)*0.01;printf(bonus=%d,bonus);【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。清看具体分析:2.程序源代码:#include math.hmain()long int i,x,y,z;for(i=l;i 2)/*如果是闰年且月份大于2,总天数应该加一天*/s u m+;p r i n tf(*It i s th e%d t h d a y.,s u m);)【程序5】题Fl:输入三个整数x,y,z,请把这三个数由小到大输出。1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x y则将x与y的值进行交换,然后再用x与z进行比较,如果x z则将x与z的值进行交换,这样能使x最小。2.程 序源代码:m a i n()i n t x,y,z,t;s ca n 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 的值*/p r i n tf(s m a l l to bi g:%d%d%d n ,x,y,z);)【程序6】题目:用*号输出字母C的图案。1.程序分析:可先用吹号在纸上写出字母C,再分行输出。2.程 序源代码:#i n c l u d e s t d i o.h m a i n()p r i n t f(He Il o C-w o r l d!nu);p r i n t f(*nM);p r i n t f C *nn);p r i n t f(*n);p r i n t f(M*n);【程序7】题目:输出特殊图案,请在c环境中运行,看一看,V e r y B e a u t i f u l!1.程序分析:字符共有2 5 6个。不同字符,图形不-样。2.程序源代码:#i n c l u d e s t d i o.h m a i n()(c h a r a=17 6,b=219;p r i n t f(%c%c%c%c%c n,b,a,a,a,b);printf(,%c%c%c%c%cn,a,b,a,b,a);printf(,%c%c%c%c%cn,a,a,b,a,a);printf(,%c%c%c%c%cn,a,b,a,b,a);printf(%c%c%c%c%cn,b,a,a,a,b);)【程序8】题口:输出9*9 口诀。1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。2.程序源代码:#include stdio.hmain()(int i,j,result;printf(n);for(i=l;i10;i+)for(j=l;j10;j+)(result=i*j;printf(%d*%d=%-3d,i,j,result);/*-3d 表示左对 齐,占 3 位*/)printf(n);/*每一行后换行*/)【程序9】题目:要求输出国际象棋棋盘。1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。2.程 序源代码:#include stdio.hmain()(int i,j;for(i=0;i8;i+)(for(j=0;j8;j+)if(i+j)%2=0)printf(%c%c,219,219);elseprintf(-H);printfCXn);)【程序10题目:打印楼梯,同时在楼梯上方打印两个笑脸。1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。2.程序源代码:#include stdio.hmain()(int i,j;printf(lln);/*输出两个笑脸*/for(i=l;ill;i+)(for(j=l;j=i;j+)printf(,%c%c,219,219);printf(n);I)作 者:zhlei8l 2005-1-22 11:29 回复此发言3回复:经典C源程序100例【程序11题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月乂生-对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.2.程序源代码:main()(long fl,f2;int i;fl=f2=l;for(i=l;i=20;i+)printf(,%121d%121d,fl,f2);if(i%2=0)printf(n);/*控制输出,每行四个*/f I=f l+f2;/*前两个月加起来赋值给第三个月*/f2=f l+f2;/*前两个月加起来赋值给第三个月*/)【程序12题口:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用个数分别去除2到sqn(这个数),如果能被整除,则表明此数不是素数,反之是素数。2.程序源代码:#include math.h1main()(int m,i,k,h=O,leap=l;printf(nn);for(m=101 ;m=200;m+)k=sqrt(m+l);for(i=2;i=k;i+)if(m%i=O)leap=O;break;if(leap)printf(,%-4d,m);h+;if(h%10=0)printf(n);)leap=l;)printf(nThe total is%d,h);【程 序 13题目:打印出所有的“水仙花数,所谓 水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因 为 153=1的三次方+5 的三次方+3 的三次方。1.程序分析:利用foi循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码:main()(int i,j,k,n;printf(water flowernumber is:);for(n=100;n k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。如果n不能被k整除,则用k+1作为k的值,重复执行第一步。2.程序源代码:/*zheng int is divided yinshu*/main()(int nJ;printf(nplease input a number:n);scanf(d”,&n);printf(%d=u,n);for(i=2;i=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。1.程序分析:(ab)?a:b这是条件运算符的基本例子。2.程 序源代码:main()(int score;char grade;printfCplease input a scoren);scanf(n%du,&score);grade=score=90?,A:(score=60?B:C);printf(%d belongs to%cscore,grade);【程序16题目:输入两个正整数m和n,求其最大公约数和最小公倍数。作者:zhlei8l 2005-1-22 11:30 回复此发言4回复:经典C源程序100例I.程序分析:利用辗除法。2.程序源代码:main()(int a,b,num 1,num2,temp;printf(please input two numbers:n);scanf(%d,%d,&num l,&num2);if(num 1 temp=num 1;num l=num2;num2=temp;)a=numl;b=num2;while(b!=0)/*利用辗除法,直到b为0为止叼(temp=a%b;a=b;b=tenip;)printf(gongyueshu:%dn”,a);printf(,gongbeishu:%dn,num 1 *num2/a);1【程序17题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。L程序分析:利用while语句,条件为输入的字符不为、优2.程序源代码:#include stdio.hmain()char c;int letters=0,space=0,digit=0,olhers=0;printf(please input some charactersn);while(c=getchar()!=n)if(c=a,&c=,A,&c=0,&c=91)digit+;elseothers+;)printf(all in all:char=%d space=%d digit=%d others=%dn,letters,space,digit,others);I【程序18题目:求 s=a+aa+aaa+aaaa+aa.a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。1.程序分析:关
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号