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

下載本文檔

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

文檔簡介

(完整版)C語言程序設(shè)計課后習(xí)題答案

編輯整理:

尊敬的讀者朋友們:

這里是精品文檔編輯中心,本文檔內(nèi)容是由我和我的同事精心編輯整理后發(fā)布的,發(fā)布之前我們對

文中內(nèi)容進(jìn)行仔細(xì)校對,但是難免會有疏漏的地方,但是任然希望(院整版)c語言程序設(shè)計課后

習(xí)題答案)的內(nèi)容能夠給您的工作和學(xué)習(xí)帶來便利。同時也真誠的希望收到您的建議和反饋,這將

是我們進(jìn)步的源泉,前進(jìn)的動力。

本文可編輯可修改,如果覺得對您有幫助請收藏以便隨時查閱,最后祝您生活愉快業(yè)績進(jìn)步,以

下為(完整版)c語言程序設(shè)計課后習(xí)題答案的全部內(nèi)容。

C語言程序設(shè)計(第2版)課后習(xí)題答案

第一章

1O請參照本章例題,編寫一個c程序,輸出以下信息:

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

Verygood!

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

解:

#include<stdio.h>

voidmain()

(

printf("***************大**********”);

printf(u\n");

printf("Verygood!\n,J);

printf(u\n");

printf("**************************”);

)

2O編寫一個C程序,輸入a、b、c三個值,輸出其中最大值.

解:

#include〈stdio。h)

voidmain()

(

inta,b,c,max;

printf(“請輸入三個數(shù)a,b,c:\n");

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

max=a;

if(max<b)max=b;

if(max〈c)max=c;

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

}

第二章

1。假如我國國民生產(chǎn)總值的年增長率為10%,計算10年后我國國民生產(chǎn)總值與現(xiàn)在相比增長多

少百分比。計算公式為P=(1+r)7,r為年增長率;n為年數(shù);P為與現(xiàn)在相比的百分比。

解:

#include<stdiooh>

#include(math,h)

voidmain()

(

doubleP,r=0o1,n=10;

P=pow((1+r),n);

printf("%lf\n",P);

)

3。請編程序?qū)ⅰ癈hina”譯成密碼,譯碼規(guī)律是用原來字母后面的第4個字母代替原來的字母。

例如,字母“A”后面第4個字母是“E”,“E”代替“A”。因此,“China”應(yīng)譯為“Glmre”。

請編一程序,用賦初值的方法使cl、c2、c3、c4、c5五個變量的值分別為,C'、‘h'、'i'、

'n'二經(jīng)過運(yùn)算,使c2、c3、c4、c5分別變?yōu)镚、''m'、'r''。并輸

出.

解:

#incIude<stdio.h>

voidmain()

(

charc1='C,c2='h',c3='i',c4='n',c5二'a';

c1+=4;

c2+=4;

c3+=4;

c4+=4;

c5+=4;

printf("密碼是%'%'%'%0%,\門”,d,c2,c3,c4,c5);

}

第三章

,

3o用下面的scanf函數(shù)輸入數(shù)據(jù),使"3,b=7,x=8。5,y=71c82,ck'A',c2=a'

問在鍵盤上如何輸入?

解:

#incIude(stdiOoh>

voidmain()

(

inta,b;floatx,y;chard,c2;

scanf(ua=%d,b=%d",&a,&b);

scanf("x=%f,y=%e”,&x,&y);

scanf(Mc1=%c,c2=%c",&c1,&c2);

}

a=3,b=7

x=8.5,y=71o82

c1=A,c2=a

5。設(shè)圓半徑尸1。5,圓柱高h(yuǎn)=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。

用scanf輸入數(shù)據(jù),輸出計算結(jié)果,輸出時要求文字說明,取小數(shù)點(diǎn)后2位數(shù)字。請編程序。

解:

#include〈stdio。h>

voidmain()

(

floatr,h,C1,Sa,Sb,Va,Vb;

scanf(u%f,%f",&r,&h);

C1=2*3.14*r;

Sa=3o14*r*r;

Sb=4*Sa;

Va=4*3。14*r*r*r/3;

Vb=Sa*h;

printf(uC1=%o2f\n,J,C1);

uM

printf(Sa=%.2f\nSb=%o2f\nVa=%.2f\nVb=%.2f\n,Sa,Sb,Va,Vb);

}

6.輸入一個華氏溫度,要求輸出攝氏溫度。公式為c=5(F-32)/9,輸出要求有文字說明,取位2

小數(shù).

解:

#include<stdio.h)

voidmain()

(

floatF,c;

scanf("%f”,&F);

c=5*(F—32)/9;

printf(lic=%.2f",c);

)

7o編程序,用getchar函數(shù)讀入兩個字符給c1、c2,然后分別用putchar函數(shù)和printf函

數(shù)輸出這兩個字符。思考以下問題:

(1)變量c2應(yīng)定義為字符型或整形?或二者皆可?

(2)要求輸出c1和c2值的ASCII碼,應(yīng)如何處理?用putchar函數(shù)還是printf函數(shù)?

(3)整形變量與字符變量是否在任何情況下都可以互相代替?如:

charc1,c2;與intd,c2;是否無條件地等價?

解:

#include<stdio.h>

voidmain()

(

charc1,c2;

c1=getchar();

c2=getchar();

putchar(d);putchar('\n');putchar(c2);putchar('\n');

}

#include<stdiooh〉

voidmain()

(

charc1,c2;

c1=getchar();

c2=getchar();

printf(Mc1=%dc2=%d\n”,c1,c2);

printf(uc1=%cc2=%c\nn,c1,c2);

}

第四章

3o寫出下面各邏輯表達(dá)式的值。設(shè)"3,b=4,c=5。

(1)a+b>c&&b=c

(2)a||b+c&&b~c

(3)!(a>b)&&!c|I1

(4)!(x=a)&&(y=b)&&0

(5)!(a+b)+c—1&&b+c/2

解:

(1)0

(2)1

(3)1

(4)0

(5)1

5o有3個整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的數(shù),請編程序。

解:

#include<stdiooh)

voidmain()

(

inta,b,c,temp,max;

printf(“請輸入3個整數(shù):“);

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

temp=(a>b)?a:b;

max=(temp)c)?temp:c;

printf("3個整數(shù)的最大數(shù)是%d\n",max);

1

6,給一個百分制成績,要求輸出等級'A,JB'、'C'、'D'JE'.90分以上為'A',80?

90分為'B',70~79分為'C',60分以下為‘D'o

解:

#include<stdio.h>

voidmain()

(

floatscore;

chargrade;

printf(“請輸入學(xué)生成績:”);

scanf(,&score);

whiIe(score>100|Iscore〈0)

{printf("\n輸入有誤,請重新輸入:”);

scanf(“%f“,&score);

)

switch((int)(score/10))

(

case10:

case9:grade='A';break;

case8:grade='B';break;

case7:grade='C';break;

case6:grade='D';break;

case5:

case4:

case3:

case2:

case1:

case0:grade='E';break;

)

printf("成績是%5.1f,相應(yīng)的等級是%c.\n",score,grade);

}

7o給定一個不多于5位的正整數(shù),要求:

(D求出它是幾位數(shù);

(2)分別輸出每一位數(shù)字;

(3)按逆序輸出各位數(shù)字。例如原數(shù)為321,應(yīng)輸出123.

解:

#include<stdiooh)

voidmain()

longintnum;

intindiv,ten,hundred,thousand,ten_thousand,place;/*分另ij代表個位、十位、百彳立、千位、

萬位和位數(shù)*/

printf(“請輸入一個整數(shù)(0-99999):");

scanf(u%ldn,&num);

if(num>9999)pIace=5;

eIseif(num)999)place=4;

eIseif(num>99)pIace=3;

eIseif(num)9)place=2;

eIsepIace=1;

printf("place=%d\n",pIace);

ten_thousand=num/10000;

thousand=num/1000%10;

hundred=num/100%10;

ten=num%100/10;

indiv=num%10;

switch(place)

{case5:printf("%d,%d,%d,%d,%d”,ten_thousand,

thousand,hundred,ten,indiv);

printf("\n反序數(shù)字為:");

printf("%d%d%d%d%d\n”,indiv,ten,hundred,thousand,ten_thousand);

break;

u

case4:printf(%d,%d,%d,%d“tthousand,hundred,ten,indiv);

printf("\n反序數(shù)字為:”);

printf("%d%d%d%d\n”,indiv,ten,hundred,thousand);

break;

case3:printf("%d,%d,%d",hundred,ten,indiv);

printf("\n反序數(shù)字為:");

printf(u%d%d%d\n",indiv,ten,hundred);

break;

case2:printf("%d,%d”,ten,indiv);

printf("\n反序數(shù)字為:”);

printf("%d%d\n",indiv,ten);

break;

case1:printf("%d”,indiv);

printf("\n反序數(shù)字為:”);

printf(M%d\n",indiv);

break;

)

)

8o企業(yè)發(fā)放的獎金根據(jù)企業(yè)的當(dāng)年利潤決定.當(dāng)利潤I低于或等于元時,獎金可提成10%;利

潤大于元,小于元(〈IW)時,低于元的部分按10%提成,高于元的部分,可提成7.5%;利

潤大于元,小于元(〈IW)時,低于元的部分仍按上述辦法提成(下同),高于元的部分按5%提

成。利潤大于元,小于元(<IW)時,高于元的部分按3%提成.利潤大于元,小于元(<IW)

時,高于的部分按1。5%提成;利潤大于元(I〉)時,超過元的部分按1%提成。從鍵盤輸入當(dāng)年

利潤I,求應(yīng)發(fā)放獎金總數(shù)。要求:

(1)用if語句編程序;(2)用switch語句編程序。

解:

(1)用if語句編程序。

#incIude<stdio.h)

voidmain()

longi;

floatbonus,bon1,bon2,bo4,bon6,bon10;

bon1-*0.1;/*利潤為10萬元時的獎金*/

bon2=bon1+*0o075;/*利潤為20萬元時的獎金*/

bon4=bon2+*0.05;/夫利潤為40萬元時的獎金*/

bon6=bon4+*0o03;/*利潤為60萬元時的獎金*/

bon10=bon6+*0.015;/*利潤為100萬元時的獎金*/

printf(“請輸入利潤i:

scanf("%Id",&i);

if(i(=)bonus=i*0.1;/*利潤在10萬元以內(nèi)按0.1提成獎金*/

eIseif(i〈二)

bonus=bon1+(i—)*0。075;/%利潤在10萬至20萬元時的獎金*/

eIseif(i〈=)

bonus=bon2+(—)*0。05;/*利潤在20萬至40萬元時的獎金*/

elseif(i<=)

bonus=bon4+(i—)*0.03;/*利潤在40萬至60萬元時的獎金*/

eIseif(i〈二)

bonus=bon6+(i-)*0。015;/*利潤在60萬至100萬元時的獎金*/

eIse

bonus=bon10+(i-)*0.01;/*利潤在100萬元以上時的獎金*/

printf("獎金是%10.2f\n",bonus);

)

(2)用switch語句編程序。

#include(stdio.h)

voidmain()

(

longi;

floatbonus,bon1,bon2,bon4,bon6,bon10;

intc;

bon1=*0o1;

bon2=bon1+*0o075;

bon4=bon2+*0。05;

bon6=bon4+*0.03;

bon10=bon6+*0o015;

printf(“請輸入利潤i:");

scanf("%Id",&i);

c=i/;

if(c>10)c=10;

switch(c)

case0:bonus=i*0.1;break;

case1:bonus=bon1+(i~)*0。075;break;

case2:

case3:bonus=bon2+(i—)*0.05;break;

case4:

case5:bonus=bon4+(i-)*0o03;break;

case6:

case7:

case8:

case9:bonus=bon6+(i-)*0.015;break;

case10:bonus=bon10+(i-)*0.01;

)

printf("獎金是%10。2fn,bonus);

)

9o輸入4個整數(shù),要求按由小到大的順序輸出.

解:

#include<stdiooh〉

voidmain()

(

intt,a,b,c,d;

printf(“請輸入4個整數(shù):”);

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

printf(u\na=%d,b=%d,c=%d,d=%d\nM,a,b,c,d);

if(a)b){t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;}

if(a>d){t=a;a=d;d=t;}

if(b>c){t=a;b=c;c=t;}

if(b>d){t=b;b=d;d=t;}

if(c>d){t=c;c=d;d=t;}

printf("排序結(jié)果如下:\nM);

printf("%d,%d,%d,%d\n,>,a,b,c,d);

1

10.有4個圓塔,圓心分別為(2,2)、(-2,2)、(-2,-2)、(2,-2),圓半徑為1。這4個

塔的高度分別為10m.塔以外無建筑物。今輸入任一點(diǎn)的坐標(biāo),求該點(diǎn)的建筑高度(塔外的高度

為零)。

解:

#include〈stdio。h)

voidmain()

(

inth=10;

floatx1=2,y1=2,x2=—2,y2=2,x3=-2,y3=—2,x4=—2,y4=-2,x,y,d1,d2,d3,d4;

printf(“請輸入一個點(diǎn)(x,y):);

scanf(M%f,%f”,&x,&y);

d1=(x-x1)*(x-x1)+(y—y1)*(y—y1);/*求該點(diǎn)到各中心點(diǎn)的距離*/

d2=(x—x2)*(x-x2)+(y+y2)*(y+y2);

d3=(x+x3)*(x+x3)+(y-y3)大(y—y3);

d4=(x+x4)*(x—x4)+(y+y4)*(y+y4);

if(d1)1&&d2>1&&d3)1&&d4>1)h=0;/*判斷該點(diǎn)是否在塔外*/

printf("該點(diǎn)高度為%(八11".h);

1

11o求利2+-+。=。方程的解.

根據(jù)代數(shù)知識,應(yīng)該有以下幾種可能:

(1)a=0,不是二次方程,而是一次方程。

(2)h2-4ac=0,有兩個相等的實根。

(3)b2-4ac>0,有兩個不等的實根。

(4)b2-4ac<0,有兩個共聊復(fù)根。

編寫程序,運(yùn)行時,分別給出不同的a,b,c值,相應(yīng)于上面4種情況,分析輸出結(jié)果。

解:

#include<stdiooh)

#include〈math,h〉

#include<stdIib.h〉

voidmain()

(

floata,b,c,disc,x1,x2,reaIpart,imagpart;

scanf(u%f,%f”,&a,&b,&c);

printf("Theequation");

if(fabs(a)<=1e—6)

printf("isnotaquadratic\n");

eIse

(

disc=b*b-4*a*c;

if(fabs(disc)〈=1e—6)printf("hastoweuaIroots:%8.4f\n",-b/(2

*a));

eIseif(fabs(disc)>1e-6)

{x1=(一b+sqrt(disc))/(2*a);

x2=(—b-sqrt(disc))/(2*a);

printf("hasdistinetreaIroots:%8。4fand%8.4f\nn,x1,x2);

I

eIse

(

realpart=-b/(2*a);

imagpart=sqrt(~disc)/(2*a);

printf("hascompIexroots:\n");

printf("%8.4f+%8.4fi\n",realpart,imagpart);

printf(u%8.4f—%8。4fi\n,5,reaIpart,imagpart);

}

)

}

第五章

1o求100?200間的全部素數(shù)。

解:

#include<stdiOoh>

#incIude(math,h〉

voidmain()

(

intm.i,n=0;

doublek;

for(m=101;m<=200;m=m+2)

(

k=sqrt(m);

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

if(m%i==0)break;

if(i>=k+1)

(

printf("%d",m);n=n+1;

}

if(n%10=0)printf(ll\nn);

)

printf("\n");

)

2.輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其他字符的個數(shù)。

解:

#incIude〈stdio。h〉

voidmain()

charc;

inti=0,j=0,k=0,1=0;

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

(

if(c>='A'&&c仁'Z,I|c>='a'&&c仁'z')i++;

elseif(c>='O'&&c〈二'9')j++;

eIseif(c==,')k++;

eIseI++;

}

printf(“i=%d,j=%d,k=%d,l=%d\n”,i,j,k,I);

)

3.輸出所有“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字立方和等于該本身。

例如:153是一個水仙花數(shù),因為153二廠3+5-3+3-3。

解:

#include<stdio.h>

#incIude〈math。h>

voidmain()

(

inti,j,k,n;

printf(““水仙花”數(shù)是:”);

for(n=100;n<1000;n++)

i=n/100;

j=n/10—i*10;

k=n%10;

if(n=i*i*i+j*j*j+k*k*k)printf("%4d”,n);

)

printf("\n");

)

4o猴子吃桃問題。猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不過癮,又多吃了一個.第

二天早上又將剩下的桃子吃掉一半,又多吃一個。以后每天早上都吃了前一天剩下的一半零一

個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘多少桃子。

解:

#incIude(stdiooh)

voidmain()

(

intday,x1,x2;

day=9;

x2=1;

whiIe(day)0)

(

x1=(x2+1)*2;

x2=x1;

day----;

}

printf(Mtotal=%d\n",x1);

}

5o一球從100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落

地時,共經(jīng)過了多少米?第10次反彈多高?

解:

#include<stdiooh>

voidmain()

(

inti,n;doubleh=100,s=100;

scanf("%d",&n);

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

(

h^=0o5;

if(i==1)continue;

s=2*h+s;

)

printf("h=%f,s=%f\n",h,s);

}

6o打印以下圖案

*

***

*****

*******

*****

***

*

解:

#include<stdio.h)

#incIude(math.h>

voidmain()

{

inti,j,k;

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

(

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

printf("”);

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

printf("*");

printf("\n");

)

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

(

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

printf("”);

for(k=0;k<=4—2*i;k++)

printf("*”);

printf("\n");

)

)

7.兩個乒乓球隊進(jìn)行比賽,各出3人。甲隊為A、B、C3人,乙隊為X、Y、Z3人。已抽簽

決定比賽名單。有人向隊員打聽比賽的名單,A說他不和X比,C說他不和X、Y比,請編程序

找出3三隊選手的對陣名單。

解:

#include<stdio.h>

voidmain()

{

chari,j,k;/*i是A的對手,j是B的對手,k是C的對手*/

for(i='X,;i<='Z';i++)

for(j=fX';j<='Z,;j++)

(

if(i!=j)

for(k='X';k<='Z';k++)

{if(i!=k&&j!=k)

{

if(i!='X'&&k!='X'&&k!二'Z')printf(uorderisA—%c\tB-%c\tC

----%c\n”,i,j,k);

}

}

第六章

1.已知一個班10個學(xué)生的成績,要求輸入這10個學(xué)生的成績,然后求出它們的平均成績。

解:

#include<stido.h)

main()

(

floata[10],sum,avg;

inti;

sum=0.0;

printf(uPleaseinputthestudentsscore:");

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

{scanf("%f",&a[i]);

sum=sum+a[i];

)

avg=sum/10;

printf("Theaverageis:%f\nn,avg);

)

2o已知一個班10個學(xué)生的成績,存放在一個一維數(shù)組中,要求找出其中成績最高的學(xué)生的成

績和該生的序號。

解:

#incIude<stdio.h)

voidmain()

intch[10];

inti,max=0,xh;

printf(“請輸入10個學(xué)生的成績:\n");

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

(

scanf(u%dn,&ch[i]);

if(ch[i]〉max)

{

max=ch[i];

xh=i;

}

}

printf(“成績最高為:%d\n",max);

printf("該生的序號為:%d\n",xh);

)

3.有3個學(xué)生,上4門課,要求輸入全部學(xué)生的各門課成績,并分別求出每門課的平均成績。

解:

#include<stdiooh)

#include<stdIiboh)

#defineRENSHU3

#defineKECHENG4

voidmain()

floatchengji[4][4];

inti,j;

printf(u\n請按人輸入(一次輸入一個人所有課程的成績)成績(%d人,%d門課

程):“,RENSHU,KECHENG);

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

(

printf("\n第%d人i+1);

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

scanf(u%fn,&chengji[i][j]);

}

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

{

chengji[RENSHU][j]=0;

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

chengji[RENSHU][j]+=chengji[i][j];

chengji[RENSHU][j]=chengji[RENSHU][j]/RENSHU;

)

for(i=0;i〈二RENSHU;i++)

{

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

printf("%8。2f”,chengji[i][j]);

printf(u\nn);

printf(u\n");

}

4o已知5個學(xué)生的4門課的成績,要求求出每個學(xué)生的平均成績,然后對平均成績從高到低

將各學(xué)生的成績記錄排序。

解:

#include〈stdio.h〉

#incIude<stdIib.h〉

voidmain()

{

inta[5][4]={{94,78,87,76},(66,87,75,69),{100,98,89,77},{82,58,72,84},(82,

73,67.54}};

inti,j,sum;

floataverage,b[5],t;

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

(

sum=0;

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

(

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

b[i]=sum/4.0;

}

u

printf(average%d=%4o2f\n",i+1fb[i]);

)

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

for(i=j+1;i〈5;i++)

if(b[i]>b[j])

(

t=b[i];

b[i]=b[j];

b[j]=t;

)

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

printf("%。2f\n”,b[i]);

}

5.將一個數(shù)組的值按逆序重新存放,例如,原來順序為:8,6,5,4,10要求改為:1,4,

5,6,8o

解:

#include<stdiooh>

voidmain()

(

inti,a[10],temp;

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

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

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

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

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

{

temp=a[i];

a[i]二a[9-i];

a[9-i]=temp;

}

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

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

printf(M\n");

)

6.有個15數(shù)按由小到大順序存放在一個數(shù)組中,輸入一個數(shù),要求用折半查找法找出該數(shù)組

中第幾個元素的值.如果該數(shù)不在數(shù)組中,則輸出“無此數(shù)”.

解:

#include<stdiooh)

voidmain()

(

inta[15]={14,13,12,11,10,9,8,7,6,5,4,3,2,1,0};

intstart,end,mid,i,find_fIag;

intx;

printf("inputx");

scanf("%d",&x);

start=0;

end=14;

find_flag=O;

do{

mid=(start+end)/2;

if(x==a[mid])

(

printf("Findthenumber,itisa[%d]”,mid);

break;

}

eIseif(x>a[mid])end=mid—1;

eIsestart=mid+1;

}whiIe(start(end);

)

7o輸出以下圖案:

*****

*****

*****

*****

*****

解:

#include<stdiooh)

voidmain()

inti,j,k;chara[5][5];

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

{

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

(

a[i][j]='*';

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

}

printf("\n”);

for(k=1;k<=i+1;k++)

printf();

}

printf("\n");

}

8.有一篇文章,共有3行文字,每行有個80字符.要求分別統(tǒng)計出其中英文大寫字母、小寫字

母、空格以及其它字符的個數(shù)。

解:

#incIude<stdio.h>

voidmain()

(

inti,j,upp,Iow,dig,spa,oth;

chartext[3][80];

upp=Iow=dig=spa=oth=0;

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

printf(u\nPleaseinputIine%d:\n",i+1);

gets(text[i]);

for(j=0;j<80&&text[i][j]!=>\0';J++)

(

if(text[i][j])='A,&&text[i][j]<=,Z')upp++;

eIseif(text[i][j]>=,a'&&text[i][j]<=,z)Iow++;

eIseif(text[i][j]>=,O'&&text[i][j]<='9')dig++;

elseif(text[i][j]==,9)spa++;

eIseoth++;

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

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

printf("uppercase:%d\n”,upp);

printf(ulowercase:%d\nJ,,Iow);

printf("digitcase:%d\n”,dig);

printf("spacecase:%d\n^^,spa);

printf("othercase:%d\n”,oth);

9。有一行電文,已按下面規(guī)律譯成密碼:

A——>Za-yz

B->Yb->y

C->Xc—〉x

■■■

即第1個字母變成第26個字母,第i個字母變成第(26T+1)個字母。非字母字符不變.假如

已知道密碼是Umtorhs,要求編程序?qū)⒚艽a譯回原文,并輸出密碼卻原文。

解:

#include〈stdio。h〉

voidmain()

(

inti;charstr1[100]tstr2[100];

gets(str1);

for(i=0;str1[i]!=、O';i++)

if(str1[i]>=65&&str1[i]<=90)str2[i]=155—str1[i];

eIseif(str1[i])=97&&str1[i]<=122)str2[i]=219-str1[i];

eIsestr2[i]=str1[i];

printf("%s\n%s\n”,str1,str2);

)

10.編一程序,將兩個字符串連接起來,(1)用strcat函數(shù);(2)不用strcat函數(shù)。

解:

(1)

#include(stdiooh)

voidmain()

inti,j;charstr1[100],str2[100]fstr3[201];

gets(str1);

gets(str2);

str3=strcat(str1,str2);

printf("%s\n%s\n%s\n”,str1,str2,str3);

}

(2)

#include<stdio.h〉

voidmain()

(

inti,j;charstr1[100],str2[100],str3[201];

gets(str1);

gets(str2);

for(i=0;str1[i]!=*\0,;i++)

str3[i]=str1[i];

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

str3[j+i]=str2[j];

printf("%s\n%s\n%s\n",str1,str2,str3);

}

第七章

1.寫兩個函數(shù),分別求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個函數(shù),并

輸出結(jié)果兩個整數(shù)由鍵盤輸入。

解:

#include〈stdio.h〉

intmaxyueshu(intm,intn)

(

inti=1,t;

for(;i<=m&&i〈=n;i++)

{if(m%i=0&&n%i=二0)t=i;}

return(t);

)

intminbeishu(intm,intn)

(

intj;

if(m>=n)j=m;

eIsej=n;

for(;!(j%m==0&&j%n==0);j++);

returnj;

1

voidmain()

(

inta.b,max,min;

printf("entertwonumberis:");

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

max=maxyueshu(a,b);

min=minbeishu(a,b);

<tn

printf(max=%dFmin=%d\n,max,min);

2.寫一個判斷素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否是素數(shù)的消息。

解:

#include<stdio.h>

intpsushu(intm)

(

inti,t=1;

for(i=2;i<m/2&&t==1;i++)

if(m%i==0)t=0;

returnt;

}

voidmain()

(

inta.s;

printf("entersushuis'n");

scanf("%d",&a);

s=psushu(a);

if(s==1)printf(uaissushu\n,,);

eIseprintf("sisnotsushu\nn);

}

3o寫一個函數(shù),使給定的一個二維數(shù)組(3X3)轉(zhuǎn)置,即行列互換。

解:

#include〈stdio。h>

intzhuangzhi(intb[3][3])

(

inti,j,t;

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

for(j=0;j>=i&&j<3—i;j++)

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

)

voidmain()

(

inta[3][3];inti,j;

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

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

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

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

{

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

printf(%d1f,a[i][j]);

printf("\n");

}

zhuangzhi(a);

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

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

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

printf("\n”);

}

}

4.寫一函數(shù),使輸入的一個字符串按反序存放,在主函數(shù)中輸入和輸出字符串.

解:

#include〈stdio。h)

voidmain()

(

charstr0[100];

gets(strO);

fanxu(strO);

puts(strO);

}

fanxu(charstr1[100])

(

inti.t,j;

charstr2[100];strcpy(str2,str1);

t=strIen(str1);

for(i=0,j=t—1;j>-1;i++,j—)

str1[i]=str2[j];

5o寫一函數(shù),將兩個字符串連接。

解:

#incIude<stdiooh)

Iianjie(chara[100],b[100])

(

strcat(a,b);

}

voidmain()

(

charstr1[100],str2[100];

gets(str1);gets(str2);

Iianjie(str1,str2);

puts(str1);

1

6.寫一函數(shù),將兩個字符串中的元音字母復(fù)制到另一個字符串,然后輸出。

解:

#incIude(stdio.h)

fuzhi(chara[100],b[100])

(

inti,j=0;

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

if(a[i]==971Ia[i]==101||a[i]==1051|a[i]==111|Ia[i]==117||a[i]==65IIa

[i]==69|Ia[i]==73|Ia[i]==85){b[j]=a[i];j++;}

}

voidmain()

(

charstr1[100],str2[100];

gets(str1);

fuzhi(str1,str2);

puts(str2);

)

7.寫一函數(shù),輸入一個四位數(shù)字,要求輸出這四個數(shù)字字符,但每個數(shù)字間空一個空格。如輸

入2008,應(yīng)輸出“2_0_0_8”。

解:

#include〈stdio。h〉

voidinsert(charstr[])

(

inti;

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

(

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

str[2*i—1”';

)

printf(U\noutput:\n%s",str);

1

voidmain()

charstr[80];

printf(u\ninputfourdigits:");

scanf(u%s",str);

insert(str);

1

8.編寫一函數(shù),由實參傳來一個字符串,統(tǒng)計此字符串中字母、數(shù)字、空格和其它字符的個

數(shù),在主函數(shù)中輸入字符串以及輸出上述結(jié)果。

解:

#include<stdiooh)

chartongji(charstr0[100],intb[4)

(

inti;

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

{

if(strO[i]>=65&&str0[i]<=90IIstr0[i]>=97&&str0[i]<=122)b[0]++;

elseif(strO[i]>=48&&strO[i]<=57)b[1]++;

eIseif(str0[i]==32)b[2]++;

eIseb[3]++;

}

)

voidmain()

charstr1[100];staticinti,a[4];

gets(str1);

tongji(str1,a);

printf(uzimuShuziKonggeQita\nM);

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

printf(li%—8d”,a[i]);

printf(u\n");

)

9.寫一函數(shù),輸入一行字符,將此字符串中最長的單詞輸出。

解:

#include<stdiooh>

cechang(charstr1[100],word0[15])

(

inti=0,j=0,t=0;

staticcharwordl[15];

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

{if(!(str1[i]>=97&astr1[i]<=122||str1[i]>=65&&str1[i]<=90))

{t=j;j=0;continue;}

wordl[j]=str1[i];j++;

if(j>=t)strcpy(wordO,wordl);

}

}

voidmain()

charstrO[100],longword[15];

gets(strO);

cechang(strO,longword);

puts(longword);

}

10o寫一函數(shù)用“起泡法”對輸入的10個字符按由小到大的順序排列。

解:

#include<stdiooh>

intpaixu(intx[])

{

inti,j,t;

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

for(i=0;i<=9—j;i++)

if(x[i]>x[i+1]){t=x[i+l];x[i+1]=x[i];x[i]=t;)

)

voidmain()

(

inty[10];inti;

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

scanf("%cT,&y[i]);

paixu(y);

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

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

printf("\n");

J

11.輸入10個學(xué)生5門課的成績,分別用函數(shù)實現(xiàn)下列功能:

①計算每個學(xué)生平均分;

②計算每門課的平均分;

③找出所有50個分?jǐn)?shù)中最高的分?jǐn)?shù)所對應(yīng)的學(xué)生和課程;

解:

#include<stdio.h)

floatx1[10],x2[5];

floatpp(),cc(),find();

voidmain()

(

charname[10][20],cIass[5][20];

floatscore[10][5],max[5];inta[5],i,j;

for(i=0;i<10;i++)gets(name[i]);

for(j=0;j<5;j++)gets(class[j]);

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

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

scanf(u%fn,&score[i][j]);

pp(score);

cc(score);

find(score,max,a);

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

puts(name[i]);

printf("%.3f\n",x1[i]);

}

for(j=0;j<5;J++)

(

puts(class[j]);

printf(u%.3f\nn,x2[j]);

)

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

(

printf(3f\nJ,,max[j]);

puts(name[a[j]]);

puts(cIass[j]);

}

)

floatpp(floatf[10][5])

(

floatsum=0;inti,j;

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

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

sum=sum+f[i][j];

x1[i]=sum/5;

}

)

fIoatcc(fIoaty[10][5])

{

floatsum=0;inti,j;

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

(

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

sum=sum+y[i][j];

x2[j]=sum/10;

1

1

fIoatfind(floatz[10][5],s[5];intt[5])

(

inti,j;

for(j=0,s[j]=z[0][j];j<5;j++)

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

if(s[j]<z){s[j]=z[i][j];t[j]=i;}

}

12o寫幾個函數(shù):

①輸入10個職工的姓名和職工號;

②按職工號由小到大順序排序,姓名順序也隨之調(diào)整;

③要求輸入一個職工號,用折半法找出該職工的姓名,從主函數(shù)輸入要查找的職工號,輸出該職

工姓名。

解:

#include<stdiooh〉

#defineN10

find(inta[],b[])

{

inti,j,s,t,c[N][2];

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

{c[

溫馨提示

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

最新文檔

評論

0/150

提交評論