经典c语言编程.pdf
《经典c语言编程.pdf》由会员分享,可在线阅读,更多相关《经典c语言编程.pdf(92页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【程序16题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。2.程序源代码:main()(int a,b,numLnum2,temp;printf(please input two numbers:n);scanf(%d7%d,&numl/&num2);if(numl temp=numl;numl=num2;num2=temp;a=numl;b=num2;while(b!=0)/*利用辗除法,直到b为。为止*/(temp=a%b;a=b;b=temp;)printf(gongyueshu:%dn,a);printf(gongbeishu:%dn/numl*num
2、2/a);【程 序19题 目:一个数如果恰好等于它的因子之和,这个数就称为例 如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)=0)n+;s=s-i;“完 数”。kn=i;if(s=O)(printf(%d is a wanshu,j);for(i=0;i printf(%d,ki);printf(%dn,kn);【程序20题目:一球从100米高度自由落下,每次落地后反跳回原
3、高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?1.程序分析:见下面注释2.程序源代码:main()(float sn=100.0,hn=sn/2;int n;for(n=2;n0)xl=(x2+l)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/x2=xl;day-;)printf(the total is%dn,xl);)【程序22题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。1.程序分析:判断素数的方法:用一个数
4、分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。2.程序源代码:main()chaMj,k;/*i是a的对手,j是b的对手,k是c的对手*/for(i=x;i=z;i+)for(j=x;j=z;j+)(if(i!=j)for(k=x;k=,z;k+)if(i!=k&j!=k)if(i!=x,&k!=x&k!=,z,)printf(order is a-%ctb-%ctc%cn,i,j,k);)【程序23题目:打印出如下图案(菱形)*L 程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。2.程序源代码
5、:main()(int i,j,k;for(i=0;i=3;i+)(for(j=0;j=2-i;j+)printf();for(k=0;k=2*i;k+)printf(*);printf(n);for(i=0;i=2;i+)(for(j=0;j=i;j+)printf();for(k=0;k=4-2*i;k+)printf(*);printf(n);【程序24题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13 求出这个数列的前20项之和。L 程序分析:请抓住分子与分母的变化规律。2.程序源代码:main()(int n,t,number=20;float a=2,b=l,
6、s=0;for(n=l;n=number;n+)(s=s+a/b;t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t 的作用*/printf(sum is%9.6fn,s);【程序25题 目:求1+2!求!+.+20!的和1.程序分析:此程序只是把累加变成了累乘。2.程序源代码:main()(float n,s=0,t=l;for(n=l;n=20;n+)(t*=n;s+=t;printf(l+2!+3!.+20!=%en,s);【程序26题目:利用递归方法求5!。1.程序分析:递归公式:fn=fn_l*4!2.程序源代码:#include stdio.hmain()int i;
7、int fact();for(i=0;i5;i+)printf(40:%d!=%dn,iJact(i);)int fact(j)int j;(int sum;if(j=O)sum=l;elsesum=j*fact(j-l);return sum;【程序27题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。1.程序分析:2.程序源代码:#include stdio.hmain()(int i=5;void palin(int n);printf(40:);palin(i);printf(n);)void palin(n)int n;(char next;if(n=l)(next
8、=getchar();printf(n0:);putchar(next);elsenext=getchar();palin(n-l);putchar(next);)【程序28题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。2.程序源代码:age(n)int n;int c;if(n=l)c=
9、10;else c=age(n-l)+2;return(c);main()printf(%d,age(5);【程序29题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。1.程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)2.程序源代码:main()(long a,b,c,d,e,x;scanf(%ld,&x);a=x/10000;/*分解出万位*/b=x000/1000;/*分解出千位*/c=x00/100;/*分解出百位*/d=x0/10;/*分解出十位*/e=x;/*分解出个位*/if(a!=0)printf(there
10、 are 5,%ld%ld%ld%ld%ldn,e/d,c/b,a);else if(b!=0)printf(there are 4,%ld%ld%ld%ldn/e,d,c,b);else if(c!=0)printf(there are 3,%ld%ld%ldn,e,d,c);else if(d!=0)printf(there are 2,%ld%ldn,e,d);else if(e!=0)printf(there are l,%ldn,e);【程序30题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。L程序分析:同29例2.程序源代码:main()
11、(long ge,shi,qian,wan,x;scanf(%ld,&x);wan=x/10000;qian=x000/1000;shi=x0/10;ge=x;if(ge=wan&shi=qian)/*个位等于万位并且十位等于千位*/printf(this number is a huiwenn);elseprintf(this number is not a huiwenn);【程 序 31题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。2.程序源代码:#
12、includevoid main()(char letter;printf(please input the first letter of somedayn);while(letter=getch()!=Y)/*当所按字母为 Y 时才结束*/switch(letter)case S:printf(please input second lettern);if(letter=getch()=a)printf(saturdayn);else if(letter=getch()=u)printf(sundayn);else printf(data errorn);break;case lF:pri
13、ntf(fridayn);break;case M:printf(mondayn);break;case T:printf(please input second lettern);if(letter=getch()=u)printf(tuesdayn);else if(letter=getch()=h)printf(thursdayn);else printf(data errorn);break;case W:printf(wednesdayn);break;default:printf(data errorn);)【程序32题目:Press any key to change color
14、,do you want to try it.Please hurryup!1.程序分析:2.程序源代码:#includevoid main(void)(int color;for(color=0;color 8;color+)(textbackground(color);/*设置文本的背景颜色*/cprintf(This is color%drn,color);cprintf(Press any key to continuern);getch();/*输入字符看不见*/)【程序33题目:学习gotoxy()与clrscr()函数1.程序分析:2.程序源代码:includevoid main
15、(void)(drscr();/*清屏函数*/textbackground(2);gotoxy(l,5);/*定位函数*/cprintf(Output at row 5 column ln);textbackground(3);gotoxy(20z 10);cprintf(Output at row 10 column 20n);)【程序34题目:练习函数调用1.程序分析:2.程序源代码:#includevoid hello_world(void)(printfCHello,world!n);void three_hellos(void)int counter;for(counter=1;co
16、unter=3;counter+)hello_world();/*调用此函数*/void main(void)three_hellos();/*调用此函数*/)【程序35题目:文本颜色设置1.程序分析:2.程序源代码:includevoid main(void)int color;for(color=1;color aj)min=j;tem=ai;ai=amin;amin=tem;/*output data*/printf(After sorted n);for(i=0;iprintf(,ai);【程 序38题目:求一个3*3矩阵对角线元素之和1.程序分析:利用双重for循环控制输入二维数组,
17、再 将 累 加 后输出。2.程序源代码:main()(float a33,sum=0;int i,j;printf(please input rectangle element:n);for(i=0;i3;i+)for(j=0;j3;j+)scanf(%f,&aij);for(i=0;i3;i+)sum=sum+aii;printf(duijiaoxian he is%6.2f/sum);【程 序 39题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。1.程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。2
18、.程序源代码:main()(intall=l,4,6,9,13,1619,28,40,100;int tempi,temp2,number,end,i,j;printf(original array is:n);for(i=0;iend)a10=number;elsefor(i=0;inumber)templ=ai;ai=number;for(j=i+l;jll;j+)temp2=aj;aj=templ;templ=temp2;break;)for(i=0;ill;i+)printf(m,ai);【程序41题目:学习static定义静态变量的用法1.程序分析:2.程序源代码:#include
19、stdio.hva rfunc()(int var=0;static int static_var=O;printf(40:var equal%d n,var);printf(40:static var equal%d n,static_var);printf(n);va r+;static_va r+;)void main()int i;for(i=0;i3;i+)va rfunc();【程序42题目:学习使用aut。定义变量的用法1.程序分析:2.程序源代码:#include stdio.hmain()int i,num;num=2;for(i=0;i3;i+)printf(40:The
20、num equal%d n,num);num+;auto int num=l;printf(40:The internal block num equal%d n,num);num+;)【程序43题目:学习使用static的另一用法。L程序分析:2.程序源代码:#include stdio.hmain()(int i,num;num=2;for(i=0;i3;i+)printf(40:The num equal%d n,num);num+;static int num=l;printf(40:The internal block num equal%dn,num);num+;)【程序44题目:
21、学习使用external的用法。L程序分析:2.程序源代码:#include stdio.hint a,b,c;void add()int a;a=3;c=a+b;void main()a=b=4;add();printf(The value of c is equal to%dn,c);【程序45题目:学习使用register定义变量的方法。L程序分析:2.程序源代码:void main()(register int i;int tmp=0;for(i=l;i);scanf(%d/&num);printf(40:The square for this number is%d n,SQ(num
22、);if(num=50)again=TRUE;elseagain=FALSE;【程序47题目:宏#define命令练习(2)L程序分析:2.程序源代码:#include stdio.h#define exchange(a,b)/*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上 */int t;t=a;a=b;b=t;void main(void)(int x=10;int y=20;printf(x=%d;y=%dn,x/y);exchange(x,y);printf(x=%d;y=%dn,x/y);【程序48题目:宏#define命令练习L程序分析:2.程序源代码:#define
23、LAG#define SMA y)?x:y#define MINIMUM(x,y)(xy)?y:xvoid main()int a=10,b=20;#ifdef MAXprintf(40:The larger one is%dn,MAXIMUM(a,b);#elseprintf(40:The lower one is%dn,MINIMUM(a/b);#endif#ifndef MINprintf(40:The lower one is%dn,MINIMUM(a,b);#elseprintf(40:The larger one is%dn/MAXIMUM(a,b);#endif#undef MA
24、X#ifdef MAXprintf(40:The larger one is%dn,MAXIMUM(a,b);#elseprintf(40:The lower one is%dn,MINIMUM(a,b);#endif#define MIN#ifndef MINprintf(40:The lower one is%dn,MINIMUM(a,b);#elseprintf(40:The larger one is%dn,MAXIMUM(a,b);ttendif【程序50题目:#include的应用练习1.程序分析:2.程序源代码:test.h文件如下:#define LAG#define SMA#
25、define EQ=#include test.h/*一个新文件 50.c,包含 test.h*/#include stdio.hvoid main()int i=10;int j=20;if(i LAG j)printf(40:%d larger than%d n,i,j);else if(i EQ j)printf(40:%d equal to%d nJzj);else if(i SMA j)printf(40:%d smaller than%d n,i,j);elseprintf(40:No such value.、);)【程序51题目:学习使用按位与&o1.程序分析:0&0=0;0&1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 经典 语言 编程
限制150内