c語言程序設計各章題目答案,c語言程序設計實用教程課後題答案

本文目錄一覽:

C語言程序設計教程答案~有追加懸賞100分!

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

說 明

1. 本文所指的《C語言程序設計教程(第二版)》是李鳳霞主編、北京理

工大學出版社出版的,綠皮。

2 第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\n”);

for(i=1;i=20;i++)

for(j=1;j=33;j++)

for(k=1;k=33;k++)

if (i+j+k*3==100i*5+j*3+k==100)

printf(” %d %d %d\n”,i,j,k*3);}

執行結果:

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。*/

{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));}

執行結果:

1 1 2 3 5 8 13 21 34 55

89 144 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(deltax1e-12);

printf(“%.10f\n”,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(ab){m=a;a=b;b=m;}

if(ac){m=a;a=c;c=m;}

if(bc){m=b;b=c;c=m;}

printf(“%d %d %d\n”,a,b,c);}

執行結果:

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

3 第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

4 第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~10^308) 3.int(整數) 4.單目 自右相左 5.函數調用 6.a或b 7.1 8.65,89

三、應用題(第78頁)

1.10 9

2.執行結果:

11

12

1

5 第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\n”,h*60+m);}

執行結果:

9:23

563

3.源程序:

main()

{int a[]={-10,0,15,34},i;

for(i=0;i=3;i++)

printf(“%d\370C=%g\370F\t”,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.14159265358979,r=5;

printf(“r=%lg A=%.10lf S=%.10lf\n”,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+bca+cbb+ca)

{double s=(a+b+c)/2;

printf(“SS=%.10lf\n”,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\nd=%g\ne=%6.2f\nf=%-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 %d\n”,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\n”,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\n”,a,b,c);

printf(“x=%d,y=%d\n”,x,y);}

6 第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=1x=10||x=200x=210)x1)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\n”,ab?bc?c:b:ac?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×0)y=x;

if (x=0x5)y=x-1;

if (x=5×10)y=x+1;

printf(“%d\n”,y);}

(2)源程序:

main()

{int x,y;

scanf(“%d”,x);

if(x10) if(x-5) if(x=0) if(x=5)y=x+1;

else y=x-1; else y=x;

printf(“%d\n”,y);}

(3)源程序:

main()

{int x,y;

scanf(“%d”,x);

if(x10) if(x=5)y=x+1;

else if(x=0)y=x-1;

else if(x-5)y=x;

printf(“%d\n”,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\n”,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(abca==ba==c)printf(“構成等邊三角形\n”);

else if(a+bca+cbb+ca)

if(a==b||a==c||b==c)printf(“構成等腰三角形\n”);

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

else printf(“不能構成三角形\n”);}

執行結果:

請輸入三個整數:5 6 5

構成等腰三角形

6.源程序:

main()

{int x,y;

scanf(“%d”,x);

if(x20)y=1;

else switch(x/60)

{case 0:y=x/10;break;

default:y=6;}

printf(“x=%d,y=%d\n”,x,y);}

7.源程序:

main()

{unsigned m;float n;

scanf(“%d”,m);

if(m100)n=0;

else if(m600)n=0.06;

else n=(m/100+0.5)/100;

printf(“%d %.2f %.2f\n”,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\n”,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\n”,i);}

執行結果:

6987

8109

(註:要加密的數值不能是0或以0開頭。如果要以0開頭需用字符串而不能是整數。)

7 第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 ②xamin

三、編程題(第145頁)

1. 源程序:

main()

{int i=1,sum=i;

while(i101){sum+=i=-i-2;sum+=i=-i+2;}

printf(“%d\n”,sum);}

執行結果:

51

2.源程序:

main()

{double p=0,n=0,f;int i;

for(i=1;i=10;i++)

{scanf(“%lf”,f);

if (f0)p+=f; else n+=f;}

printf(“%lf %lf %lf\n”,p,n,p+n);}

3.源程序:

main()

{unsigned a;

scanf(“%ld”,a);

for (;a;printf(“%d,”,a%10),a/=10);

printf(“\b \n”);}

執行結果:

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;ib;i++)c=c*a%1000;

if(c100)printf(“0”);

if(c10)printf(“0”);

printf(“%ld\n”,c);}

執行結果:

129 57

009

5.略

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\n”,e);}

執行結果:

e=2.71828182845905

(2)源程序:

main()

{double e=1,f=1;int n;

for(n=1;f1e-4;n++){f/=n;e+=f;}

printf(“e=%.4f\n”,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

1 2 3 6 11 20 37 68

125 230 423 778 1431 2632 4841

8.源程序:

main()

{int i;

for(i=1010;i=9876;i+=2)

if(i/100%11i%100%11i/10%100%11i/1000!=i%10i/1000!=i/10%10i/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\n”);

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\n”,i,j,k);}

執行結果:

apple watermelon pear

5 5 90

24 4 72

43 3 54

62 2 36

81 1 18

10.源程序:

#include “stdio.h”;

#define N 4 /* N為階數,可以改為其他正整數 */

main()

{int m=N*2,i,j;

for(i=1;im;printf(“\n”),i++)

for(j=1;jm;

putchar(N-abs(i-N)=abs(j++-N)?’ ‘:’*’));}

如果把N值改為5,則執行結果如下:

*

***

*****

*******

*********

*******

*****

***

*

作者:寧西貫通 2006-5-7 23:41 回復此發言

——————————————————————————–

8 說明

注意:上面最後一題的輸出結果應該是由星號組成的一個菱形,

9 第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;i26

3. ①break ②i==8

4. ①a[i]b[j] ②i3 ③j5

5. ①b[j]=a[j][0] ②b[j]a[j][k] 6.a[k++]=a[j]

三、編程題(第196頁)

1.源程序:

main()

{int a[4][4],i,j,s=0;

for(i=0;i4;i++)

for(j=0;j4;j++)

scanf(“%d”,a[i][j]);

for(i=0;i4;i++)

for(j=0;j4;j++)

if(i==j||i+j==3)s+=a[i][j];

printf(“%d\n”,s);} /* 注:5×5矩陣不能照此計算! */

執行結果:

1 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(“%d\t”,a[i]);}

執行結果:

2 4 6 8 10 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 16 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(ma[i])m=a[i];

printf(“%d\t”,a[i]);}

for(i=0;i=29;i++)if(a[i]==m)a[i]=-1;

printf(“\n—————–\n”);

for(i=0;i=29;i++)

if(~a[i])printf(“%d\t”,a[i]);

printf(“\n”);}

執行結果:

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++]=i1;

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(i1|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;iM;printf(“\n”),t[i++]=0)

for(j=0;jN;j++)

printf(“%4d”,a[i][j]=random(50));

/*找出每行的最小數,t[M]是第M行的最小數所在的列數*/

for(i=0;iM;i++)

for(j=0;jN;j++)

if(a[i][t[i]]a[i][j])t[i]=j;

/*比較每個最小數在其所在的列上是否也是最小*/

for(j=0;jM;j++)

for(i=0;iM;i++)

{if(i==j)continue;

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

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

}

printf(“——————-\n”);

/*輸出在行和列上均為最小的數*/

for(i=0;iM;i++)

if(t[i]!=-1)

printf(“a[%d,%d]=%d\n”,i,t[i],a[i][t[i]]);

}

執行結果:

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

——————-

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;iM;i++)

{a[i][N-1]=0;

for(j=0;jN-1;j++)

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

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

printf(“%4d\n”,a[i][N-1]);}

for(i=1;iM;i++)

if(a[i][N-1]a[t][N-1])t=i;

if(t)for(j=0;jN;j++)

{i=a[0][j];a[0][j]=a[t][j];a[t][j]=i;}

printf(“—————–\n”);

for(i=0;iM;printf(“\n”),i++)

10 第7章 數 組

for(j=0;jN;j++)

printf(“%4d”,a[i][j]);

}

執行結果:

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 27 73 22 231

51 87 39 71 84 46 378

89 17 32 95 35 20 288

69 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;iM;printf(“\n”),i++)

for(j=0;jN;j++)

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

if(max.valuea[i][j])

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

if(min.valuea[i][j])

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

}

printf(“—————–\n”);

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;iM;printf(“\n”),i++)

for(j=0;jN;j++)

printf(“%4d”,a[i][j]);

}

執行結果:

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 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\n”:”No\n”);}

執行結果:

Input a string:level

Yes

10. 源程序:

main()

{char s[255],t,max=0,min=0,l,i;

printf(“Input a string(length4):”);

gets(s);

l=strlen(s);

for(i=0;il;i++)

{if(s[max]s[i])max=i;if(s[min]s[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\n”,s);}

執行結果:

Input a string(length4):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”, 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

11 第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;i999;i++)

if((a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*c==i)

printf(“%d\t”,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(“\n”);}

}

執行結果:

(應該排列成一個三角形,是貼吧造成現在這個樣子的,不是程序有問題)

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

1 8 28 56 70 56 28 8 1

1 9 36 84 126 126 84 36 9 1

1 10 45 120 210 252 210 120 45 10 1

1 11 55 165 330 462 462 330 165 55 11 1

1 12 66 220 495 792 924 792 495 220 66 12 1

1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1

9.源程序(遞歸算法):

#include “stdio.h”

void printOCT(unsigned long n)

{unsigned long i;

if(i=n3)printOCT(i);

putchar((n7)+48);}

main()

{unsigned long i;

scanf(“%ld”,i);

printOCT(i);}

執行結果:

1234567890

11145401322

本題也可以不用遞歸算法,源程序請參考第7章第三題4。

12 回復:【C語言】《C語言程序設計教程(第二版)》習題答案

但是不同時間印刷的版本課後題不太一樣呢,象我們的是1999年12月第2版,2005年12月第69次印刷的。沒有選擇填空,應用題和樓主不知道有多少相同的,因為看不到原題。這個比較麻煩呢。

作者:210.77.204.* 2006-5-9 18:38 回復此發言

——————————————————————————–

13 回復:【C語言】《C語言程序設計教程(第二版)》習題答案

你對照一下主編和出版社,看看對嗎?(見說明的第一條。)

我不是說叫你有問題另發帖子嗎?

14 第9章 指 針

一、單項選擇題(第276頁)

1-5.DCDAC 6-10.CCABC 11-16.AABBB 16-20.DCDBD

二、填空題(第278頁)

1.①int * ②*z

2.*p++

3.①’\0′ ②++

4.①q=p+1 ②qp+10 ③*qmax ④*qmin

三、編程題(第280頁)

7.源程序:

main()

{int i=0;char c[20];

do{scanf(“%s”,c);i++;}

while(strcmp(c,”stop”));

printf(“%d\n”,i);}

執行結果:

This car ran form Nanyang

to Luoyang without a stop

10

9.源程序:

main()

{char s[255],c[255]={0};int i;

gets(s);

for(i=0;s[i];c[s[i++]]++);

for(i=0;i255;i++)

if(c[i])printf(“%c=%d\t”,i,c[i]);}

執行結果:

abcedabcdcd

a=2 b=2 c=3 d=3 e=1

求c語言程序設計第三版蘇傳芳第三章第23題答案

本題C語言代碼如下,如果有任何疑問都可以追問。

#include stdio.h

int main()

{

    int x,y;

    printf(“請輸入x值:\n”);

    scanf(“%d”,x);

    if(x0)

    {

        y=x+3;

    }

    else if(x==0)

    {

        y=0;

    }

    else

    {

        y=x*x-1;

    }

    printf(“y=%d\n”,y);

    return 0;

}

本題輸入x值,然後有三個判斷,分別用if語句來判斷處理,最後輸出y值。

C語言程序設計2015A卷-

一、判斷題(每小題1分,共15分)

1.標準C中,只有數值型數據才能進行4則混合運算。

2.標準C中,_a是合法的自定義標識符。

3.有定義:float f;表達式f+=(int)3.6%2”不符合C語言語法。

4.標準C中,邏輯運算的結果只有是1表示滿足條件,而結果是0表示不滿足條件。

6.以下運算符排列順序滿足按照優先級從高到低的排列:‘’、‘!’、‘==’、‘-’。

7.語句for(;;);是非法的。

8.在C語言程序中可以由多個源文件構成,每個源文件都可以有自己的main()函數。

9.while和do-while的主要區別是後者至少無條件執行一次。

10.數組名代表數組的首地址是常量,所以將實參數組名表示地址傳給形參數組名是錯誤的。

11.當函數沒有返回值類型時,表示函數類型為void。

12.C語言中,指針變量作函數參數時,它們不是採取單向值傳遞的方式。

13.一個函數中只允許有一條return語句。

14.在C語言中,如果沒有說明變量的存儲類型是auto類型的。

15.由於指針中所存放的地址都是整數,所以整型指針和浮點型指針可以相互賦值。

二、填空題(每空1分,共15分)

1. 若a=4;b=5,c=6;則表達式c==(b=-a); 中c的值是 (1) 。

2. 計算表達式的值:

4&&-4的值: (2) ;

設int a=3,b=4,c=5,則表達式a||b+cb==c的值: (3) ;

設x=2.5, a=7, y=4.7,則表達式x+a%3*(int)(x+y)%2/4的值: (4) ;

設a=12,則表達式a*=a/5的值: (5) ;

3. 若int x = 4,y = 6,z = 0;有循環while(x = y) {z ++;y–;}

則循環語句執行完後,z值為 (6) 。

4. 變量的指針就是指該變量的 (7) 。

5. 若有定義int (*p)[4],則標識符p是 (8) ;若有定義int *p[4],則標識符p是 (9) ;

6. 已有定義:char *p[ ]={“France”,“Chinese”,“Russia”,“America”};則語句printf(“%s”,p[2]);printf(“%c”,*(p[1]+2));printf(“%c”,*(*(p+1)+1));

的輸出結果分別為: (10) 、 (11) 、 (12) 。

7. 已有定義: int x=65; 若格式化輸出結果為“A, 65”,則對應的格式化輸出語句為printf(“ (13) , (14) ”, x, x)。

8. 已定義:int a[][2]={1, 2, 3, 4, 2, 6, 7, 2};則a[3][0]= (15) 。

三、簡答題(每題4分,共12分)

1、簡述選擇語句if和else語句對與switch語句的區別。

2、簡述在循環語句中,break和continue的區別。

3、若int a[5],*p=a;簡述*p++和(*p)++的區別。

四、下列各程序中每個程序各有2個錯誤,指出錯誤語句,寫出對應正確語句(每小題4分,共16分)

五、程序填空題:下列程序中缺少若干條語句,在對應的下劃線上填上合適的語句,每一個下劃線只填一條語句(每小題6分,共24分)

六、閱讀下列程序,寫出運行結果(第一小題4分,第二小題6分,共10分)

七、編程題(8分)

編譯程序,其功能是比較字符串的大小( 不允許 用系統提供的字符串比較函數strcmp)。要求是:

(1) 通過主函數調用一個函數strcompare來實現。

(2) 要求函數strcompare實現兩個字符的比較:如第一個字符小於第二個字符則返回一個負值;如兩個字符相等則返回0值;如第一個字符大於第二個字符則返回一個正值。

(3) 並輸出兩個字符串中相同部分的子串。

《C語言程序設計基礎》試卷參考答案

一、判斷題(每小題1分,共15分)

1~5 ; 6~10 ; 11~15

二、填空題(每空1分,共15分)

(1) 6 (2) 1 (3) 1 (4) 2.5 (5) 24 (6) 6

(7)地址 (8) 行指針,指向有四個元素的一維數組

(9)指針數組名,該數組有四個元素,每個元素都是指針

(10)Russia (11)i (12)h (13) %c (14) %d (15)7

三、簡答題(每題4分,共12分)

1、if總是判斷其後面的表達式的值是否為非零值,如是非零值則執行其後面的語句或由{}括起來的複合語句,否則執行else後面的語句。而switch語句則根據其後面表達式的可數值來判斷,執行switch語句體內與其中的一個case:常量值相等語句後面的語句。執行break語句後,跳出switch語句體。

2、break是終止整個循環過程;continue是終止本次循環。

3、*p++首先取a[0]的值,然後p指向a[1];(*p)++使得a[0]的值自增1,但p保持不變。

四、下列各程序中每個程序各有2個錯誤,指出錯誤語句,寫出對應正確語句(每小題4 分,共16分)

1、 (1)缺#include ; (2)scanf(“%f”,a); 改為 scanf(“%f”,a);

2、 (1)缺sum=0; (2)for(i=1; i=3; i++) 改為for(i=0;i3;i++)

3、 (1)p1=p2 改為 *p1=*p2 (2)swap(a, *p) 改為swap(a, p)

4、 (1)在if(m0)語句後添加else if(m==0) a=1; (2) 添加 return(a);

五、程序填空題:下列程序中缺少若干條語句,在對應的下劃線上填上合適的語句,每一個下劃線只填一條語句(每小題6分,共24分)

1、 (1)x=0; (2)if(n==x) (3)s++;或s=s+1;

2、 (4)num[i] (5)max num[i]? (6)num[i]!=0

3、 (7)n-i-1 (8)a[j]a[j+1] (9)a[j+1]=temp

4、 (10)count=0; (11)n%10 (12)n0或n!=0或n

六、閱讀下列程序,寫出運行結果(第一小題4分,第二小題6分,共10分)

1、 #*#*#*

2、 main i=1 j=2 k=2

sub i=1 j=2 k=1 x=2

sub i=1 j=2 k=1 x=3

七、編程題(8分)

#include

main()

{

int i,j, flag=0;

char str1[90],str2[90];

gets(str1);

gets(str2);

i=0;

do{

flag=strcompare(str1[i],str2[i]);

i++;

}while(str1[i]!=’’ str2[i]!=’’ flag=0);

if(flag0)printf(“%s小於%s ”,str1,str2);

else if(flag==0) printf(“%s 等於%s ”,str1,str2);

else printf(“%s大於%s ”,str1,str2);

printf(“兩個字符串中相同的字串為:”);

j=0;

i–; 後3句可用str1[i]=’’; printf(“%s”,str1);代替//用str2也可以。

while(ji){printf(“%c”,str1[i]);j++;} span=”” /i){printf(“%c”,str1[i]);j++;}

}

int strcompare(char c1,char c2)

{

int v;

v=c1-c2;

return v;

}

c語言程序設計答案

只說一下思路

實在寫不出來再追問

最好能自己解決

第一題:

就是一個楊輝三角問題

用雙循環

外循環是行數(用

i

表示)

從0到n

(n自己輸入)

內循環是列數(用

j

表示)

從0到2*i-1

然後就是賦

很多種方式

比如你定義一個

字符變量

C

給它賦值為A

然後每次都用C給數組賦值

然後讓C加1

方法很多

(數組是字符二維數組,

之前要初始化一下

給數組都賦值為

空格)

第二題:

定義兩個二維數組

一個一維數組

按照題目要求

先把每個同學的成績和名字分別存放到兩個二維數組裡面

同樣是雙循環

然後再用雙循環

把每個同學成績加起來放到一維數組裡面

然後接下來就是對一位數組內容進行排序

排序過程中

也要將名字的那個二維數

組同樣排序

因為一維數組中的總分順序和二維數組中的姓名順序是一樣的

比如

要將第二個同學的成績和第五個同學的成績交換

那麼就要

將總分交換

再將姓名交換

不然分就不對人了

第三題:

題目沒明白什麼意思

第四題:

用循環從第一個元素判斷到最後一個元素

定義4個變量存儲

數字

大寫

小寫

空格出現的次數

查一下ASCII碼

數字好像是48-57

大寫字母是

65-90

小寫是

97-122

判斷元素內容的ASCII在哪個範圍

哪個變量就加1

求c語言程序設計第二版(蘇小紅)課後第五章的本章實驗題答案

《03 00 C語言 全59講 主講-蘇小紅 哈爾濱工業大學》百度網盤資源免費下載

鏈接:

?pwd=riuy 提取碼: riuy

03 00 C語言 全59講 主講-蘇小紅 哈爾濱工業大學|各學科 學習視頻目錄|1-30講|課程目錄.txt|C語言哈工大教材 蘇小紅.jpg|9.flv|8.flv|7.flv|6.flv|5.flv|4.flv|30.flv|3.flv|29.flv|28.flv  

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/295910.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-27 12:57
下一篇 2024-12-27 12:57

相關推薦

  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • 小甲魚Python最新版課後作業及答案

    Python編程語言已經成為最受歡迎的計算機編程語言之一。而小甲魚的Python教程已經深受廣大編程學習者的青睞,其中課後作業及答案是學習過程中的必要部分。下面我們從幾個方面具體闡…

    編程 2025-04-29
  • 學堂雲Python語言程序設計答案

    學堂雲Python語言程序設計是一門重要的計算機專業課程。它涵蓋了Python語言及其應用,包括基礎語法、函數、文件處理、數據結構、圖形界面和網絡編程等內容。在學習中,我們經常會需…

    編程 2025-04-29
  • 南京郵電大學Python慕課答案

    本文將詳細闡述南京郵電大學Python慕課答案,為大家提供學習Python課程的參考。 一、應用範圍 Python是一種高級通用編程語言,應用範圍廣泛,包括Web開發、數據分析與科…

    編程 2025-04-28
  • 大學化學科學出版社教材答案

    本文將從以下幾個方面對大學化學科學出版社教材答案進行詳細闡述,幫助您更好地應對學習中的問題: 一、獲取教材答案的渠道 學習過程中,有時候會遇到難以解答的問題,這時候就需要查看教材答…

    編程 2025-04-28
  • Python初探答案第七關——解題指南

    Python初探答案第七關是一道典型的Python編程題目,涉及字符串的判斷和操作。下面我們將從多個方面詳細闡述這道題目的解題方法。 一、題目分析 首先,我們需要仔細研究題目要求以…

    編程 2025-04-28
  • 計算機二級Python語言程序設計難嗎?

    計算機二級Python語言程序設計並不難,只需要掌握好基礎知識,多練習,多思考,就能輕鬆掌握。 一、Python基礎知識 Python語言相對於其他編程語言來說,語法簡介明了,易於…

    編程 2025-04-28
  • Python語言程序設計教程PDF趙璐百度網盤介紹

    Python語言程序設計教程PDF趙璐百度網盤是一本介紹Python語言編程的入門教材,本文將從以下幾個方面對其進行詳細闡述。 一、Python語言的特點 Python語言屬於解釋…

    編程 2025-04-28
  • 小甲魚Python課後作業及答案百度雲

    小甲魚課程是一門 Python 開發的視頻課程,自 2008 年以來一直廣受歡迎。本文主要介紹小甲魚 Python 課後作業及答案所在的百度雲地址。以下是詳細內容: 一、百度雲地址…

    編程 2025-04-27
  • Python第二版課後答案用法介紹

    本篇文章主要從以下幾個方面對Python第二版課後答案做詳細的闡述: 一、Python第二版的重要性 Python是一種高級編程語言,被廣泛應用於科學計算、Web開發、人工智能等領…

    編程 2025-04-27

發表回復

登錄後才能評論