C語言程序設(shè)計呼克佑課后習(xí)題答案_第1頁
C語言程序設(shè)計呼克佑課后習(xí)題答案_第2頁
C語言程序設(shè)計呼克佑課后習(xí)題答案_第3頁
C語言程序設(shè)計呼克佑課后習(xí)題答案_第4頁
C語言程序設(shè)計呼克佑課后習(xí)題答案_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計呼克佑課后習(xí)題答案

C語言程序設(shè)計習(xí)題解答(參考)

習(xí)題一

一、單項選擇題

1.D

2.A

3.D

二、填空題

1.順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)

2算法

3.語言簡潔、運算符豐富、結(jié)構(gòu)化語言

4.可移植性強、代碼效率高、書寫格式自由

5.錯誤隱蔽、有時會難以理解、有時會難以修改

6.群舉法(枚舉法)、遞推法(迭代法)、遞歸法

7.做什么怎么做

三、應(yīng)用題

1.

include

voidmain()

printf(〃*************************\nn)?

printf("Clanguageprogram\nH);

printf(〃*************************\n〃)*

)

2.

include

voidmain()

inta,b,c,max;

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

if(a>b)max=a;

elsemax=b;

if(max

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

一、單項選擇題

l.A,D,E

2.B,E

3.B,D,E,F,H

4.B,F

5.A,B,E

二、填空題

l.(i)int(2)char(3)double(4)long(5)char⑹char⑺int(8)long

2.(i)0(2)0(3)2(4)4(5)4(6)8(7)0(8)2

3.2111

4.不做

5.sin(25*3.14159/180)+cos(30*3.14159/180)

6.2

8.5

三、給出各個程序的運行b結(jié)果

1.運行結(jié)果如下:

3

21

5

5

2.運行結(jié)果如下:

6,9

9,27

一、單項選擇題

l.D

2.B

3.D

4.C

5.B

6.C

7.B

8.A

9.C10.D

ll.D12.D13.B14.A15.A16.B17.C18.C19.B20.B

21.D22.C23.C24.D25.C26.C27.D28.D29.B3O.A

二、填空題

1.從標(biāo)準(zhǔn)設(shè)備(鍵盤)上讀入一個字符向標(biāo)準(zhǔn)設(shè)備(鍵盤)上輸

出一個字符

#include

2.以十進制形式輸入一個整數(shù)表示從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀取

輸入的3個整型數(shù)

表示掉過3個整數(shù)不讀取用來輸入一個字符

3.以十進制形式輸出一個整數(shù)以十六進制形式輸出一個整數(shù)

以十進制小數(shù)形式輸出,輸出的數(shù)據(jù)長度為7位,其中有兩位為

小數(shù)

以字符形式輸出一個字符

4.分程序;;

5.-1

6.非00

7.a%7==0else8.39.2

lO.forwhiledo-while11.Continue12.a=16,y=42

13.1014.y=1915.22222

16.3917.718.5,5

19.n=420.-321.8

三、程序閱讀分析題

1.2.

3.0

4.567

5.thisnumberisahuiwen

四、編程題

1.編寫一個程序,要求用戶輸入兩個整數(shù),判定其中一個是否能

整除另一個。

#include

intmain()

(

inta,b;

while(scanf("%d%d",&a,&b)==2)

{

if(a%b)printf("不能整除\n");

elseprintf("能整除\n");

)

return0;

)

2.編程實現(xiàn):輸入一個整數(shù),判斷它能否被3,5,7整除,并輸

出以下信息之一:

①能同時被3,5,7整除;

②能被其中兩數(shù)(要指出哪兩個)整除;

③能被其中一個數(shù)(要指出哪一個)整除;

④不能被3,5,7任一個整除。

#include

voidmain()

(

inta;

printf("請輸入一個整數(shù)\n");

scanf("%d",&a);

if(a%3==0&&a%5==0&&a%7==0)

printf("%d能同時被3,5,7整除\n",a);

eIseif(a%3!=0&&a%5==0&&a%7==0)

printf("%d能同時被5,7整除\n",a);

eIseif(a%3==0&&a%5!=0&&a%7==0)

printf("%d能同時被3,7整除\n",a);

eIseif(a%3==0&&a%5==0&&a%7!=0)

printf("%d能同時被3,5整除\n",a);

eIseif(a%3==0&&a%5!=0&&a%7!=0)

printf("%d能被3整除\n",a);

eIseif(a%3!=0&&a%5==0&&a%7!=0)

printf("%d能被5整除\n",a);

elseif(a%3!=0&&a%5!=0&&a%7==0)

printf("%d能被7整除\n",a);

eIseprintf("%d不能被3,5,7整除\n",a);

)

3.市郊長途電話收費標(biāo)準(zhǔn)如下:通話時間在三分鐘以下收費一角,

三分鐘以上則每超過一分鐘加一角。在7:00—21:00之間通話者,

按收費標(biāo)準(zhǔn)全價收費;在其它時間通話者,按收費標(biāo)準(zhǔn)的一半收費。

請計算某人在x時間通話y分鐘,應(yīng)繳多少電話費。(通話時間利用

整數(shù)輸入實現(xiàn))include

main()

(

floatx,y=O;

intt;

scanf("%f%d",&x,&t);

if(t>7&8it<21)

if(x<3)

y=o.i;

else

do

(

y=0.2+y;

x=x-l;

}while(x-3>0);

)

eIse

(

if(x<3)

y=0.1/2;

else

do

(

y=(0.2+y)/2;

x=x-l;

}while(x-3>0);

}

printf("%f",y);

)

4.輸入a、b、c三條邊,判斷它是否構(gòu)成三角形。若能構(gòu)成三角

形,則計算三角形面積。

#include

#include

main()

fIoata,b,c,S=0,x=0;

printf("輸入三角形三條邊的邊長:");

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

if(a+b>c&&b+c>a&&a+c>b)

(

x=(a+b+c)/2.0;

S=sqrt(x*(x-a)*(x-b)*(x-c));

printf("area=%.3f\n",S);

)

EIse

printf("不能構(gòu)成三角形\n");

)

5.打印出所有"水仙花數(shù)"。所謂"水仙花數(shù)”是指一個三位數(shù),

其各位數(shù)字的立方和等于該數(shù)本身。例如,153是一個"水仙花數(shù)",

因為153=13+53+33。

#include"stdio.h"

#include"math.h"

main()

(

inti;

inta,b,c;

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

(

a=i%10;/*取個位數(shù)*/

b=i/10%10;/*取十位數(shù)*/

c=i/100;/*取百位數(shù)*/

if(i==a*a*a+b*b*b+c*c*c)

printf("%d",i);

)

)

6.編寫一個程序,在屏幕上顯示如下圖形(圖形的層數(shù)讀者自行

設(shè)定):

*

***

*****

*******

*****

***

*

#include

#include

main()

(

inti,j,k;

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

{

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

printf("%c",32);

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

printf("*");

printf("\n");

)

)

7.求斐波那契(Fibonacci)數(shù)歹ij:1,1,2,3,5,8,……的前

40個數(shù)。斐波那契數(shù)列的定義:

Fl=l(n=l)

F2=l(n=2)

Fn=Fn-l+Fn-2(n>3)

#include

main()

(

intfl,f2,f;

inti;

fl=f2=l;

printf("%d\n%d\n",fl,f2);

for(i=l;i<=38;i++)/*已經(jīng)有兩個數(shù),只要再產(chǎn)生38個數(shù)即可*/

(

f=fl+f2;

fl=f2;

f2=f;

printf("%d\n",f);

)

)

8.編程實現(xiàn)求1+2+3+…+n之和,并輸出當(dāng)其和第一次大于或等

于100時的值及n值。

#include

main()

(

inti,s,t=0;

i=l;s=0;

while(i<=100)

(

s=s+i;

if(s>=100&&t<l)/*設(shè)定t只求第一次和大于100的內(nèi)容*/

(

printf("第一次和大于或等于100時和為%d\n",s);

printf("第一次和大于或等于100時n^]%d\n",i);

t+=l;

}

i=i+l;

)

printf("s=%d\n",s);

)

9.整元換零錢問題。把1元兌換成1分、2分、5分的硬幣,共有

多少種不同的換法?

#include

main()

(

inti,j,k,n;

n=100,k=0;

for(i=0;i<=n/5;i++)

for(j=0;j<=(n-i*5)/2;j++)

(

printf("5cent=%d\t2cent=%d\t1cent=%d\n",i/j,n-i*5-j*2);

k++;

)

printf("totaltimes=%d\n",k);

)

10.編寫解雞兔同籠問題的程序。用戶輸入頭的數(shù)目和腳的數(shù)目,

輸出雞、兔各有多少只。^include

main()

{intx,y,a,b;

printf("輸入雞兔頭的數(shù)目:)

scanf("%d",&x);

printf("輸入雞兔腳的數(shù)目:");

scanf("%d",&y);

a=x-(y-2*x)/2;

b=(y-2*x)/2;

printfC1雞有%d只,兔有%dR",a,b);

)

11.打印楊輝三角形,即(x+y)n展開式的各項系數(shù)。并且在程序

運行開始時,問用戶n的值為多少,接著打印如下形式至指定行數(shù)。

1

11

121

1331

14641

#include

intmain()

{intn,k,j,c;

printf("Input=");

scanf("%d",&n);

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

(

〃printf("%*s",4*(n-k));/*格式控制語句,有和沒有是兩種顯示方

式*/

c=l;

printf("%4d",c);

for(j=l;j<=k-l;j++)

(

c=c*(k-j)/j;

printf("%8d",c);

)

printf("\n");

)

return0;

)

12.個位數(shù)是6,且能被3整除的五位數(shù)共有多少個?

#include

main()

{inta,count=0;

longi;

for(i=10000;i<100000;i++)

(

a=i%10;

if(a==6&&i%3==0)

count++;

)

printf("這樣的數(shù)共計:%d",count);

)

習(xí)題四

一、單項選擇題

1.C

2.D

3.D

4.D

5.C

6.D

7.B

8.A

9.B10.B

二、填空題

1.—15014float

2.8

3.連續(xù)數(shù)組名

4.按行存儲

5.04

6.350

7.368.9

9.710.#include#include

三、程序閱讀分析題

1.i==ja[i][j]a[i][j]printf("\n")

2.k=32

3.gbcdefa

4.012345

123456

234567

345678

456789

5678910

5.you&me

四、編程題

1.設(shè)數(shù)組V中的數(shù)據(jù)元素遞增有序,現(xiàn)將x插入到數(shù)組V的適當(dāng)

位置,使數(shù)組元素的值仍保持有序。

#include

voidmain()

(

intV[15]={65,70,73,75,79,81,85,88,90};/*有9個初值,有序*/

intn=9,x=77;/*數(shù)組中當(dāng)前有n個數(shù)據(jù),將x插入數(shù)組V中,仍

保持有序*/

inti;

for(i=n-l;i>=0&&V[i]/*將V數(shù)組中的數(shù)據(jù)從后往前比較

*/

V[i+l]=V[i];/*若大于x,后移一個位置*/

V[i+l]=x;/*將x插入數(shù)組V中*/

n++;/*數(shù)組中數(shù)據(jù)個數(shù)增1*/

for(i=0;i<=""bdsfid="475"p="">

printf("%d",V[i]);

printf("\n");

)

2.定義一個含有30個整型元素的數(shù)組,按順序分別賦予從2開始

的偶數(shù),然后按順序每五個數(shù)求出一個平均值,放在另一個數(shù)組中并

輸出。

#include

voidmain()

(

intarray[30],average[6]={0};

inti,j;

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

array[i]=2*(i+l);

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

(

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

average[j]+=array[i];

average[j]/=5;

printf("%d",average[j]);

)

printf("\n");

)

3.輸入一個字符串,在指定位置插入一個字符。

#include

voidmain()

(

charstr[81],ch;

inti,position;

printf("輸入一個字符串:");

gets(str);

printf("輸入要插入字符的位置:");

scanf("%d",&position);

printf("輸入要插入的字符:");

scanf("%*c%c",&ch);

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

while(i>=position-l)

(

str[i+l]=str[i];

i--;

)

str[position-l]=ch;

printf("在指定位置插入字符后的字符串:%s\n",str);

)

4.輸入一行字符,分別統(tǒng)計其中十個數(shù)字字符'O',T,…,9出

現(xiàn)的次數(shù)。

#include

voidmain()

{

charstr[81];

intcount[10]={0},i;

printf("輸入一行字符:\n");

gets(str);

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

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

count[str[i]-'Ol]++;

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

primf('%c\,:%d\rr,,0,+i,count[i]);

)

5.輸入矩陣A(2行3列)和矩陣B(3行4列),計算它們的乘

積C=A-B。

(矩陣乘積計算公式:Cij=IAikBkj)

#include

voidmain()

inta[2][3],b[3][4],c[2][4];

inti,jzk;

printf("輸入2行3列矩陣數(shù)據(jù):\n");

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

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

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

printf("輸入3行4列矩陣數(shù)據(jù):\n");

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

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

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

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

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

(

c[i][j]=O;

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

c[i][j]+=a[i][k]*b[k][j];

)

printf("兩矩陣的乘積矩陣是:\n");

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

(

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

printf("%5d",c[i][j]);

printf("\n");

)

)

6.下面是一個5x5階的螺旋方陣。試編程打印出此形式的nxn(n

<10,順時針方向旋進)。

12345

161718196

152425207

142322218

131211109

#include

#defineN5

voidmain()

(

inta[N][N],i,j,k,n;

i=0;

j=0;

n=l;

for(k=l;k<=N*N;k++)

(

if(i==n-l&8ij<n-n)<bdsfid="583"p=""></n-n)<>

疝[j++]=k;

elseif(j==N-n&&i<n-n)<bdsfid="586"p=""></n-n)<>

a[i++][j]=k;

elseif(i==N-n&&j>n-l)

a[i][j-]=k;

else

a[i-][j]=k;

if(i==n&&j==n-l)

n++;

)

for(i=0;i<n;i++)<bdsfid="596"p=""></n;i++)<>

(

for(j=0;j<n;j++)<bdsfid="599"p=""></n;j++)<>

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

printf("\n");

)

)

7.編一程序,實現(xiàn)字符串復(fù)制,不使用strcpy()函數(shù)。

#include

voidmain()

charstrl[81],str2[]="Iamastudent.";

inti;

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

printf("%s\n%s\n",strl,str2);

)

8.編一程序,求字符串的長度,不使用strlen()函數(shù)。

#include

voidmain()

(

charstr[81];

intn;

printf("輸入一個字符串:");

gets(str);

n=0;

while(str[n]!='\O')

n++;

printf("字符串的長度是:%d\n",n);

)

9.有一篇文章,共有3行文字,每行有80個字符。要求分別統(tǒng)計

出其中英文大寫字母、/」寫字母、數(shù)字、空格以及其他字符的個數(shù)。

#include

voidmain()

(

charstr[3][81];

char

category[5][10]={"UPPER","LOWER","DIGIT","SPACE","OTHER"};

inti,j,count[5]={0};

printf("輸入3行文字:\n");

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

gets(str[i]);

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

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

if(str[i][j]>='A'&&str[i][j]<='Z')

count[0]++;

elseif(str[i][j]>='a'&&str[i][j]<=,z')

count[l]++;

elseif(str[i][j]>='0'&&str[i][j]<='9')

count[2]++;

elseif(str[i][j]=='')

count[3]++;

else

count[4]++;

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

printf("%s:%d\n",category[i],count[i]);

)

10.某班期終考試科目為高等數(shù)學(xué)(MT)、英語(EN)和物理(PH)。有

30人參加考試。為評定獎學(xué)金,要求統(tǒng)計并輸出一個表格,表格內(nèi)容

包括學(xué)號、各科分?jǐn)?shù)、總分和平均分,并標(biāo)出三門課均在90分以上者

(該欄標(biāo)志輸出為"Y",否則為"N"),表格形式如下:

NOMTENPHSUMV>90

197879

227692Y

292919027

391Y

39081822538

4N

可以將學(xué)生的學(xué)號和各科成績放在數(shù)組a[30][4]中,然后進行統(tǒng)

計處理。

#include

#defineN30

voidmain()

(

intstu[N][4],sum;

inti,j;

chargreat90;

for(i=0;i<n;i++)<bdsfid="673"p=""></n;i++)<>

(

printf("輸入第%d個學(xué)生的數(shù)學(xué)、英語和物理成績(空格分

隔):",i+1);

stu[i][0]=i+l;

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

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

)

printf("NOMTENPHSUMV>90\n");

printf("------------------------------------\n");

for(i=0;i<n;i++)<bdsfid="683"p=""x/n;i++)<>

(

sum=0;

great90='Y';

printf(n%5d",stu[i][0]);

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

(

printf(n%5d",stu[i][j]);

sum+=stu[i][j];

if(stu[i][j]<90)

great90='N';

)

printf("%5d",sum);

printf("%5d",sum/3);

printf("%5c\n",great90);

)

)

習(xí)題五

一、單項選擇題

1.B)2.D)3.A)4.D)5.A)6.C)

二、填空題

1.52.883.2

4.12125.4126.1行的行地址

三、程序分析題

1.24

2.ENGLISH

MATH

MUSIC

PHYSICS

CHEMISTRY

四、編程題(以下題目均要求用指針方法實現(xiàn))

1.#include

#include

voidmain()

(

char

n[]={"china","japan","korea","american"/"england"},*temp;

inti,j,k;

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

(

k=i;

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

if(strcmp(n[k],n[j])>0)k=j;

if(k!=i)

(

temp=n[k];n[k]=n[i];n[i]=temp;

)

)

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

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

)

2.#include

voidmain()

{

inta[10]={87,78,69,79,98,86,91,75,71,95},*p,temp;

inti,min_order;

p=a;

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

if(*p>a[i])p=a+i;

min_order=p-a;

printf("Min=a[%d]=%d\n",min_order,a[min_order]);

temp=*p;*p=a[O];a[O]=temp;

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

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

printf("\n");

)

3.略

4.#include

voidmain()

inta[10]={10,20,30,40,50,60,70,80,90};/*數(shù)組中9個數(shù)有序*/

int*p,x=35;/*x為待插入的數(shù)據(jù)7

for(p=&a[8];(p>=a)8i&(*p>x);p—)

*(p+l)=*p;/*從后向前將比x大的數(shù)據(jù)后移一個位置*/

*(p+l)=x;/*將X插入到數(shù)組中*/

for(p=a;p<=""bdsfid="761"p="">

printf("%4d",*p);

printf("\n");

)

5.#include

voidmain()

(

chars[255],prrior='',*p;

printf("輸入一行英文:\n");

gets(s);

for(p=s;*p!='\0';p++)/*掃描字符串*/

(

if(prrior==''&&*p>='a'&&*p<='z')/*單詞開始且是小寫字母

*/*p-=32;/*將單詞的第一個字母改為大寫*/

prrior=*p;

)

puts(s);

)

6.#include

voidmain()

(

charstrl[81],str2[]="Iamaboy.";

char*s,*t;

s=str2;

t=strl;

while((*t=*s)!='\0')

S++;

t++;

)

puts(strl);

)

7.略

8.略

9.編寫程序,實現(xiàn)輸入月份號,輸出相應(yīng)的英文月份名。10.略

11.略

12.#include

voidmain()

{

charstr[81],*p,*q;

printf("輸入一個字符串:\n)

gets(str);

for(q=str;*q!='\0';q++);

for(p=str,q—;(p<q)&&(*p==*q);p++,q--);<bdsfid="807"

n)();;

p="></q&&*p==*qp4-+fq-)<>

if(p<="">

elseprintf("字符串:%s是回文串!\n",str);

)

13.#include

voidmain()

(

charstr[81],

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論