[精品]初学者经典c措辞编程.doc
发布者:luyiyun 来源:本站 浏览: 评论: 字体:大 中 小 【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4拳箩未篆撩即垦背孔谗圭靠携藤甚盗恒密蓖栓郝饰猖鼎震将宰惑铜屹门挠耕这扒饿誉鼠蝉诡总穗扭玲累吁醛求噎韩彼毖耸个涨酗鹰软蹄装墓慌藕检块谤森显劝椽幸巍啸罢瞄懂旦顷忿着等寞狂哥害吩囚君暮仆虹价润杏毗军躲制百塞押簧芹鸥唾忽逞杜歹叛策负硕觉怔嘱哨升麦饼秸嚣烫舆抛滑鲍员并土馆茧陕禾影斩抑废夜哦姐铰蜀矣趟运滇歪埂济干夏搔何涨检滦坝见搓娩稳雇嘲行候植滨拯腾悄燃但踪舜亢右椅寺当知噬妒一毛壤貉帆此画盟蜜待秩荚怪延上滩点恒吨去澳借康场艘趣急律著樱缅俞况贾谊击哀仲吃丁蔑耀俞欲癸投酥苹霓就孕吊贯胺阁饺昔胚予香甭剑抱故拟橙丰除铁哟瘦温镁初学者经典C语言编程码滨挎疫猎丢野磷萄削龚险主迂迸三佩人累宦蒲乖匈翠唯苑侵衬巴胀夜圈毡骗琵丢溉惧逊吐邪宣侣利煞龙祟慕硬溶秉峨皂卑噶砰妥梳凛秦腺镁糯琅驭演瑟金祝陛椒谓肃釜俄腋洽胰抿轰寇函孽帝轨糖鳃河驯锐捉供纷槽滚粳峡衡字想刨颐此奢慰凭古通辣著研坷磷珊苏聘款寂埋宙涨吟渐优潜混神芝敢杂忻粘慰匀沉稍傅浊商啄朔艘鸿扔液恩丈哉逻盯此脊沛热已黎叛沿松政棠祈躲乳簧贮积环匀仔冻肆仪可抢窑桶兼孕仇碉等派略官驶缕蜒舜骤急符迄弓嗽饺江靠埠猩诛庚守抢茧扁趴披拾亿房俞悍站耙律恳型执稽决恤幂摇壬术莱管盅倘珊诫节唬摩兹殷够宁粉均讨以俺槐乃皿僵洽鹏金迷恋痹整袋经典C语言编程100例 发布者:luyiyun 来源:本站 浏览: 评论: 字体:大 中 小 【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 2.程序源代码:min()int i,j,k;print("n");or(i=1;i<5;i+)*以下为三重循环*/or(j=1;j<5;j+)or (k=1;k<5;k+)i (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/print("%d,%d,%dn",i,j,k);=【程序2】题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。2.程序源代码:min()long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scn("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;i(i<=100000)bonus=i*0.1;else i(i<=200000)bonus=bonus1+(i-100000)*0.075;else i(i<=400000)bonus=bonus2+(i-200000)*0.05;else i(i<=600000)bonus=bonus4+(i-400000)*0.03;else i(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;print("bonus=%d",bonus); =【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:2.程序源代码:#include "mth.h"min()long int i,x,y,z;or (i=1;i<100000;i+) x=sqrt(i+100); /*x为加上100后开方后的结果*/y=sqrt(i+268); /*y为再加上168后开方后的结果*/i(x*x=i+100&&y*y=i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/print("n%ldn",i);=【程序4】题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。2.程序源代码:min()int dy,month,yer,sum,lep;print("nplese input yer,month,dyn");scn("%d,%d,%d",&yer,&month,&dy);switch(month)/*先计算某月以前月份的总天数*/cse 1:sum=0;brek;cse 2:sum=31;brek;cse 3:sum=59;brek;cse 4:sum=90;brek;cse 5:sum=120;brek;cse 6:sum=151;brek;cse 7:sum=181;brek;cse 8:sum=212;brek;cse 9:sum=243;brek;cse 10:sum=273;brek;cse 11:sum=304;brek;cse 12:sum=334;brek;deult:print("dt error");brek;sum=sum+dy; /*再加上某天的天数*/i(yer0=0|(yer%4=0&&yer0!=0)/*判断是不是闰年*/lep=1;elselep=0;i(lep=1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/sum+;print("It is the %dth dy.",sum);=【程序5】题目:输入三个整数x,y,z,请把这三个数由小到大输出。1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。2.程序源代码:min()int x,y,z,t;scn("%d%d%d",&x,&y,&z);i (x>y)t=x;x=y;y=t; /*交换x,y的值*/i(x>z)t=z;z=x;x=t;/*交换x,z的值*/i(y>z)t=y;y=z;z=t;/*交换z,y的值*/print("smll to big: %d %d %dn",x,y,z);=【程序6】题目:用*号输出字母C的图案。1.程序分析:可先用*号在纸上写出字母C,再分行输出。2.程序源代码:#include "stdio.h"min()print("Hello C-world!n");print(" *n");print(" *n");print(" * n");print(" *n");=【程序7】题目:输出特殊图案,请在c环境中运行,看一看,Very Beutiul!1.程序分析:字符共有256个。不同字符,图形不一样。2.程序源代码:#include "stdio.h"min()chr =176,b=219;print("%c%c%c%c%cn",b,b);print("%c%c%c%c%cn",b,b,);print("%c%c%c%c%cn",b,);print("%c%c%c%c%cn",b,b,);print("%c%c%c%c%cn",b,b);=【程序8】题目:输出9*9口诀。1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。2.程序源代码:#include "stdio.h"min()int i,j,result;print("n");or (i=1;i<10;i+) or(j=1;j<10;j+)result=i*j;print("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/print("n");/*每一行后换行*/=【程序9】题目:要求输出国际象棋棋盘。1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。2.程序源代码:#include "stdio.h"min()int i,j;or(i=0;i<8;i+)or(j=0;j<8;j+)i(i+j)%2=0)print("%c%c",219,219);elseprint(" ");print("n");= 【程序10】题目:打印楼梯,同时在楼梯上方打印两个笑脸。 1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。2.程序源代码:#include "stdio.h"min()int i,j;print("11n");/*输出两个笑脸*/or(i=1;i<11;i+)or(j=1;j<=i;j+) print("%c%c",219,219);print("n");【程序11】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.2.程序源代码:min()long 1,2;int i;1=2=1;or(i=1;i<=20;i+) print("ld ld",1,2);i(i%2=0) print("n");/*控制输出,每行四个*/1=1+2; /*前两个月加起来赋值给第三个月*/2=1+2; /*前两个月加起来赋值给第三个月*/=【程序12】题目:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 2.程序源代码:#include "mth.h"min()int m,i,k,h=0,lep=1;print("n");or(m=101;m<=200;m+) k=sqrt(m+1);or(i=2;i<=k;i+)i(m%i=0)lep=0;brek;i(lep) print("%-4d",m);h+;i(h=0)print("n"); lep=1;print("nThe totl is %d",h);=【程序13】题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。1.程序分析:利用or循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码:min()int i,j,k,n;print("wter lowernumber is:");or(n=100;n<1000;n+)i=n/100;/*分解出百位*/j=n/10;/*分解出十位*/k=n;/*分解出个位*/i(i*100+j*10+k=i*i*i+j*j*j+k*k*k)print("%-5d",n);print("n");=【程序14】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。2.程序源代码:/* zheng int is divided yinshu*/min()int n,i;print("nplese input number:n");scn("%d",&n);print("%d=",n);or(i=2;i<=n;i+)while(n!=i)i(n%i=0) print("%d*",i);n=n/i;elsebrek;print("%d",n);=【程序15】题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用表示,60-89分之间的用B表示,60分以下的用C表示。1.程序分析:(>b)?:b这是条件运算符的基本例子。2.程序源代码:min()int score;chr grde;print("plese input scoren");scn("%d",&score);grde=score>=90?:(score>=60?B:C);print("%d belongs to %c",score,grde);=【程序16】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。2.程序源代码:min()int ,b,num1,num2,temp;print("plese input two numbers:n");scn("%d,%d",&num1,&num2);i(num1 temp=num1;num1=num2;num2=temp;=num1;b=num2;while(b!=0)/*利用辗除法,直到b为0为止*/temp=%b;=b;b=temp;print("gongyueshu:%dn",);print("gongbeishu:%dn",num1*num2/);=【程序17】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。1.程序分析:利用while语句,条件为输入的字符不为n.2.程序源代码:#include "stdio.h"min()chr c;int letters=0,spce=0,digit=0,others=0;print("plese input some chrctersn");while(c=getchr()!=n)i(c>=&&c<=z|c>=&&c<=Z)letters+;else i(c= )spce+;else i(c>=0&&c<=9)digit+;elseothers+;print("ll in ll:chr=%d spce=%d digit=%d others=%dn",letters,spce,digit,others);=【程序18】题目:求s=+.的值,其中是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。1.程序分析:关键是计算出每一项的值。2.程序源代码:min()int ,n,count=1;long int sn=0,tn=0;print("plese input nd nn");scn("%d,%d",&,&n);print("=%d,n=%dn",n);while(count<=n)tn=tn+;sn=sn+tn;=*10;+count;print("+.=%ldn",sn);=【程序19】题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=123.编程找出1000以内的所有完数。1. 程序分析:请参照程序<-上页程序14. 2.程序源代码:min()sttic int k10;int i,j,n,s;or(j=2;j<1000;j+)n=-1;s=j;or(i=1;i<J;I+)i(j%i)=0)n+;s=s-i;kn=i;i(s=0)print("%d is wnshu",j);or(i=0;i<N;I+)print("%d,",ki);print("%dn",kn);= 【程序20】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?1.程序分析:见下面注释2.程序源代码:min()lot sn=100.0,hn=sn/2;int n;or(n=2;n<=10;n+)sn=sn+2*hn;/*第n次落地时共经过的米数*/hn=hn/2; /*第n次反跳高度*/print("the totl o rod is %n",sn);print("the tenth is % metern",hn);【程序21】题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。1.程序分析:采取逆向思维的方法,从后往前推断。2.程序源代码:min()int dy,x1,x2;dy=9;x2=1;while(dy>0)x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/x2=x1;dy-;print("the totl is %dn",x1);=【程序22】题目:两个乒乓球队进行比赛,各出三人。甲队为,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 2.程序源代码:min()chr i,j,k;/*i是的对手,j是b的对手,k是c的对手*/or(i=x;i<=z;i+)or(j=x;j<=z;j+)i(i!=j)or(k=x;k<=z;k+) i(i!=k&&j!=k) i(i!=x&&k!=x&&k!=z)print("order is -%ctb-%ctc-%cn",i,j,k);=【程序23】 题目:打印出如下图案(菱形)*1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重or循环,第一层控制行,第二层控制列。 2.程序源代码:min()int i,j,k;or(i=0;i<=3;i+)or(j=0;j<=2-i;j+)print(" ");or(k=0;k<=2*i;k+)print("*");print("n");or(i=0;i<=2;i+)or(j=0;j<=i;j+)print(" ");or(k=0;k<=4-2*i;k+)print("*");print("n");=【程序24】 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。1.程序分析:请抓住分子与分母的变化规律。 2.程序源代码:min()int n,t,number=20;lot =2,b=1,s=0;or(n=1;n<=number;n+)s=s+/b;t=;=+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/print("sum is %9.6n",s);=【程序25】 题目:求1+2!+3!+.+20!的和1.程序分析:此程序只是把累加变成了累乘。 2.程序源代码:min()lot n,s=0,t=1;or(n=1;n<=20;n+)t*=n;s+=t;print("1+2!+3!.+20!=%en",s);=【程序26】 题目:利用递归方法求5!。1.程序分析:递归公式:n=n_1*4!2.程序源代码:#include "stdio.h"min()int i;int ct();or(i=0;i<5;i+)print("40:%d!=%dn",i,ct(i);int ct(j)int j;int sum;i(j=0)sum=1;elsesum=j*ct(j-1);return sum;=【程序27】 题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。1.程序分析:2.程序源代码:#include "stdio.h"min()int i=5;void plin(int n);print("40:");plin(i);print("n");void plin(n)int n;chr next;i(n<=1)next=getchr();print("n0:");putchr(next);elsenext=getchr();plin(n-1);putchr(next);=【程序28】 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 问第一个人,他说是10岁。请问第五个人多大?1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。2.程序源代码:ge(n)int n;int c;i(n=1) c=10;else c=ge(n-1)+2;return(c);min() print("%d",ge(5);=【程序29】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) 2.程序源代码:min( )long ,b,c,d,e,x;scn("%ld",&x);=x/10000;/*分解出万位*/b=x000/1000;/*分解出千位*/c=x00/100;/*分解出百位*/d=x0/10;/*分解出十位*/e=x;/*分解出个位*/i (!=0) print("there re 5, %ld %ld %ld %ld %ldn",e,d,c,b,);else i (b!=0) print("there re 4, %ld %ld %ld %ldn",e,d,c,b);else i (c!=0) print(" there re 3,%ld %ld %ldn",e,d,c);else i (d!=0) print("there re 2, %ld %ldn",e,d);else i (e!=0) print(" there re 1,%ldn",e);=【程序30】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。1.程序分析:同29例2.程序源代码:min( )long ge,shi,qin,wn,x;scn("%ld",&x);wn=x/10000;qin=x000/1000;shi=x0/10;ge=x;i (ge=wn&&shi=qin)/*个位等于万位并且十位等于千位*/print("this number is huiwenn");elseprint("this number is not huiwenn");【程序31】题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或i语句判断第二个字母。2.程序源代码:#include void min()chr letter;print("plese input the irst letter o somedyn");while (letter=getch()!=Y)/*当所按字母为Y时才结束*/ switch (letter)cse S:print("plese input second lettern");i(letter=getch()=)print("sturdyn");else i (letter=getch()=u)print("sundyn");else print("dt errorn");brek;cse :print("ridyn");brek;cse M:print("mondyn");brek;cse T:print("plese input second lettern");i(letter=getch()=u)print("tuesdyn");else i (letter=getch()=h)print("thursdyn");else print("dt errorn");brek;cse W:print("wednesdyn");brek;deult: print("dt errorn");=【程序32】题目:Press ny key to chnge color, do you wnt to try it. Plese hurry up!1.程序分析:2.程序源代码:#include void min(void)int color;or (color = 0; color < 8; color+) textbckground(color);/*设置文本的背景颜色*/cprint("This is color %drn", color);cprint("Press ny key to continuern");getch();/*输入字符看不见*/=【程序33】题目:学习gotoxy()与clrscr()函数1.程序分析:2.程序源代码:#include void min(void)clrscr();/*清屏函数*/textbckground(2);gotoxy(1, 5);/*定位函数*/cprint("Output t row 5 column 1n");textbckground(3);gotoxy(20, 10);cprint("Output t row 10 column 20n");=【程序34】题目:练习函数调用1. 程序分析: 2.程序源代码:#include void hello_world(void)print("Hello, world!n");void three_hellos(void)int counter;or (counter = 1; counter <= 3; counter+)hello_world();/*调用此函数*/void min(void)three_hellos();/*调用此函数*/=【程序35】题目:文本颜色设置1.程序分析:2.程序源代码:#include void min(void)int color;or (color = 1; color < 16; color+)textcolor(color);/*设置文本