




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年級上冊數(shù)學(xué)教案-第1單元 兩、三位數(shù)乘一位數(shù)第12課時 練習(xí)三(1)|蘇教版
- 2025年企業(yè)員工體檢協(xié)議先例文本
- 2025安全員B證考試題庫附答案
- 第一單元(整體教學(xué)設(shè)計)-2024-2025學(xué)年九年級語文下冊大單元教學(xué)名師備課系列(統(tǒng)編版)
- 二零二五年度物聯(lián)網(wǎng)渠道框架合作協(xié)議
- 2025年度房屋租賃合同房東責(zé)任保險附加版
- 2025年度返點(diǎn)合作協(xié)議版:新零售場景下的返利機(jī)制約定
- 2025年度全款購車汽車用品贈送合同范本
- 2025年貴州城市職業(yè)學(xué)院單招職業(yè)傾向性測試題庫附答案
- 2025年度煙酒店區(qū)域市場拓展與渠道建設(shè)合作協(xié)議合同
- 《伊利乳業(yè)集團(tuán)企業(yè)內(nèi)部審計存在的問題及優(yōu)化對策分析案例(論文)10000字》
- 反假貨幣培訓(xùn)考試題庫-相關(guān)法律法規(guī)及規(guī)范性文件知識考題
- 鉆井安全操作規(guī)程中英文
- 體育《網(wǎng)球正手擊球》教學(xué)PPT
- 離心機(jī)操作規(guī)程
- 富氫水水素水推廣方法
- 煤礦職業(yè)衛(wèi)生培訓(xùn)課件2023
- 某小學(xué)申報廣州市義務(wù)教育規(guī)范化學(xué)校自評分說明
- 面神經(jīng)炎課件完整版
- 根據(jù)銅價計算各種電纜參考價格
- 湘教版五年級下冊美術(shù)教學(xué)計劃
評論
0/150
提交評論