久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

《C語言程序設計教程(第二版)》習題答案

時間:2019-05-12 17:24:04下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《《C語言程序設計教程(第二版)》習題答案》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《《C語言程序設計教程(第二版)》習題答案》。

第一篇:《C語言程序設計教程(第二版)》習題答案

《C語言程序設計教程(第二版)》習題答案

1.本習題答案是我自己做的,錯誤和疏漏在所難免。編程題全部調試通過,但選擇題和填空題不敢保證全對。

2.凡未指明解題所用的程序設計語言的,均指C語言。

3.凡未指明執行程序所需的操作系統的,均可在DOS下執行。4.本文中文字下面劃線的表示輸入。

第1章 程序設計基礎知識

一、單項選擇題(第23頁)1-4.CBBC 5-8.DACA

二、填空題(第24頁)1.判斷條件 2.面向過程編程 3.結構化 4.程序 5.面向對象的程序設計語言 7.有窮性 8.直到型循環 9.算法 10.可讀性 11.模塊化 12.對問題的分析和模塊的劃分

三、應用題(第24頁)2.源程序: main(){int i,j,k;/* i:公雞數,j:母雞數,k:小雞數的1/3 */ printf(“cock hen chick ”);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

%d ”,i,j,k*3);} 執行結果: cock hen chick

3.現計算斐波那契數列的前20項。

遞推法 源程序: main(){long a,b;int i;a=b=1;for(i=1;i<=10;i++)/*要計算前30項,把10改為15。*/ {printf(“%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));} 執行結果:

233 377 610 987 1597 2584 4181 6765 4.源程序:

#include “math.h”;main(){double x,x0,deltax;x=1.5;do {x0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;}while(deltax>1e-12);printf(“%.10f ”,x);} 執行結果: 1.3247179572

5.源程序略。(分子、分母均構成斐波那契數列)結果是32.66026079864 6.源程序: main(){int a,b,c,m;printf(“Please input a,b and c:”);scanf(“%d %d %d”,&a,&b,&c);if(a

Please input a,b and c:123 456 789 789 456 123 7.源程序: main(){int a;scanf(“%d”,&a);printf(a%21==0?“Yes”:“No”);} 執行結果: 42 Yes 第2章 C語言概述

一、單項選擇題(第34頁)1-4.BDCB 5-8.AABC

二、填空題(第35頁)1.主 2.C編譯系統 3.函數 函數 4.輸入輸出 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);} 執行結果: 12 34 34 12 第3章 數據類型與運算規則

一、單項選擇題(第75頁)1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB

二、填空題(第77頁)1.補碼

2.±(10-308~10308)3.int(整數)4.單目 自右相左

5.函數調用

6.a或b

7.1

8.65,89

三、應用題(第78頁)1.10 9 2.執行結果: 11 0 0 12 1 第4章 順序結構程序設計

一、單項選擇題(第90頁)1-5.DCDAD 6-10.BACBB

二、填空題(第91頁)1.一 ;2.5.169000 3.(1)-2002500(2)I=-200,j=2500(3)i=-200 j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3

7.3

8.scanf(“%lf%lf%lf”,&a,&b,&c);9.13 13.000000,13.000000 10.a=a^c;c=c^a;a=a^c;(這種算法不破壞b的值,也不再定義中間變量。)

三、編程題(第92頁)1.仿照教材第27頁例2-1。2.源程序: main(){int h,m;scanf(“%d:%d”,&h,&m);printf(“%d ”,h*60+m);} 執行結果: 9:23 563 3.源程序: main(){int a[]={-10,0,15,34},i;for(i=0;i<=3;i++)printf(“%d370C=%g370Ft”,a[i],a[i]*1.8+32);} 執行結果:

-10℃=14°F

0℃=32°F

15℃=59°F

34℃=93.2°F 4.源程序: main(){double pi=3.14***9,r=5;printf(“r=%lg A=%.10lf S=%.10lf ”,r,2*pi*r,pi*pi*r);} 執行結果:

r=5 A=31.4159265359 S=49.3480220054 5.源程序:

#include “math.h”;main(){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=%.10lf ”,sqrt(s*(s-a)*(s-b)*(s-c)));} else printf(“Data error!”);} 執行結果: 4 5 6 SS=9.9215674165 6.源程序: main(){int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56;printf(“a=%3d,b=%-4d,c=**%d d=%g e=%6.2f f=%-10.4f** ”,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 %d ”,a,b,c);} 執行結果: 5 6 7 6 7 5 8.源程序: main(){int a,b,c;scanf(“%d %d %d”,&a,&b,&c);printf(“average of %d,%d and %d is %.2f ”,a,b,c,(a+b+c)/3.);執行結果: 6 7 9 average of 6,7 and 9 is 7.33 9.不能。修改后的源程序如下: 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=%d ”,a,b,c);printf(“x=%d,y=%d ”,x,y);}

第5章 選擇結構程序設計

一、單項選擇題(第113頁)1-4.DCBB 5-8.DABD

二、填空題(第115頁)1.非0 0

2.k==0 3.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

三、編程題(第116頁)1.有錯。正確的程序如下: main(){int a,b,c;scanf(“%d,%d,%d”,&a,&b,&c);printf(“min=%d ”,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);} 執行結果: 12345 54321 3.(1)源程序: main(){int x,y;scanf(“%d”,&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(“%d ”,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(“%d ”,y);}(3)源程序: main(){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(“%d ”,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(“%d ”,y);} 4.本題為了避免考慮每月的天數及閏年等問題,故采用面向對象的程序設計。現給出Delphi源程序和C++ Builder源程序。Delphi源程序: procedure TForm1.Button1Click(Sender: TObject);begin edit3.Text:=format('%.0f天',[strtodate(edit2.text)-strtodate(edit1.text)]);end;procedure TForm1.FormCreate(Sender: TObject);begin Edit2.Text:=datetostr(now);button1click(form1)end;C++ Builder源程序:

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);} 執行結果:(運行于Windows下)

5.源程序: main(){unsigned a,b,c;printf(“請輸入三個整數:”);scanf(“%d %d %d”,&a,&b,&c);if(a&&b&&c&&a==b&&a==c)printf(“構成等邊三角形 ”);else if(a+b>c&&a+c>b&&b+c>a)if(a==b||a==c||b==c)printf(“構成等腰三角形 ”);

else printf(“構成一般三角形 ”);

else printf(“不能構成三角形 ”);} 執行結果:

請輸入三個整數: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=%d ”,x,y);} 7.源程序: main(){unsigned m;float n;scanf(“%d”,&m);if(m<100)n=0;else if(m>600)n=0.06;

else n=(m/100+0.5)/100;printf(“%d %.2f %.2f ”,m,m*(1-n),m*n);} 執行結果:

450 450 429.75 20.25 8.2171天(起始日期和終止日期均算在內)

本題可利用第4小題編好的程序進行計算。把起始日期和終止日期分別打入“生日”和“今日”欄內,單擊“實足年齡”按鈕,將所得到的天數再加上1天即可。9.源程序:

#include “math.h”;main(){unsigned long i;scanf(“%ld”,&i);printf(“%ld %d ”,i%10,(int)log10(i)+1);} 執行結果: 99887 7 5 10.源程序: main(){unsigned long i;unsigned j[10],m=0;scanf(“%ld”,&i);for(;i;){j[m++]=(i+2)%10;i/=10;} for(;m;m--)i=i*10+j[m-1];printf(“%ld ”,i);} 執行結果:

6987 8109(注:要加密的數值不能是0或以0開頭)第6章 循環結構程序設計

一、單項選擇題(第142頁)1-4.BCCB 5-8.CBCA

二、填空題(第143頁)1.原題可能有誤。如無誤,是死循環

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

三、編程題(第145頁)1.源程序: main(){int i=1,sum=i;while(i<101){sum+=i=-i-2;sum+=i=-i+2;} printf(“%d ”,sum);} 執行結果: 51 2.源程序: main(){double p=0,n=0,f;int i;for(i=1;i<=10;i++){scanf(“%lf”,&f);

if(f>0)p+=f;else n+=f;} printf(“%lf %lf %lf ”,p,n,p+n);} 3.源程序: main(){unsigned long a;scanf(“%ld”,&a);for(;a;printf(“%d,”,a%10),a/=10);printf(“b ”);} 執行結果: 23456 6,5,4,3,2 4.源程序: main(){unsigned long a,b,c,i;scanf(“%ld%ld”,&a,&b);c=a%1000;for(i=1;i

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(“e=%.14lf ”,e);} 執行結果:

e=2.7***05(2)源程序: main(){double e=1,f=1;int n;for(n=1;f>1e-4;n++){f/=n;e+=f;} printf(“e=%.4f ”,e);} 執行結果: e=2.7183 7.源程序: 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+=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));} 執行結果: 15

125

230

423

778 1431 2632 4841 8.源程序: main(){int i;for(i=1010;i<=9876;i+=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);} 執行結果:

1024 1026 1028 1032 1034 1036 …… …… 9874 9876 9.源程序: main(){int i,j,k;printf(“apple watermelon pear ”);for(i=1;i<=100;i++)for(j=1;j<=10;j++)

if((k=100-i-j)*2==400-i*4-j*40)

printf(“%4d%7d%9d ”,i,j,k);} 執行結果:

apple watermelon pear

10.源程序:

#include “stdio.h”;#define N 4

/* N為階數,可以改為其他正整數main(){int m=N*2,i,j;for(i=1;i

putchar(N-abs(i-N)<=abs(j++-N)?' ':'*'));} 如果把N值改為5,則執行結果如下:

*

***

***** ******* ********* *******

*****

***

* 第7章 數 組

一、單項選擇題(第192頁)1-4.BBCC 5-8.AABA

二、填空題(第194頁)1.1 2 4 8 16 32 64 128 256 512(每個數占一行)2.①a[age]++ ②i=18;i<26

3.①break ②i==8 4.①a[i]>b[j] ②i<3 ③j<5

5.①b[j]=a[j][0] ②b[j]

*/

三、編程題(第196頁)1.源程序: main(){int a[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)scanf(“%d”,&a[i][j]);for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s+=a[i][j];printf(“%d ”,s);} /* 注:5×5矩陣不能照此計算!*/ 執行結果: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 68 2.源程序: main(){int i,a[36];a[0]=2;for(i=1;i<=29;i++)a[i]=a[i-1]+2;for(;i<=35;i++)a[i]=a[(i-30)*5+2];for(i=0;i<=35;i++)printf(“%dt”,a[i]);} 執行結果: 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 6 26 36 46 56 3.源程序:

#include “stdlib.h” #include “time.h” main(){int a[30],i,m=0;randomize();for(i=0;i<=29;i++){a[i]=rand();

if(m

printf(“%dt”,a[i]);} for(i=0;i<=29;i++)if(a[i]==m)a[i]=-1;printf(“-----------------”);for(i=0;i<=29;i++)if(~a[i])printf(“%dt”,a[i]);printf(“ ”);} 執行結果:

20679 29377 18589 9034 27083 4959 3438 5241 32278 23344 32499 29305 22340 5927 13031 2161 2583 31855 22977 14283 4851 22038 6992 11394 20887 27381 6293 18347 16414 10210-----------------20679 29377 18589 9034 27083 4959 3438 5241 32278 23344 29305 22340 5927 13031 2161 2583 31855 22977 14283 4851 22038 6992 11394 20887 27381 6293 18347 16414 10210 4.源程序: main(){int i,n=0,b[16];scanf(“%d”,&i);for(;i;i>>=1)b[n++]=i&1;for(;n;)printf(“%d”,b[--n]);} 執行結果: 9876 10011010010100 本題也可以不用數組。源程序如下: #include “stdio.h” main(){int i,n;scanf(“%d”,&i);for(n=16;n;n--){asm ROL i,1

putchar(i&1|48);} } /* ROL是循環左移的匯編指令

*/ 5.源程序:

#include “stdlib.h” #include “time.h” #define M 5 #define N 6 main(){int a[M][N],i,j,t[M];randomize();/*生成M行N列隨機數*/ for(i=0;i

printf(“%4d”,a[i][j]=random(50));/*找出每行的最小數,t[M]是第M行的最小數所在的列數*/ for(i=0;i

if(a[i][t[i]]>a[i][j])t[i]=j;/*比較每個最小數在其所在的列上是否也是最小*/ for(j=0;j

for(i=0;i

{if(i==j)continue;

if(a[j][t[j]]>a[i][t[j]])

{t[j]=-1;break;}

} printf(“-------------------”);/*輸出在行和列上均為最小的數*/ for(i=0;i

printf(“a[%d,%d]=%d ”,i,t[i],a[i][t[i]]);} 執行結果: 19 13 20

0 41 16 35 30 37 23 15

36 24 29 18 28 21 46 34-------------------a[0,4]=0 a[1,2]=6 a[3,5]=1 a[4,0]=1 6.源程序:

#include “stdlib.h” #include “time.h” #define M 5 #define N 7 main(){int a[M][N],i,j,t=0;randomize();for(i=0;i

for(j=0;j

{printf(“%4d”,a[i][j]=random(91)+10);

a[i][N-1]+=a[i][j];}

printf(“%4d ”,a[i][N-1]);} for(i=1;ia[t][N-1])t=i;if(t)for(j=0;j

printf(“%4d”,a[i][j]);} 執行結果:

17 32 95 35 20 288

48 22 27 73 22 231

87 39 71 84 46 378

94 97 77 27 26 405

50 56 89 37 46 347-----------------

94 97 77 27 26 405

48 22 27 73 22 231

87 39 71 84 46 378

17 32 95 35 20 288

50 56 89 37 46 347 7.源程序:

#include “stdlib.h” #include “time.h” #define M 5 #define N 6 main(){int a[M][N],i,j;struct data{int value,x,y;}max,min;max.value=0;min.value=100;randomize();for(i=0;i

for(j=0;j

{printf(“%4d”,a[i][j]=random(100)+1);

if(max.value

{max.value=a[i][j];max.x=i;max.y=j;}

if(min.value>a[i][j])

{min.value=a[i][j];min.x=i;min.y=j;}

} printf(“-----------------”);i=a[0][N-1];a[0][N-1]=max.value;a[max.x][max.y]=i;i=a[M-1][0];a[M-1][0]=min.value;a[min.x][min.y]=i;for(i=0;i

printf(“%4d”,a[i][j]);} 執行結果:

53 74 65 30 40 26 50 61 27

16 54 58 76 19

74 44 92 71 48

57 60 32 73 67-----------------

53 74 65 30 92 26 50 73 61 27

16 54 58 76 19

74 44 40 71 48

57 60 32 73 67 9.源程序: main(){char s[255];int i,j,b=1;printf(“Input a string:”);scanf(“%s”,s);i=strlen(s);for(j=1;j<=i/2;j++)b=b&&(s[j-1]==s[i-j]);printf(b?“Yes ”:“No ”);} 執行結果:

Input a string:level Yes 10.源程序: main(){char s[255],t,max=0,min=0,l,i;printf(“Input a string(length>4):”);gets(s);l=strlen(s);for(i=0;is[i])min=i;} t=s[1];s[1]=s[max];s[max]=t;if(min==1)min=max;t=s[l-2];s[l-2]=s[min];s[min]=t;printf(“%s ”,s);} 執行結果:

Input a string(length>4):C++Builder Cu+Beild+r 11.源程序: main(){char m[13][10]={“****”,“January”,“February”,“March”, “April”,“May”,“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, %s ”, n,i,j,k,s,s,a,m[a=((s=(i=n/100)+(j=n/10%10)+(k=n%10))%13)]);} 執行結果:

Please input an integer(100..999):539 539:5+3+9=17, 17%13=4, April 第8章 函

一、單項選擇題(第241頁)1-5.BCCAA 6-10.CCDDD 11-15.ACACB

二、填空題(第243頁)1.看不出原題的意圖。因為要計算1~n的累加和,n應是一個≥1的正整數。可是題目中卻出現了n=0的情況。除非另加規定當n=0時1~n的累加和為0,或者把原題中的計算式改為計算0~n的累加和。據此猜測,原題應填為:①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);} 執行結果:

153

370

371

407 8.源程序(非遞歸算法):

#define P 13 /* P可以改為其他正整數

*/ main(){int a[P],r,c;for(r=0;r<=P;r++){a[r]=1;

for(c=r-1;c>=1;a[c--]+=a[c-1]);

printf(“%*d”,(P-r)*3+1,a[0]);

for(c=1;c<=r;printf(“%6d”,a[c++]));

printf(“ ”);} } 執行結果:

126

126

120

210

252

210

120

165

330

462

462

330

165

220

495

792

924

792

495

220

286

715 1287 1716 1716 1287

715

286

9.源程序(遞歸算法): #include “stdio.h” void printOCT(unsigned long n){unsigned long i;if(i=n>>3)printOCT(i);putchar((n&7)+48);} main(){unsigned long i;scanf(“%ld”,&i);printOCT(i);} 執行結果: 1234567890 11145401322 本題也可以不用遞歸算法,源程序請參考第7章第三題4。第9章 指

一、單項選擇題(第276頁)1-5.DCDAC 6-10.CCABC 11-16.AABBB 16-20.DCDBD

二、填空題(第278頁)1.①int * ②*z

2.*p++

3.①'

主站蜘蛛池模板: 欧美成人精品高清在线播放| 和岳每晚弄的高潮嗷嗷叫视频| 日韩午夜理论片 中文字幕| 国产特级毛片aaaaaa高清| 欧美日韩精品一区二区三区高清视频| 中文在线а√在线天堂中文| 老头巨大挺进莹莹的体内免费视频| 久久久精品波多野结衣| 99国产精品人妻噜啊噜| 免费无码精品黄av电影| 国产亚洲精品久久久闺蜜| 久久国产福利国产秒拍| 综合久久婷婷综合久久| 涩涩鲁亚洲精品一区二区| 久久久99精品成人片中文字幕| 精品亚洲一区二区三区在线观看| 女人高潮内射99精品| 亚洲中文字幕一二三四区苍井空| 少妇极品熟妇人妻200片| 77777_亚洲午夜久久多人| 国产精品女人呻吟在线观看| 色噜噜狠狠爱综合视频| 精品日产一卡2卡三卡4卡在线| 国产无遮挡A片又黄又爽小直播| 亚洲日韩精品一区二区三区| 国内精品免费久久久久电影院97| 色婷婷综合久久久中文字幕| 国产 高潮 抽搐 正在播放| 精品国产乱码久久久久久软件大全| 欧美牲交a欧牲交aⅴ久久| 少妇高潮喷水正在播放| 亚洲精品日韩av专区| 亚洲gv猛男gv无码男同| 亚洲精品国产肉丝袜久久| 动漫av网站免费观看| 18禁勿入网站入口永久| 无翼乌工口肉肉无遮挡无码18| 亚洲一区爱区精品无码| 日产国产精品亚洲系列| 大学生粉嫩无套流白浆| 国产极品精品自在线|