C語言教程課后習題答案_第1頁
C語言教程課后習題答案_第2頁
C語言教程課后習題答案_第3頁
C語言教程課后習題答案_第4頁
C語言教程課后習題答案_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第一章C語言概述

一、簡答題

1.(1)語言簡潔、緊湊,使用方便、靈活;(2)運算符豐富;(3)具有豐富的數(shù)據(jù)類型;

(4)具有結(jié)構(gòu)化的控制語句;(5)語法限制不太嚴格,程序設(shè)計自由度大;(6)C語言

允許直接訪問物理地址,能進行位(bit)操作,能實現(xiàn)匯編語言的大部分功能,可以直接

訪問硬件;(7)生成目標代碼質(zhì)量高,程序執(zhí)行效率高;(8)用C語言寫的程序可移植性

好,基本上不作修改就能用于各種型號的計算機和各種操作系統(tǒng)。

2.順序結(jié)構(gòu),分支結(jié)構(gòu),循環(huán)結(jié)構(gòu)

3.所謂算法就是為解決一個問題而采取的方法和步驟。

算法的特性:有窮性、確定性、輸入、輸出、可行性。

表示算法的方式:(1)用自然語言表示;(2)用流程圖表示;(3)用N—S流程圖表

示;(4)用偽代碼表示;(5)用計算機語言表示。

1.瓶子A里盛有醋

瓶子B里盛有醬油

有一個空瓶C

將A中的醋倒入C

將B中的醬油倒入A

將C中的醋倒入B

2.輸入一個數(shù)放在a中

max=a

以下步驟重復(fù)9次:

輸入一個數(shù)放在a中

如果a〉max,max=a

打印max的值

3.如果a<b

temp二a

a=b

b=temp

如果c>a

temp=a

a=c

c二temp

否則

如果c>b

temp二b

b=c

c=temp

打印a,b,c的值

4.i=l

sum=O

以下程序循環(huán)100遍:

sum=sum+i

i=i+l

打印sum的值

5.如果(n除以3的余數(shù)為0并且n除以5的余數(shù)為0)

n能夠同時被3和5整除

否則

n不能夠同時被3和5整除

6.i=101

以下語句循環(huán)50遍:

F2

flag=l

當八(i除以2的整數(shù)部分)時循環(huán)以下語句:

如果i除以j的余數(shù)為零

flag=0

退出該循環(huán)

如果flag-l

打印i的值

i=i+2

7.如果水n

temp二m

m=n

n=temp

i=n

做以下循環(huán),直到m,n能夠被i整除:

如果m能夠被i整除并且n能夠被i整除

i即是m和n的最大公約數(shù)

跳出循環(huán)

否則

i=i-l

打印i的值

8.data=b*b—4*a*c

如果data>0

否則如果data=0

xl=x2=—b/2

否則

無實數(shù)解

三、編程題

1.main()

(

printf();

printf(uHowdoyoudo?\n");

printf();

)

2.main()

inta,b,c;

scanf(u%d%d%d",&a,&b,&c);

printf("sum=%d”,a+b+c);

)

第二章數(shù)據(jù)類型與表達式

一、單項選擇題

1.B2,C3.A4.A5.D6.B7.A8.C9.D

二、寫出下列程序的運行結(jié)果

1.

aabbccabc

AN

2.

ab

9798

3.9,11,9,10

4.

a=2,b=3,c=2

5.

sl=2.500000

s2=3

三、編程題

main()

(

charcl=,c,c2=,h',c3=,i*,c4=,n',c5='a,;

cl=cl+4;

c2=c2+4;

c3=c3+4;

c4=c4+4;

c5=c5+4;

printf(,z%c%c%c%c%c\nz/,cl,c2,c3,c4,c5);

)

第三章順序程序設(shè)計

選擇題

1)B2)D3)D4)A5)A6)B7)B8)A9)

D10)C11)D12)A

填空題

1)b2)2613)2521374)abc5)5.0,4,c=36)3

編程題

^definePI3.1415926

main()

(

floath,r,1,sv,sz;

printf(“請輸入圓的半徑r,圓柱高h:\n");

scanf(a%f,%fw,&r,&h);

1=2*PI*r;

s=PI*r*r;

sv=3.0/4.0*PI*r*r*r;

sz=PI*r*r*h;

printf(“圓周長為:1=%6.2f,圓面積為:s=%6.2f\n,>,1,s);

printf(“求體積為:sv=%6.2f,圓柱體積為:sz=%6.2f\n",sv,sz)

}

2、

main()

(

floatc,f;

printf(“請輸入一個華氏溫度:\n");

scanf("%f",&f);

c=5.0/9.0*(f-32);

printf(“攝氏溫度為:%6.2f\n",c);

)

第四章循環(huán)程序設(shè)計

一、選擇題

1.D2.D3.D4.C5.D6.A7.B8.B9.A10.D.11.B12.A13.B14.C15.C16.A17.A18.B19.D

20.D21.A

二、填空題

1.585858

2.0

3.18

4.8921

5.20,0

6.6

7.1,3,2

8.Year%400==0

year%100!=0

count++

三、編程題

1.

main()

(

longa;

scanf(“%ld”,&a);

if(a>=10000&&a<=99999)

printf(“這是個五位數(shù)”);

elseif(a>=1000&&a〈=9999)

printf(“這是個四位數(shù)”);

elseif(a>=100&&a<=999)

printf(“這是個三位數(shù)”);

elseif(a>=10&&a<=99)

printf(“這是個二位數(shù)”);

elseif(a>=0&&a<=9)

printf(“這是個一位數(shù)”);

else

printf(“輸入錯誤”);

}

3.

main()

(

inta;

intg,s,b;〃個位、十位、百位

printf("水仙花數(shù)有:\n〃);

for(a=100;i<=999;a++)

{g=a%10;

s=a/10%10;

b=a/100;

if(a==g*g*g+s*s*s+b*b*b)

printf(z/%d”,a);

}

printf(〃\n");

)

4、

mainO

{inti,n;

printf("inputn:〃);

scanf(〃%d〃,&n);

printf(〃\n%d=〃,n);

for(i=2;i<=n;i++)

{while(i!=n)

if(n%i=O)

{printf(,z%d*/z,i);n/=i;}

elsebreak;

}

printf(〃%d\n〃,n);

)

5、

#include"stdio.h"

mainO

(

charc;

intw,x,y,z;

w=x=y=z=0;

while((c=getchar())!=,\n')

(

if((c>,a'&&c<rz')||(c>rA,&&c<JZ'))

w++;

elseif(c==,J)

x++;

elseif(c>‘O'&&?'9')

y++;

elsez++;

)

printf("英文字母個數(shù):%d\n",w);

printf("空格個數(shù):%d\n",x);

printf("數(shù)字個數(shù):%d\n",y);

printf("其他字母個數(shù):%d\n",z);

)

6、main()

(

floath=100,t=100;

intj;

for(j=l;j<10;j++)

(

t=t/2;

h=h+t*2;

}

printf("共經(jīng)過:%f米\n",h);

printf("第十次反彈%f米\n",t/2);

}

第五章數(shù)組

一、單項選擇題

1.B2.A3.C4.C5.D6.B7.C8.B9.C10.B

二、寫出下列程序的運行結(jié)果

1.S=368

2.

3.Sl=18

S2=10

4.!margorP

5.

數(shù)字0的出現(xiàn)次數(shù)是:3

數(shù)字1的出現(xiàn)次數(shù)是:2

數(shù)字2的出現(xiàn)次數(shù)是:2

數(shù)字3的出現(xiàn)次數(shù)是:2

數(shù)字4的出現(xiàn)次數(shù)是:0

數(shù)字5的出現(xiàn)次數(shù)是:1

數(shù)字6的出現(xiàn)次數(shù)是:1

數(shù)字7的出現(xiàn)次數(shù)是:1

數(shù)字8的出現(xiàn)次數(shù)是:1

數(shù)字9的出現(xiàn)次數(shù)是:1

三、編程題

1.ttinclude"stdio.h〃

main()

{inta[ll];

inti,j,t;

printf("input10number:\n,z);

for(i=l;i<ll;i++)

scanf&a[i]);

printf(〃\n");

for(i=l;i<=9;i++)

for(j=l;j<=10-i;j++)

if(a[j]<a[j+l])

{t=a[j];a[j]=a[j+l];a[j+l]=t;}

printf(,zthesortednumberis:\n〃);

for(i=l;i<ll;i++)

printf(/z%4d,z,a[i]);

2.#include"stdio.h〃

main()

{inta[ll],i,b;

printf(,zimput10sortednumber:\n,z);

for(i=0;i<10;i++)

scanf(〃%d〃,;

printf(,zinputaninteger:\nz,);

scanf("%d",&b);

for(i=9;i>=0&&a[i]>b;i~)

a[i+l]=a[i];

a[i+l]=b;

printf(,zsortednumbers:\n〃);

for(i=0;i<ll;i++)

printfa[i]);

3.#include"stdio.h〃

mainO

{inta[5],i,j,t;

printf("input5integer:\n,z);

for(i=0;i<5;i++)/*輸入5個整數(shù)*/

scanf(繪d〃,&a[i]);

for(i=0,j=4;i<j;i++,j—)/*逆序存放*/

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

for(i=0;i<5;i++)/*逆序存放后重新輸出*/

printf("%5d〃,a[i]);

4.#include"stdio.h〃

main()

{inti,j,a[10][10]={{l},{1,1}};

for(i=2;i<10;i++)/*給二維數(shù)組每個元素賦值*/

{a[i][0]=l;

for(j=l;j<=i;j++)

a[i][j]=a[i-l][j-l]+a[i-l][j];

for(i=0;i<10;i++)/*輸出二維數(shù)組*/

{for(j=O;j<=i;j++)

printf(〃%-5d”,a[i][j]);

printf(〃\n");

)

)

5.ttinclude"stdio.h"

main()

{inta[3][4],i,j,max,row,col;

printf(,zinput3*4matrix:\nz/);

for(i=0;i<3;i++)/*輸入3*4矩陣*/

for(j=0;j<4;j++)

scanf(〃%d〃,&a[i][j]);

max=a[0][0];row=0;col=O;

for(i=0;i<3;i++)/*尋找矩陣中的最大值及其行列號*/

for(j=0;j<4;j++)

if(max<a[i][j])

{max=a[i][j];row=i,col=j;}

printf(,z\n數(shù)組中最大的數(shù)是%d,其行號是%d,列號是%d\n〃,max,row,col)

)

6.^defineN3

#defineM4

^include"stdio.h〃

main()

{inta[N][M],i,j,k,max,row,col;

printf(,zinput%d*%dmatrix:\n,z,N,M);

for(i=0;i<N;i++)/*輸入二維矩陣*/

for(j=0;j<M;j++)

scanf(z/%d,z,&a[i][j]);

for(i=0;i<N;i++)/*求鞍點*/

{max=a[i][0];row=i;col=0;

for(j=l;j<M;j++)/*求矩陣中每一行的最大值及其所行列號*/

if(max<a[i][j])

{max=a[i][j];col=j;}

for(k=O;k〈N;k++)/*判斷每一行的最大值在其所在列是否最大*/

if(a[k][col]<max)

break;

if(k==N)/*得到鞍點*/

{printf("thepointis%d,row=%d,col=%d\nz,,max,row,col);break;}

)

if(i==N)/*沒有鞍點*/

printf(,znopoint\n〃);

7.#include"stdio.h〃

main()

{intnum=0,word=0;

/*word=0表示未出現(xiàn)單詞,如出現(xiàn)單詞就置word為1.num用來統(tǒng)計單詞個數(shù)*/

chare;

printf(''pleaseinputastring:\n〃);

while((c=getchar())!='\n')

if(c==,')

word=0;

elseif(word二二0)

{word=l;num++;)

printf(,zThereare%dwordsintheline\n〃,num);

)

8.^include"stdio.h"

mainO

{inti,j,uppn,lown,dign,span,othn;

/*uppn,lown,dign,span,othn分別存放英文大寫字母、小寫字母、數(shù)字、空格和其

他字符的個數(shù)*/

chartext[3][80];

uppn=lown=dign=span=othn=0;

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

{gets(text[i]);

for(j=0;j<80&&text[i][j]!八O';j++)

{if(text[i][j]>=,A'&&text[i][j]<=,Z')

uppn++;

elseif(text[i][j]>=,a9&&text[i][j]<=,z')

lown++;

elseif(text[i][j]>=,O'&&text[i][j]<=,9')

dign++;

elseif(text[i][j]=,')

span++;

else

othn++;

)

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

printf(〃%s\n〃,text[i]);

printf(〃uppn=%d\n〃,uppn);

printf(〃lown=96d\n〃,lown);

printfCdign=%d\n/Z,dign);

printf("span二/d\n〃,span);

printf(〃othn=%d\n〃,othn);

)

9.ttinclude〃stdio.h"

main()

{inti,j;

charstrl[20],str2[20];

printf(,zinputtwostrings:\nz,);

gets(strl);

gets(str2);

j=strlen(strl);/*求字符串1的長度*/

for(i=0;str2[i]!='\0';i++,j++)/*字符串合并*/

strl[j]=str2[i];

strl[j]=\0J;/*加上字符串結(jié)束標志*/

puts(strl);

}

10.#include〃stdio.h〃

main()

{inti,n;

charstrl[20],str2[20];

printf(,zinputtwostrings:(nomorethan20characters)\n,z);

gets(strl);gets(str2);

n=strlen(strl)<strlen(str2)?strlen(strl):strlen(str2);/*n中存放較短字符串的長

度*/

for(i=0;i<n&&strl[i]=str2[i];i++);

printf(,,%d\n/,,strl[i]-str2[i]);

)

第六章函數(shù)與編譯預(yù)處理

一、單項選擇題

1.C2.B3.B4.B5.A6.B7.A8.C9.D10.A

二、寫出下列程序的運行結(jié)果

1.9

2.4,B

8,B

3.-4.000000

4.a—6,b—5

5.48

三、編程題

1.mainO

{intprime(intn);

intn;

printf(z/inputn(n>O):\n");

scanf("%d",&n);

if(prime(n))

printf(,z%disasushu\n〃,n);

elseprintf(,z%disnotasushu\n〃,n);

)

intprime(intn)

{intflag=l,i;

for(i=2;i<=n/2&&flag==l;i++)

if(n%i=0)flag=0;

return(flag);

)

2.

#defineN3

convert(intarray[3][3])

{inti,j,t;

for(i=0;i<N-l;i++)

for(j=i+l;j<N;j++)

{t=array[i][j];

array[i][j]=array[j][i];

arraytj][i]=t;

)

)

main()

{inti,j;

inta[N][N];

printf("inputa:\n〃);

for(i=0;i<N;i++)

for(j=O;j<N;j++)

scanf("%d〃,&a[i][j]);

printf(z,Arraya:\n〃);

for(i=0;i<N;i++)

{for(j=0;j<N;j++)

printf(〃%5d〃,a[i][j]);

printfr\n,z);

)

convert(a);

printf(zzadezhuanzhiis:\n〃);

for(i=0;i<N;i++)

{for(j=0;j<N;j++)

printf(〃%5d〃,a[i][j]);

printf(〃\n〃);

}

)

3.^include<stdio.h>

#include<string.h>

main()

{charstr[100];

printf("inputastring:\n");

gets(str);

inverse(str);

printf(z/thereversedstringis:%s\n,z,str);

)

inverse(charstr[])

(

chart;

inti,j;

for(i=0,j=strlen(str)-l;i<j;i++,j--)

(

t=str[i];

str[i]=str[j];

str[j]=t;

)

)

4.^include<stdio.h>

concat(charstrl[],charstr2[])

{inti=0,j;

while(strl[i]!=,\0*)

i++;

for(j=0;str2[j]!=\0';i++,j++)

strl[i]=str2[j];

strl[i]=>\0*;

)

mainO

charstrl[100],str2[100];

gets(strl);gets(str2);

concat(strl,str2);

puts(strl);

}

5.mainO

{charstr[80];

printf("inputastring(4geshuzizifu):\n〃);

scanf(〃%s〃,str);

insert(str);

printf(''resultis:\n%s\n〃,str);

)

insert(charstr[])

(

inti;

for(i=strlen(str);i>0;i-)

(

str[2*i]=str[i];

str[2*i-l]=>';

)

)

6.#include"stdio.h〃

inti,ndight,nwhite,nletter,nother;

count(charstr[])

(

ndight=nwhite=nletter=nother=0;

for(i=0;str[i]!=\0f;i++)

if(str[i]>=,0f&&str[i]<=,9')

ndight++;

elseif((str[i]>=>A,&&str[i]<=,Z')||(str[i]>=,a&&str[i]<=,z'))

nletter++;

elseif(str[i]==,')

nwhite++;

elsenother++;

)

main()

(

chartext[80];

printf("inputastring:\n,z);

gets(text);

count(text);

printf(〃ndight=%d,nletter=%d,nwhite=%d,nother=%d\n,z,ndight,nletter,nwhite,nothe

r);

)

7.#defineN10

ttinclude<stdio.h>

sort(charstr[])

{inti,j;

chart;

for(i=l;i<N;i++)

for(j=O;j<N-i;j++)

if(str[j]>str[j+l])

{t=str[j];str[j]=str[j+l];str[j+l]=t;}

}

main()

(

charstr[N];

inti;

printf("Input10gezifu:\n〃);

gets(str);

sort(str);

printf(,zThesortedresult:\n",);

for(i=0;i<N;i++)

printfstr[i]);

}

8.這題較復(fù)雜

#include<stdio.h>

#include<string.h>

#defineN10

voidinput_e(intnum[],charname[N][8])

{inti;

for(i=0;i<N;i++)

{printf(,zinputgonghao:〃);

scanf("%d〃,&num[i]);

printf(z,inputname:,z);

getchar();

gets(name[i]);

)

for(i=0;i<N;i++)

printf(,/%5d%10s\nz/,num[i],name[i]);

)

voidsort(intnum[],charname[N][8])/*選擇法排序*/

{inti,j,min,tempi;

chartemp2[8];

for(i=0;i<N-l;i++)

{min二i;

for(j=i+l;j<N;j++)

if(num[j]<num[min])min=j;

templ=num[i];

strcpy(temp2,name[i]);

num[i]=num[min];

strcpy(name[i],name[min]);

num[min]=tempi;

strcpy(name[min],temp2);

}

printf(,zthesortedresult:\n/z);

for(i=0;i<N;i++)

printf("%5d%10s\n",num[i],name[i]);

}

voidsearch(intn,intnum[],charname[N][8])/*折半查找法*/

(

inttop,bott,mid,find;

find=0;

top=0;

bott=N-l;

if((n<num[0])||(n>num[N-l]))

find=-l;

while((find==0)&&(top<=bott))

{mid=(bott+top)/2;

if(n二二num[mid])

{find=l;printf(z,%dnameis:%s\n〃,n,name[mid]);}

elseif(n<num[mid])

bott=mid-l;

elsetop=mid+l;

)

if((find==-l)||(find==0))

printfC'%disnotfound.\nz/,n);

)

main()

intnum[N],number,c,flag;

charname[N][8];

input_e(num,name);

sort(num,name);

for(flag=l;flag;)

{printfCpleaseinputchazhaodegonghao:");/*輸入查找的工號*/

scanf(〃%d〃,&number);

search(number,num,name);

printfCcontinueY/N?〃);/*是否繼續(xù)查找*/

getchar();

c=getchar();

if(c='N'||c='n')

flag=0;

)

)

9.ttinclude〃stdio.h〃

^defineMAX10

mainO

(

charstr[MAX];

chare;

inti;

i=0;

printf("inputnumber(16jinzhi):");/*輸入一個十六進制的數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論