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

下載本文檔

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

文檔簡介

C語言課后習題答案

第一章習題答案

一、選擇題

1?5:BDCDA6-10:DABBB11?12:CC

二、填空題

1、main()

2、函數(shù)首部,函數(shù)體

3、函數(shù)

4、編輯、編譯、連接、運行

5、.cpp>.obj>.exe

6、;或分號

三、編程題

#include<stdio.h>/*包含標準庫的信息*/

voidmain()/*定義名為main的函數(shù),它不接受參數(shù)值*/

{/*main函數(shù)的語句都被括在花括號中*/

printf(Hhello,world\n,r);

/*main函數(shù)調(diào)用庫函數(shù)printf以顯示字符序列,其中\(zhòng)n代表換行符*/

)

第二章習題答案

一、選擇題

1?5:CBABB6?10:CDCDD11?15:CADBC16?20:BDAAD

二、填空題

1、整型,實型,字符型,枚舉類型

2、1

3、9

4、12353514

5、2,1

6、2,2

7、10200

8、a=14

9、2,3,1

10、double

第三章習題答案

一、選擇題

1?5:CBBBC6-10:DDDBB

二、填空題

1、控制語句,表達式語句,復合語句

2、;

3、{}

4、1

5、a

6、c:dec=120,oct=170,hex=78,ASCII=x

7、32767,32767

8、10,A,10

9、33

10、

(1)123.456001

(2)□□□□□□□123.456

(3)123.4560

(4)8765.456700

(5)□□□□□□8765.457

(6)8765.4567

(7)8765.4567

三、編程題

1、參考答案:

#include<stdio.h>

voidmain()

(

inta,b,c;

longintu,n;

floatx,y,z;

charcl,c2;

a=3;b=4;c=5;

x=l.2;y=2.4;z=-3.6;

u=51274;n=128765;

cl=,a';c2=,br;

printf(M\n,r);

printf(Ha=%2db=%2dc=%2d\nn,a,b,c);

printf(Hx=%8.6f,y=%8.6f,z=%9.6f\nn,x,y,z);

printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n”,x+y,y+z,z+x);

printf("u=%61dn=%91d\n",u,n);

printf("cl='%c'or%d(ASCII)\nff,cl,cl);

printf(,,c2=,%c,or%d(ASCII)\nH,c2,c2);

}

2、參考答案:

#include<stdio.h>

voidmain()

(

floata,b,c,t;

printf("pleaseinputa,b,c:\nn);

scanf(H%f,%f,%f",&a,&b,&c);

t=(a+b+c)/3;

,r

printf(°averageof%6.2f、%6.2fand%6.2fis%6.2f\n,a,btc,t);

}

3、參考答案:

#include<stdio.h>

main()

(

intR,d;

floats;

printf(“請輸入圓的半徑”);

scanf(H%d\&R);

d=2*R;

c=2*3.14159*R;

printf("d=%d,c=%f\n*\d,c);

)

4、參考答案:

#include<stdio.h>

voidmain()

(

inth,f,x,y;/*x為雞的數(shù)量,y為兔的數(shù)量*/

printf(”請輸入雞兔的總頭數(shù)h,總腳數(shù)f:H);

scanf("%d%d",&h,&f);

x=(4*h-f)/2;

y=(f-2*h)/2;

priHtf("籠中有雞%d只,有兔%d只。\nH,x,y);

)

第四章習題答案

一、選擇題

CDDDDCDBBC

二、填空題

1、&&,II,!,

2、(y%20)

3、1

4、(a+b>c&&a+c>b&&b+c>a)

5、233

6、7

三、編程題

1、參考答案:

ttinclude<stdio.h>

voidmain()

{intx;

scanf(H%dH,&x);

if(x%50&&x%70)

printf("yes'n");

else

printf(,rno\nn);

}

2、參考答案:

#include<stdio.h>

voidmain()

{inta,b,c,max;

printf("請輸入三個整數(shù):蹴d%%d%%d\n");

scanf(M%d%d%d&a,&b,&c);

if(a>=b)

if(a>=c)max=a;

elsemax=c;

else

if(b>=c)max=b;

elsemax=c;

printf("\n最大數(shù)為:%d\nM,max);

3、參考答案:

#include<stdio.h>

voidmain()

(

floatx,y;

printf("請輸入x的值:");

scanf(,r%fw,&x);

if(x<l)y=l;

elseif(x<10)

y=2*x-l;

else

y=3*x-ll;

printf(,ry=%.2f\nff,y);

)

4、參考答案:

#include<stdio.h>

voidmain()

intyear;

floatmoney,rate,total;/*money:本金rate:月利率total:本利合計

*/

printf(''Inputmoneyandyear=?”);

scanf,&money,&year);/*輸入本金和存款年限*/

if(year1)rate=0.00315;/*根據(jù)年限確定利率*/

elseif(year2)rate=0.00330;

elseif(year3)rate=0.00345;

elseif(year5)rate=0.00375;

elseif(year8)rate=0.00420;

elserate=0.0;

total=money+money*rate*12*year;/*計算到期的本利合計*/

printf("Total=%.2f\nM,total);

)

第五章習題答案

一、選擇題

1?5:ACCBA

6?10:ACDCB

二、填空題

1、(1)i<=9或i<10(2)j%3!=0

2、7

3、(1)ch=ch+l、(2)printf(M\nw)

三、編程題

1、參考答案:

#include<stdio.h>

voidmain()

{inti=2;

longp=l;

do

{p=p*i;

i=i+2;

}while(i<10);

printf(,,2*4*6*8=%ld\ntt,p);

)

2、參考答案:

#include<stdio.h>

voidmain()

{intn=0;

charc;

c=getchar();

while(c!=,\n,)

{if((c>=,a,&&c<='z')||(c>='A,&&c<=,Z,))n++;

c=getchar();

)

printf(H%d\n,r,n);

)

3、參考答案:

#include<stdio.h>

voidmain()

{inta,max;

scanf(H%d,r,&a);

max=a;

while(a!=0)

{scanf(H%dH,&a);

if(max<a)max二a;

}

printf(H%d,r,max);

)

4、參考答案:

#include<stdio.h>

voidmain()

(

intday=0,buy=2;

floatsum=0.0,ave;

do

sum+=0.8*buy;

day++;

buy*=2;

)

while(buy<=100);

ave=sum/day;

printf("%f",ave);

)

5、參考答案:

#include<stdio.h>

voidmain()

{intfl,f2,f5,count=0;

for(f5=0;f5<=20;f5++)

for(f2=0;f2<=(100-f5*5)/2;f2++)

{fl=100-f5*5-f2*2;

if(f5*5+f2*2+fl100)

printf(HNo.%2d?5:%4d2:%4d1:%4d\n,r,++count,f5,f2,f1);

}

printf,共有%d種換法",count);

)

6、參考答案:

ttinclude<stdio.h>

voidmainO

{inti,j,n;

printf(H\nPleaseEntern:,r);

scanf(°%d°,&n);

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

{for(j=l;j<=n-i;j++)

printf(H");

for(j=l;j<=2*i-l;j++)

printf("*”);

printf(H\n,r);

}

)

7、參考答案:

#include<stdio.h>

voidmain()

inti,j;

floatg,sum,ave;

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

(

sum=0;

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

(

scanf("%f”,&g);

sum+二g;

)

ave=sum/5;

printf("No.%dave=%5.2f\nw,i,ave);

}

)

8、參考答案:

ttinclude<stdio.h>

voidmain()

{intn,t,number=20;

floata=2,b=l,s=0;

for(n=l;n<=number;n++)

{s=s+a/b;

t=a;

a=a+b;

b=t;

)

printf(Ms=%9.6f\n,r,s);

)

第六章習題答案

一、選擇題

1?5:CBABD6-10:CDBCD

二、填空題

1、庫函數(shù)(或系統(tǒng)函數(shù)),自定義函數(shù)

2、無參函數(shù),有參函數(shù)

3、傳值方式

4、實參,形參

5、13

6、maxis2

7、15

8、1,2,3

三、編程題

1、參考答案:

#include<stdio.h>

intis_prime(inta)

{inti,p=l;

for(i=2;i<a-l;i++)

if(a%i0)

{p=0;break;)

return(p);

)

voidmain()

{inti=ll;

if(is_prime(i))

printf(nlw);

else

printf(,f0H);

)

2、參考答案:

ttinclude<stdio.h>

intgongyue(intnuml,intnum2)

{inttemp,a,b;

if(numl<num2)

{temp=numl;numl=num2;num2=temp;}

a=numl;

b二num2;

while(b)

{temp=a%b;a=b;b=temp;}

return(a);

)

voidmain()

{inti=12,j=8;

printf(H%dH,gongyue(i,j));

}

第七章習題答案

一、選擇題

1?5:BDDCC6-10:CDCAB

二、填空題

1、字符、1

2、2

3、c:\win98\cmd.exe

4、1,2,3,4,5,6,7,8,9,0

5、325678

6、1,0,7,0,

7、4332

8、(1)j=2(2)j>=i

三、編程題

1、參考答案:

#include<stdio.h>

voidmain()

{inti,a[20],s,count;

s=count=0;

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

scanf,&a[i]);

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

{if(a[i]<0)

continue;

s+=a[i];

count++;

)

printf(,rs=%d\tcount=%d\nH,s,count);

)

2、參考答案:

#include<stdio.h>

voidmain()

{inta[3]⑷,i,j,max;

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

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

scanf(,r%cln,&a[i][j]);

max=a[0][0];

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

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

if(a[i][j]>max)max=a[i][j];

printf(,,max=%d\nM,max);

)

3、參考答案:

#include<stdio.h>

voidmain()

{inta[ll]={3,4>7,9,10,13,14,15118,20};

inti,j,n;

scanf(n%dM,&n);

i=0;

while(i<10)

{if(n<a[i])

(

for(j=10;j>i;j-)

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

a[i]=n;

break;

)

i++;

}

if(i>=10)

a[10]=n;

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

printf(,,%4d,,,a[iD;

)

第八章習題答案

一、選擇題

1?5ABCCB6?10DACBB11?15DACCC

二、填空題

1.(1)*(2)&

2.(1)*p(2)**a(3)2

3.10

4.*p>*s

5.*(++p)

三、編程題

1.編程實現(xiàn)從鍵盤輸入一個字符串,將其字符順序顛倒后重新存放,并輸出這個字符串。

#include<stdio.h>

#include<string.h>

voidInverse(char*pStr)?

main()

(

charstr[80]?

printf("Inputastring:\n,r)?

gets(str)?/*輸入字符串*/

Inverse(str)?/*將存于str數(shù)組中的字符串逆序存放*/

printf("Th。inversedstringis:\nH)?

puts(str)?/*輸出字符串*/

)

/*函數(shù)功能:實現(xiàn)字符串逆序存放

函數(shù)參數(shù):字符指針變量,所指向的存儲單元存放源字符串,逆序后的字符串也存放于此

返回值:無*/

voidInverse(char*pStr)

intlen?

char■temp?

char1*pStart?/*指針變量pStart指向字符串的第一個字符*/

char,*pEnd?/*指針變量pEnd指向字符串的最后一個字符*/

len=:strlen(pStr)?/*求出字符串長度*/

for(pStart=pStr,pEnd=pStr+len?l?pStart<pEnd?pStart++,pEnd??)

temp=*pStart?

*pStart=*pEnd?

*pEnd=temp?

)

)

2.從鍵盤任意輸入10個整數(shù),用函數(shù)編程實現(xiàn)計算最大值和最小值,并返回它們所在數(shù)組

中的位置。

#include<stdio.h>

intFindMax(intnum[],intn,int*pMaxPos)?

intFindMin(intnum[],intn,int*pMinPos)?

main()

intnum[10],maxValue,maxPos,minValue,minPos,i?

printf(HInput10numbers:\n")?

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

scanf("%d",&num[i])?/*輸入10個數(shù)*/

)

maxValue=FindMax(num,10,femaxPos)?/*找最大值及其所在下標位置*/

minValue=FindMin(num,10,&minPos)?/*找最小值及其所在下標位置*/

printf(,rMax=%d,Position=%d,Min=%d,Position=%d\n",

maxValue,maxPos,minValue,minPos)?

)

/*函數(shù)功能:求n個數(shù)中的最大值及其所在下標位置

函數(shù)入口參數(shù):整型數(shù)組num,存儲n個整數(shù),整型變量n,表示數(shù)組元素個數(shù)

函數(shù)出口參數(shù):整型指針變量pMaxPos,指向的地址單元存儲最大值在數(shù)組中的下標位置

函數(shù)返回值:最大值*/

intFindMax(intnum[],intn,int*pMaxPos)

inti,max?

max=num[O]?/*假設num[0]為最大*/

*pMaxPos=0?/*假設最大值在數(shù)組中的下標位置為0*/

for(i=1?i<n?i++)

(

if(num[i]>max)

(

max=num[i]?

?pMaxPos=i?

)

)

returnmax?

)

/*函數(shù)功能:求n個數(shù)中的最小值及其所在下標位置

函數(shù)入口參數(shù):整型數(shù)組num,存儲n個整數(shù),整型變量n,表示數(shù)組元素個數(shù)

函數(shù)出口參數(shù):整型指針變量pMinPos,指向的地址單元存儲最小值在數(shù)組中的下標位置

函數(shù)返回值:最小值*/

intFindMin(intnum[],intn,int*pMinPos)

(

inti,min?

min=num[0]?/*假設num[0]為最小*/

*pMinPos=0?/*假設最小值在數(shù)組中的下標位置為0*/

for(i=l?i<10?i++)

(

if(num[i]<min)

(

min=num[i]?

*pMinPos=i?

}

)

returnmin?

}

3.將5個字符串從小到大排序后輸出。

#include<stdio.h>

voidmain(void)

{inti?

char*pcolor[5]={"red","blue","yellow","green","purple")?

voidfsort(char*color[],intn)?

fsort(pcolor,5)?

for(i=0?i<5?i++)

printf(n%s",pcolor[i])?

)

voidfsort(char*color[],intn)

{intk,j?

char*temp?

for(k=1?k<n?k++)

for(j=0?j<n?k?j++)

if(strcmp(colorLj],color[j+1])>0)

(

temp=colorEj]?

color[j]=color[j+1]?

color[j+1]temp?

)

)

4.編寫-?個能對任意mXn階矩陣進行轉置運算的函數(shù)Transpose。。

#include<stdio.h>

ttdefineROW3

#defineCOL4

voidTranspose(int(*a)[COL],int(*at)[ROW],introw,intcol)?

voidInputMatrix(int(*s)[COL],introw,intcol)?

voidPrintMatrix(int(*s)[ROW],introw,intcol)?

mainO

(

ints[R0W][COL]?/*s代表原矩陣*/

intst[COL][ROW]?/*st代表轉置后的矩陣*/

printf("Pleaseentermatrix:\n")?

InputMatrix(s,ROW,COL)?/*輸入原矩陣,s指向矩陣s的第0行,是行指針*/

Transpose(s,st,ROW,COL)?/*對矩陣s進行轉置,結果存放于st中*/

printf("Thetransposedmatrixis:\n")?

PrintMatrix(st,COL,ROW)?/*輸出轉置矩陣,*st指向st的第0行,是行指針*/

)

/*函數(shù)功能:對任意row行col列的矩陣轉置

函數(shù)入口參數(shù):指向一維整型數(shù)組的指針變量a,指向單元存放轉置前的矩陣元素

整型變量row,矩陣的行數(shù)即二維整型數(shù)組的行數(shù)

整型變量col,矩陣的列數(shù)即二維整型數(shù)組的列數(shù)

函數(shù)出口參數(shù):指向一維整型數(shù)組的指針變量at,指向單元存放轉置后的矩陣元素

函數(shù)返回值:無*/

voidTranspose(int(*a)[COL],int(*at)[ROW],introw,intcol)

(

inti,j?

for(i=0?i<row?i++)

(

for(j=0?j<col?j++)

(

*(*(at+j)+i)=*(*(a+i)+j)?

}

}

}

voidInputMatrix(int(*s)[COL],introw,intcol)/*輸入矩陣元素*/

(

inti,j?

for(i=0?i<row?i++)

(

for(j=0?j<col?j++)

(

scanf("%d",*(s+i)+j)?/*這里*(s+i)+j等價于

&s[i][jj*/

)

)

}voidPrintMatrix(int(*s)[ROW],introw,intcol)/*輸入矩陣元素*/

(

inti,j?

for(i=0?i<row?i++)

(

for(j=0?j<col?j++)

(

printf("%d\t",*(*(s+i)+j))?/*這里*(*(s+i)+j)等價于

s[i][j]*/

)

printfC\n")?

}

)

第九章習題答案

一、選擇題

1?5BDDAC6?10BCADC

二、填空題

1.structDATAd={2006,10,1}?

2.sizeof(structnode)

3.personEi].sex

4.13431

5.(1)structnode*(2)*s(3)p

三、編程題

1.定義一個能正常反映教師情況的結構體teacher,包含教師、性別、年齡、所在部門和

薪水;定義一個能存放兩人數(shù)據(jù)的結構體數(shù)組tea,并用如下數(shù)據(jù)初始化:{{"Mary“,

'W',40,

'Computer',1234},{"Andy",'M',55,'English',1834});要求:分別用結構體

數(shù)組tea和指針

P輸出各位教師的信息,寫出完整定義、初始化、輸出過程。

#include<stdio.h>

structteacher

{charname[8]?

charsex?

intage?

chardepartment[20]?

floatsalary?

!?

structteachertea[2]={{"Mary二1W*,40,"Computer'1,1234},

{"Andy",'M',55,"English",1834})?

main()

{inti?

structteacher*p?

for(i=0?i<2?i++)

printf(M%s,\t%c,\t%d,\t%s,\t%f",

tea[i].name,tea[i].sex,tea[i].age,tea[i].department,tea[i].salary)?

for(p=tea?p<tea+2?p++)

printf(u%s,\t%c,\t%d,\t%s,\t%f,r,p?>name,p?>sex,p?>age,p?>department,

p?>salary)?

)

2.定義一個結構體變量(包括年、月、日)。計算該日在本年中是第幾天,注意閏年問題。

#include<stdio.h>

struct

{intyear?

intmonth?

intday?

}date?

main()

{intdays?

printf(wInputyear,month,day:w)?

scanf(,&date.year,&date.month,&date.day)?

switch(date,month)

{case1:days=date.day?break?

case2:days=date,day+31?break?

case3:days=date.day+59?break?

case4:days=date.day+90?break?

case5:days=date.day+120?break?

case6:daysdate,day+31?break?

case7:days=date.day+181?break?

case8:days=date.day+212?break?

case9:daysdate,day+243?break?

case10:daysdate,day+273?break?

easel1:days=date.day+304?break?

case12:daysdate,day+334?break?

}

if((date.year%40&&date.year%100!=0date.year%4000)&&date.month>3)

days+=l?

printf("\n%d/%disthe%dthdayin%d.”,date,month,date,day,days,date,year)?

3,構建簡單的手機通訊錄,手機通訊錄包括信息(、年齡、聯(lián)系),要求實現(xiàn)新建、

查詢功能。假設通信錄最多容納50名聯(lián)系人信息。

#include<stdio.h>

#include<string.h>

/*手機通訊錄結構定義*/

structfriends_list{

charname[10]?/**/

intage?/*年齡*/

chartelephone[13]?/*聯(lián)系*/

)?

intCount0?/*定義全局變量Count,記錄當前聯(lián)系人總數(shù)*/

voidnew_friend(structfriends_1istfriendsE])?

voidsearch_friend(structfriends_listfriends[],char*name)?

intmain(void)

(

intchoice?

charname[10]?

structfriends」istfriends[50]?/*包含50個人的通訊錄*/

do{

printf("手機通訊錄功能選項:1:新建2:查詢0:退出\n")?

printf("請選擇功能:”)?

scanf("%dfechoice)?

switch(choice){

case1:

new_friend(friends)?

break?

case2:

printf("請輸入要查找的聯(lián)系人名:”)?

scanf(,r%sH,name)?

search_friend(friends,name)?

break?

case0:break?

)

}while(choice!=0)?

printf("謝謝使用通訊錄功能!\n“)?

return0?

)

/*新建聯(lián)系人*/

voidnew_friend(structfriends_listfriends[])

(

structfriends_listf?

if(Count50){

printf("通訊錄已滿!\n”)?

return?

)

printf(”請輸入新聯(lián)系人的:”)?

scanf("%s”,)?

printf(”請輸入新聯(lián)系人的年齡:”)?

scanf("%d'&f.age)?

printf("請輸入新聯(lián)系人的聯(lián)系:”)?

scanf(H%sn,f.telephone)?

friends[Count]=f?

Count++?

}

/*查詢聯(lián)系人*/

voidsearch_friend(structfriends_listfriendst],char*name)

(

inti,flag=0?

if(Count0){

printf("通訊錄是空的!\n")?

return?

)

for(i=0?i<Co

溫馨提示

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

評論

0/150

提交評論