




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1 【c語言】c語言程序設計教程(第二版)習題答案 說 明1. 本文所指的c語言程序設計教程(第二版)是李鳳霞主編、北京理工大學出版社出版的,綠皮。 2 第1章 程序設計基礎知識 一、單項選擇題(第23頁)1-4.cbbc 5-8.daca二、填空題(第24頁)1.判斷條件 2.面向過程編程 3.結構化 4.程序 5.面向對象的程序設計語言 7.有窮性 8.直到型循環(huán) 9.算法 10.可讀性 11.模塊化 12.對問題的分析和模塊的劃分三、應用題(第24頁) 2.源程序:main()int i,j,k; /* i:公雞數,j:母雞數,k:小雞數的1/3 */printf("cock
2、hen chickn");for(i=1;i<=20;i+) for(j=1;j<=33;j+) for(k=1;k<=33;k+) if (i+j+k*3=100&&i*5+j*3+k=100) printf(" %d %d %dn",i,j,k*3);執(zhí)行結果:cock hen chick 4 18 78 8 11 81 12 4 84 3.現計算斐波那契數列的前20項。 遞推法 源程序:main()long a,b;int i;a=b=1;for(i=1;i<=10;i+) /*要計算前30項,把10改為15。*/pr
3、intf("%8ld%8ld",a,b); a=a+b;b=b+a; 遞歸法 源程序:main()int i;for(i=0;i<=19;i+)printf("%8d",fib(i);fib(int i)return(i<=1?1:fib(i-1)+fib(i-2); 執(zhí)行結果: 1 1 2 3 5 8 13 21 34 5589 144 233 377 610 987 1597 2584 4181 6765 4.源程序:#include "math.h"main()double x,x0,deltax;x=1.5;do
4、x0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;while(deltax>1e-12);printf("%.10fn",x);執(zhí)行結果:1.3247179572 5.源程序略。(分子、分母均構成斐波那契數列)結果是32.660260798646.源程序:main()int a,b,c,m;printf("please input a,b and c:");scanf("%d %d %d",&a,&b,&c);if(a<b)m=a;a=b;b=m;if(a<c)m
5、=a;a=c;c=m;if(b<c)m=b;b=c;c=m;printf("%d %d %dn",a,b,c);執(zhí)行結果:please input a,b and c:123 456 789789 456 1237.源程序:main()int a;scanf("%d",&a);printf(a%21=0?"yes":"no");執(zhí)行結果:42yes 3 第2章 c語言概述 一、單項選擇題(第34頁)1-4.bdcb 5-8.aabc二、填空題(第35頁)1.主 2.c編譯系統(tǒng) 3.函數 函數 4.輸入
6、輸出 5.頭 6. .obj 7.庫函數 8.文本三、應用題(第36頁)5.sizeof是關鍵字,stru、_aoto、file、m_i_n、hello、abc、sin90、x1234、until、cos2x、s_3是標識符。 8.源程序:main()int a,b,c;scanf("%d %d",&a,&b);c=a;a=b;b=c;printf("%d %d",a,b);執(zhí)行結果:12 3434 12 4 第3章 數據類型與運算規(guī)則 一、單項選擇題(第75頁) 1-5.dbacc 6-10.dbdbc 11-15.adccc 16-2
7、0.cbccd 21-25.addbc 26-27.ab二、填空題(第77頁) 1.補碼 2.±(10-30810308) 3.int(整數) 4.單目 自右相左 5.函數調用 6.a或b 7.1 8.65,89三、應用題(第78頁)1.10 92.執(zhí)行結果:1100121 5 第4章 順序結構程序設計 一、單項選擇題(第90頁)1-5.dcdad 6-10.bacbb二、填空題(第91頁)1.一 ;2. 5.169000 3.(1)-2002500 (2)i=-200,j=2500 (3)i=-200j=2500 4.a=98,b=765.000000,c=4321.000000
8、5.略 6.0,0,3 7.3 8.scanf("%lf%lf%lf",&a,&b,&c); 9. 13 13.000000,13.000000 10.a=ac;c=ca;a=ac;(這種算法不破壞b的值,也不用定義中間變量。)三、編程題(第92頁)1.仿照教材第27頁例2-1。2.源程序:main()int h,m;scanf("%d:%d",&h,&m);printf("%dn",h*60+m);執(zhí)行結果:9:235633.源程序:main()int a=-10,0,15,34,i;for(
9、i=0;i<=3;i+)printf("%d370c=%g370ft",ai,ai*1.8+32);執(zhí)行結果:-10=14°f 0=32°f 15=59°f 34=93.2°f4.源程序:main()double pi=3.14159265358979,r=5;printf("r=%lg a=%.10lf s=%.10lfn",r,2*pi*r,pi*pi*r);執(zhí)行結果:r=5 a=31.4159265359 s=49.34802200545.源程序:#include "math.h"m
10、ain()double a,b,c;scanf("%lf%lf%lf",&a,&b,&c);if (a+b>c&&a+c>b&&b+c>a) double s=(a+b+c)/2; printf("ss=%.10lfn",sqrt(s*(s-a)*(s-b)*(s-c);else printf("data error!");執(zhí)行結果:4 5 6ss=9.92156741656.源程序:main()int a=3,b=4,c=5;float d=1.2,e=2.2
11、3,f=-43.56;printf("a=%3d,b=%-4d,c=*%dnd=%gne=%6.2fnf=%-10.4f*n",a,b,c,d,e,f);7.源程序:main()int a,b,c,m;scanf("%d %d %d",&a,&b,&c);m=a;a=b;b=c;c=m;printf("%d %d %dn",a,b,c);執(zhí)行結果:5 6 76 7 58.源程序:main()int a,b,c;scanf("%d %d %d",&a,&b,&c);pr
12、intf("average of %d,%d and %d is %.2fn",a,b,c,(a+b+c)/3.);執(zhí)行結果:6 7 9average of 6,7 and 9 is 7.339.不能。修改后的源程序如下:main()int a,b,c,x,y;scanf("%d %d %d",&a,&b,&c);x=a*b;y=x*c;printf("a=%d,b=%d,c=%dn",a,b,c);printf("x=%d,y=%dn",x,y); 6 第5章 選擇結構程序設計 一、單項選
13、擇題(第113頁)1-4.dcbb 5-8.dabd二、填空題(第115頁)1.非0 0 2.k=03.if (abs(x)>4) printf("%d",x);else printf("error!");4.if(x>=1&&x<=10|x>=200&&x<=210)&&x&1)printf("%d",x);5.k=1 (原題最后一行漏了個d,如果認為原題正確,則輸出k=%。)6. 8! right!11 7.$a=0 8.a=2,b=1三、編程題
14、(第116頁)1.有錯。正確的程序如下:main()int a,b,c;scanf("%d,%d,%d",&a,&b,&c);printf("min=%dn",a>b?b>c?c:b:a>c?c:a);2.源程序:main()unsigned long a;scanf("%ld",&a);for(;a;printf("%d",a%10),a/=10);執(zhí)行結果:12345543213.(1)源程序:main()int x,y;scanf("%d"
15、,&x);if (x>-5&&x<0)y=x;if (x>=0&&x<5)y=x-1;if (x>=5&&x<10)y=x+1;printf("%dn",y);(2)源程序:main()int x,y;scanf("%d",&x);if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1; else y=x-1; else y=x;printf("%dn",y);(3)源程序:main()
16、int x,y;scanf("%d",&x);if(x<10) if(x>=5)y=x+1; else if(x>=0)y=x-1; else if(x>-5)y=x;printf("%dn",y);(4)源程序:main()int x,y;scanf("%d",&x);switch(x/5)case -1:if(x!=-5)y=x;break; case 0:y=x-1;break; case 1:y=x+1;printf("%dn",y);4.本題為了避免考慮每月的天數及
17、閏年等問題,故采用面向對象的程序設計?,F給出delphi源程序和c+ builder源程序。delphi源程序:procedure tform1.button1click(sender: tobject);beginedit3.text:=format('%.0f天',strtodate(edit2.text) -strtodate(edit1.text);end;procedure tform1.formcreate(sender: tobject);beginedit2.text:=datetostr(now);button1click(form1)end;c+ build
18、er源程序:void _fastcall tform1:button1click(tobject *sender)edit3->text=inttostr(strtodate(edit2->text)-strtodate(edit1->text)+"天"void _fastcall tform1:formcreate(tobject *sender)edit2->text=datetostr(now();button1click(form1);執(zhí)行結果:(運行于windows下) 5.源程序:main()unsigned a,b,c;printf(&
19、quot;請輸入三個整數:");scanf("%d %d %d",&a,&b,&c);if(a&&b&&c&&a=b&&a=c)printf("構成等邊三角形n"); else if(a+b>c&&a+c>b&&b+c>a) if(a=b|a=c|b=c)printf("構成等腰三角形n"); else printf("構成一般三角形n"); else printf(&
20、quot;不能構成三角形n");執(zhí)行結果:請輸入三個整數:5 6 5構成等腰三角形6.源程序:main()int x,y;scanf("%d",&x);if(x<20)y=1;else switch(x/60)case 0:y=x/10;break; default:y=6;printf("x=%d,y=%dn",x,y);7.源程序:main()unsigned m;float n;scanf("%d",&m);if(m<100)n=0; else if(m>600)n=0.06; els
21、e n=(m/100+0.5)/100;printf("%d %.2f %.2fn",m,m*(1-n),m*n);執(zhí)行結果: 450450 429.75 20.258. 2171天(起始日期和終止日期均算在內) 本題可利用第4小題編好的程序進行計算。把起始日期和終止日期分別打入“生日”和“今日”欄內,單擊“實足年齡”按鈕,將所得到的天數再加上1天即可。9.源程序:#include "math.h"main()unsigned long i;scanf("%ld",&i);printf("%ld %dn",
22、i%10,(int)log10(i)+1);執(zhí)行結果:998877 510.源程序:main()unsigned long i;unsigned j10,m=0;scanf("%ld",&i);for(;i;)jm+=(i+2)%10;i/=10;for(;m;m-)i=i*10+jm-1;printf("%ldn",i);執(zhí)行結果: 6987 8109(注:要加密的數值不能是0或以0開頭。如果要以0開頭需用字符串而不能是整數。) 7 第6章 循環(huán)結構程序設計 一、單項選擇題(第142頁)1-4.bccb 5-8.cbca二、填空題(第143頁)
23、1.原題可能有誤。如無誤,是死循環(huán) 2.原題有誤。如果把b=1后面的逗號改為分號,則結果是8。 3.20 4.11 5. 2.400000 6.*#*#*#$ 7.8 5 2 8.d=1.0 +k k<=n 9.x>=0 x<amin三、編程題(第145頁)1. 源程序:main()int i=1,sum=i;while(i<101)sum+=i=-i-2;sum+=i=-i+2;printf("%dn",sum);執(zhí)行結果:512.源程序:main()double p=0,n=0,f;int i;for(i=1;i<=10;i+) scanf
24、("%lf",&f); if (f>0)p+=f; else n+=f; printf("%lf %lf %lfn",p,n,p+n);3.源程序:main()unsigned a;scanf("%ld",&a);for (;a;printf("%d,",a%10),a/=10);printf("b n");執(zhí)行結果:234566,5,4,3,24.源程序:main()unsigned long a,b,c,i;scanf("%ld%ld",&a
25、,&b);c=a%1000;for(i=1;i<b;i+)c=c*a%1000;if(c<100)printf("0");if(c<10)printf("0");printf("%ldn",c);執(zhí)行結果:129 570095.略6.原題提供的計算e的公式有誤(前面漏了一項1)。正確的公式是e= 1 + 1 + 1/2! + 1/3! + + 1/n! + (1)源程序:main()double e=1,f=1;int n;for(n=1;n<=20;n+)f/=n;e+=f;printf("
26、e=%.14lfn",e);執(zhí)行結果:e=2.71828182845905(2)源程序:main()double e=1,f=1;int n;for(n=1;f>1e-4;n+)f/=n;e+=f;printf("e=%.4fn",e);執(zhí)行結果:e=2.71837.源程序:main()unsigned long a=0,b=1,c=0;int i,d;scanf("%d",&d);for (i=1;i<=(d+2)/3;i+)printf("%10ld%10ld%10ld",a,b,(a+=b+c,b+
27、=c+a,c+=a+b);本題還可以用遞歸算法(效率很低),源程序如下:unsigned long fun(int i)return i<=3?i:fun(i-1)+fun(i-2)+fun(i-3);main()int i,d; scanf("%d",&d);for(i=1;i<=d;i+)printf("%10ld",fun(i);執(zhí)行結果:15 1 2 3 6 11 20 37 68 125 230 423 778 1431 2632 48418.源程序:main()int i;for(i=1010;i<=9876;i+=
28、2)if(i/100%11&&i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=i/10%10&&i/100%10!=i%10)printf(" %d",i);執(zhí)行結果:1024 1026 1028 1032 1034 1036 9874 98769.源程序:main()int i,j,k;printf("apple watermelon pearn");for(i=1;i<=100;i+) for(j=1;j<=10;j+
29、) if(k=100-i-j)*2=400-i*4-j*40) printf("%4d%7d%9dn",i,j,k);執(zhí)行結果:apple watermelon pear 5 5 90 24 4 72 43 3 54 62 2 36 81 1 1810.源程序:#include "stdio.h"#define n 4 /* n為階數,可以改為其他正整數 */main()int m=n*2,i,j;for(i=1;i<m;printf("n"),i+) for(j=1;j<m; putchar(n-abs(i-n)<
30、=abs(j+-n)?' ':'*');如果把n值改為5,則執(zhí)行結果如下: * * * * * * * * 作者:寧西貫通 2006-5-7 23:41 回復此發(fā)言 - 8 說明 注意:上面最后一題的輸出結果應該是由星號組成的一個菱形, 9 第7章 數 組 一、單項選擇題(第192頁)1-4.bbcc 5-8.aaba二、填空題(第194頁)1.1 2 4 8 16 32 64 128 256 5122. aage+ i=18;i<26 3. break i=84. ai>bj i<3 j<5 5. bj=aj0 bj<ajk 6.
31、ak+=aj三、編程題(第196頁)1.源程序:main()int a44,i,j,s=0;for(i=0;i<4;i+)for(j=0;j<4;j+)scanf("%d",&aij);for(i=0;i<4;i+)for(j=0;j<4;j+)if(i=j|i+j=3)s+=aij;printf("%dn",s); /* 注:5×5矩陣不能照此計算! */執(zhí)行結果:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16682. 源程序:main()int i,a36;a0=2;for(i=
32、1;i<=29;i+)ai=ai-1+2;for(;i<=35;i+)ai=a(i-30)*5+2;for(i=0;i<=35;i+)printf("%dt",ai);執(zhí)行結果:2 4 6 8 10 12 14 16 18 2022 24 26 28 30 32 34 36 38 4042 44 46 48 50 52 54 56 58 606 16 26 36 46 563. 源程序:#include "stdlib.h"#include "time.h"main()int a30,i,m=0;randomize(
33、);for(i=0;i<=29;i+) ai=rand(); if(m<ai)m=ai; printf("%dt",ai);for(i=0;i<=29;i+)if(ai=m)ai=-1;printf("n-n");for(i=0;i<=29;i+) if(ai)printf("%dt",ai);printf("n");執(zhí)行結果:20679 29377 18589 9034 27083 4959 3438 5241 32278 2334432499 29305 22340 5927 13031
34、 2161 2583 31855 22977 142834851 22038 6992 11394 20887 27381 6293 18347 16414 10210-20679 29377 18589 9034 27083 4959 3438 5241 32278 2334429305 22340 5927 13031 2161 2583 31855 22977 14283 485122038 6992 11394 20887 27381 6293 18347 16414 102104源程序:main()int i,n=0,b16;scanf("%d",&i);
35、for(;i;i>>=1)bn+=i&1;for(;n;)printf("%d",b-n);執(zhí)行結果:987610011010010100本題也可以不用數組。源程序如下:#include "stdio.h"main()int i,n;scanf("%d",&i);for(n=16;n;n-) asm rol i,1 putchar(i&1|48); /* rol是循環(huán)左移的匯編指令 */5. 源程序:#include "stdlib.h"#include "time.h
36、"#define m 5#define n 6main()int amn,i,j,tm;randomize();/*生成m行n列隨機數*/for(i=0;i<m;printf("n"),ti+=0) for(j=0;j<n;j+) printf("%4d",aij=random(50);/*找出每行的最小數,tm是第m行的最小數所在的列數*/for(i=0;i<m;i+) for(j=0;j<n;j+) if(aiti>aij)ti=j;/*比較每個最小數在其所在的列上是否也是最小*/for(j=0;j<m;
37、j+) for(i=0;i<m;i+) if(i=j)continue; if(ajtj>aitj) tj=-1;break; printf("-n");/*輸出在行和列上均為最小的數*/for(i=0;i<m;i+) if(ti!=-1) printf("a%d,%d=%dn",i,ti,aiti);執(zhí)行結果: 13 19 13 20 0 1 20 41 6 16 35 30 3 5 37 8 23 15 6 36 24 29 18 1 1 5 28 21 46 34-a0,4=0a1,2=6a3,5=1a4,0=16. 源程序:#i
38、nclude "stdlib.h"#include "time.h"#define m 5#define n 7main()int amn,i,j,t=0;randomize();for(i=0;i<m;i+) ain-1=0; for(j=0;j<n-1;j+) printf("%4d",aij=random(91)+10); ain-1+=aij; printf("%4dn",ain-1);for(i=1;i<m;i+) if(ain-1>atn-1)t=i;if(t)for(j=0;j
39、<n;j+) i=a0j;a0j=atj;atj=i;printf("-n");for(i=0;i<m;printf("n"),i+) 10 第7章 數 組 for(j=0;j<n;j+) printf("%4d",aij);執(zhí)行結果: 89 17 32 95 35 20 288 39 48 22 27 73 22 231 51 87 39 71 84 46 378 84 94 97 77 27 26 405 69 50 56 89 37 46 347- 84 94 97 77 27 26 405 39 48 22
40、27 73 22 231 51 87 39 71 84 46 378 89 17 32 95 35 20 288 69 50 56 89 37 46 3477. 源程序:#include "stdlib.h"#include "time.h"#define m 5#define n 6main()int amn,i,j;struct dataint value,x,y;max,min;max.value=0;min.value=100;randomize();for(i=0;i<m;printf("n"),i+) for(j=0
41、;j<n;j+) printf("%4d",aij=random(100)+1); if(max.value<aij) max.value=aij;max.x=i;max.y=j; if(min.value>aij) min.value=aij;min.x=i;min.y=j; printf("-n");i=a0n-1;a0n-1=max.value;amax.xmax.y=i;i=am-10;am-10=min.value;amin.xmin.y=i;for(i=0;i<m;printf("n"),i+) f
42、or(j=0;j<n;j+) printf("%4d",aij);執(zhí)行結果: 51 53 74 65 30 40 30 26 50 6 61 27 47 16 54 58 76 19 57 74 44 92 71 48 73 57 60 32 73 67- 51 53 74 65 30 92 30 26 50 73 61 27 47 16 54 58 76 19 57 74 44 40 71 48 6 57 60 32 73 679. 源程序:main()char s255;int i,j,b=1;printf("input a string:")
43、;scanf("%s",s);i=strlen(s);for(j=1;j<=i/2;j+)b=b&&(sj-1=si-j);printf(b?"yesn":"non");執(zhí)行結果:input a string:levelyes10. 源程序:main()char s255,t,max=0,min=0,l,i;printf("input a string(length>4):");gets(s);l=strlen(s);for(i=0;i<l;i+)if(smax<si)max
44、=i;if(smin>si)min=i;t=s1;s1=smax;smax=t;if(min=1)min=max;t=sl-2;sl-2=smin;smin=t;printf("%sn",s);執(zhí)行結果:input a string(length>4):c+buildercu+beild+r11. 源程序:main()char m1310="*","january","february","march","april","may","
45、june","july","august","september","october","november","december"int i,j,k,a,s,n;printf("please input an integer(100.999):");scanf("%d",&n);printf("%d:%d+%d+%d=%d, %d%13=%d, %sn", n,i,j,k,s,s,a,ma=(s=(
46、i=n/100)+(j=n/10%10)+(k=n%10)%13);執(zhí)行結果:please input an integer(100.999):539539:5+3+9=17, 17%13=4, april 11 第8章 函 數 一、單項選擇題(第241頁)1-5.bccaa 6-10.ccddd 11-15.acacb二、填空題(第243頁)1.看不出原題的意圖。因為要計算1n的累加和,n應是一個1的正整數。可是題目中卻出現了n=0的情況。除非另加規(guī)定當n=0時1n的累加和為0,或者把原題中的計算式改為計算0n的累加和。據此猜測,原題應填為:return(0) return(n+sum(n-1)根據題意,如下程序較為合理:int sum(int n)if(n<0)return(-1); /* -1是出錯標志 */ else if(n=1)return(1); else return(n+sum(n-1);2. return(1) return(n*facto(n-1)三、編程題(第244頁)3.源程序:main()int i,a,b,c;for(i=100;i<999;i+)if(a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*c=i)printf("%dt",i)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二年級下冊數學教案 - 第三單元 第一節(jié)【第一課時】 數一數(一)(認識并感受“千”1)北師大版
- 2025年師范大學協議管理辦法
- 勞動協議:勞務分包協議(2025年版)
- 2024年水利機械項目資金需求報告代可行性研究報告
- 2024年高性能陶瓷刀具材料項目資金需求報告代可行性研究報告
- 全國清華版信息技術小學三年級上冊新授課 第11課 智能輸詞句-詞組和整句輸入 教學設計
- 2025年度手房交易資金監(jiān)管補充協議
- 2025年度大米產業(yè)投資基金簡易合作協議
- 2025年度商標同授權及品牌授權許可合同
- 二零二五年度網紅直播帶貨營銷推廣服務合同
- 淘寶客服轉正述職報告
- 提升電子商務的發(fā)展邏輯
- (完整)特種設備專項應急預案
- 小學體質測試標準
- 機床安全操作培訓課件
- 自動化電氣控制方案
- 臍疝護理查房課件
- XX學校學校集體備課實施方案細則、方案、計劃、制度、總結(全套資料)
- 開展去向不明人員專項工作方案
- 南方談話學習匯報
- 高處作業(yè)吊籃施工安全監(jiān)理實施細則
評論
0/150
提交評論