




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語(yǔ)言程序設(shè)計(jì)-譚浩強(qiáng)-第三版
一課后習(xí)題答案
1.5請(qǐng)參照本章例題,編寫一個(gè)C程序,輸出以下信息:
VeryGood!
解:
mian()
{printf(a**************************n);
printf("\n");
printf("VeryGood!\n");
printf("\n");
printf(a**************************n);
)
1.6編寫一個(gè)程序,輸入a、b、c三個(gè)值,輸出其中最大值。
解:
mian()
{inta,b,c,max;
printf(“請(qǐng)輸入三個(gè)數(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);
)
第三章
3.6寫出以下程序運(yùn)行的結(jié)果。
main()
{charcl='a,,c2=,b',c3='c',c4='\101',c5='\116';
printf(aa%cb%c\tc%c\tabc\nw,cl,c2,c3);
printf(w\t\b%c%c”,c4,c5);
}
解:
aatJbbMMLJccLJMLJLJMMabc
AUN
3.7要將“China”譯成密碼,譯碼規(guī)律是:用原來字母后面的第4個(gè)字母代替原
來的字母.例如,字母〃A〃后面第4個(gè)字母是〃E"."E〃代替"A〃。因此,"China"
應(yīng)譯為"Glmre"。請(qǐng)編一程序,用賦初值的方法使cl、c2、c3、c4、c5五個(gè)變
量的值分別為,'C,、'h,、'J、'd、'a,,經(jīng)過運(yùn)算,使cl、c2、
c3、c4、c5分別變?yōu)?G,、'1'、,、'r'、,e',并輸出。
解:
itinclude<stdio.h>
main()
{charcl=,C,,c2='h',c3=,i',c4=,n,,c5='a';
cl+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("密碼是%c%c%c%c%c\n”,cl,c2,c3,c4,c5);
)
運(yùn)行結(jié)果:
密碼是Glmre
3.9求下面算術(shù)表達(dá)式的值。
(1)x+a%3*(int)(x+y)%2/4
設(shè)x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
設(shè)a=2,b=3,x=3.5,y=2.5
(1)2.5
(2)3.5
3.10寫出程序運(yùn)行的結(jié)果。
main()
{inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d”,i,j,m,n);
)
解:
9,11,9,10
3.12寫出下面表達(dá)式運(yùn)算后a的值,設(shè)原來a=12。設(shè)a和n都已定義為整型變
量。
(1)a+=a(2)a-=2(3)a*=2+3(4)a/=a+a
(5)a%=(n%=2),n的值等于5
(6)a+=a-=a*=a
解:
(1)24(2)10(3)60(4)0(5)0(6)0
第四章
4.4若a=3,b=4,c=5,x=l.2,y=2.4,z=-3.6,u=51274,n=128765,cl=,a',
c2=,b,。想得到以下輸出格式和結(jié)果,請(qǐng)寫出程序(包括定義變量類型和設(shè)
計(jì)輸出)。
a=3b=4c=5
x=l.200000,y=2.400000,z=-3.600000
x+y=_3.600___y+z=-l.20___z+x=-2.40
cl='a'_or_97(ASCH)
c2='b'_or_98(ASCII)
main()
{inta=3,b=4,c=5;
longintu=51274,n=128765;
floatx=l.2,y=2.4,z=3.6;
charcl=,a',c2=,b,;
printf("a=%2db=%2dc=%2d\n”,a,b,c);
printf("x=%f,y=%f,z=%f\n〃,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("%s%s%d%s\n","cl=‘a(chǎn)'","or",cl,"(ASCH)”);
printfC%s%s%d%s\n","c2='a'","or〃,c2,"(ASCII)”);
)
4.7用scanf下面的函數(shù)輸入數(shù)據(jù),使a=3,b=7,x=8.5,y=71.82,cl=xAz,
c2二'a',問在鍵盤上如何輸入?
main()
{
inta,b;floatx,y;charclc2;
scanf("a=%d_b=%d",&a,&b);
scanf("_x=%f_y=%e",&x,&y);
scanf("_cl=%c_c2=%c",&cL&c2);
)
a=3__b=7
_x=8.5_y=71.82
_cl=A_c2=a
4.8鏈圓半徑r=l.5,圓柱高h(yuǎn)=3,求圓周長(zhǎng)、圓面積、圓球表面積、圓球體積、
圓柱體積。用scanf輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求文字說明,取小數(shù)
點(diǎn)后兩位數(shù)字。請(qǐng)編程序。
main()
{floatr,h,Cl,Sa,Sb,Va,Vb;
scanf("%f,%f",&r,&h);
Cl=2*3.14*r;
Sa=3.14*r*r;
Sb=4*Sa;
Va=4*3.14*r*r*r/3;
Vb=Sa*h;
printfCC1=%.2f\n",Cl);
printfCSa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n”,Sa,Sb,Va,Vb);
)
4.9輸入一個(gè)華氏溫度,要求輸出攝氏溫度。公式為
c=5(F-32)/9
輸出要求有文字說明,取位2小數(shù)。
main()
{floatF,c;
scanf&F);
c=5*(F-32)/9;
printf("c=%.2f”,c);
)
4.10編程序,用getchar函數(shù)讀入兩個(gè)字符給cl、c2,然后分別用函數(shù)和函
數(shù)輸出這兩個(gè)字符。并思考以下問題:(1)變量cl、c2應(yīng)定義為字符型或整形?
抑二者皆可?(2)要求輸出cl和c2值的ASCII碼,應(yīng)如何處理?用putchar
函數(shù)還是printf函數(shù)?(3)整形變量與字符變量是否在任何情況下都可以互
相代替?如:
charcl,c2;
與
intcl,c2;
是否無條件的等價(jià)?
#include"stdio.h"
mainO
{charcl,c2;
cl=getchar();c2=getchar();
putchar(cl);putchar\n');putchar(c2);putchar(,\n');
}
#include*stdio.h"
main()
{charcl,c2;
cl=getchar();c2=getchar();
printf("cl=%dc2=%d\n*?cl,c2);
printf("cl=%cc2=%c\n”,cl,c2);
)
第五章
5.1什么是算術(shù)運(yùn)算?什么是關(guān)系運(yùn)算?什么是邏輯運(yùn)算?
解:略。
5.2C語(yǔ)言中如何表示“真”和“假”?系統(tǒng)如何判斷一個(gè)量的“真”和
“假”?
解:設(shè)有一個(gè)邏輯表達(dá)式,若其結(jié)果為“真”,則以1表示;若其結(jié)果為“假”,
則以0表示。但是判斷一個(gè)邏輯量的值時(shí),以0代表“真”,以非。代表“假”。
例如3&&5的值為“真”,系統(tǒng)給出3&&5的值為1?
5.3寫出下面各邏輯表達(dá)式的值。設(shè)a=3,b=4,c=5?
(1)a+b>c&&b==c
(2)a||b+c&&b~c
(3)!(a>b)&&!c||1
(4)!(x=a)&&(y=b)&&0
(5)!(a+b)+c-l&&b+c/2
解:
(1)0
(2)1
(3)1
(4)0
(5)1
5.4有3個(gè)整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的數(shù)。
解:
方法一
4include<stdio.h>
main()
{inta,b,c;
printf(〃請(qǐng)輸入3個(gè)整數(shù):〃);
scanf("%d,%d,%d",&a,&b,&c);
if(a<b)
if(b<c)printf("max=%d\n”,c);
elseprintf("max=%d\n”,b);
elseif(a<c)printf("max=%d\n”,c);
elseprintf("max=%d\n”,a);
)
方法二:使用條件表達(dá)式,可以使程序更加簡(jiǎn)明、清晰。
程序如下:
Sinclude<stdio.h>
main()
{inta,b,c,temp,max;
printf(〃請(qǐng)輸入3個(gè)整數(shù):”);
scanf("%d,%d,%d",&a,&b,&c);
temp=(a>b)?a:b;
max=(temp>c)?temp:c;
printf("3個(gè)整數(shù)的最大數(shù)是%d\n",max);
)
5.5有一函數(shù):
寫一程序,輸入x值,輸出y值。
解:
Sinclude<stdio.h>
main()
{intx,y;
printf("輸入x:");
scanf&x);
if(x<l)
{y=x;
printf("x=%3d,y=x=%d\n”,x,y);
)
elseif(x<10)
{y=2*x-l;
printf("x=%3d,y=2*xT=%d\n”,x,y);
}
else
{y=3*x-ll;
printf("x=%3d,y=3*x-ll=%d\n/z,x,y);
)
}
5.6給一個(gè)百分制成績(jī),要求輸出等級(jí)'A'、'B,、'C'、'D'、'E'。
90分以上為'A',80~90分為'B',70~79分為'C',60分以下為‘D'。
解:
程序如下:
^include<stdio.h>
main()
{floatscore;
chargrade;
case2:
printf(〃請(qǐng)輸入學(xué)生成績(jī):〃);
scanf("%f”,&score);
while(score>100||(score<0)
{printf("\n輸入有誤,請(qǐng)重新輸入:〃);
scanf("%f”,&score);
)
switch((int)(score/10))
{case10:
case9:grade.N;break;
case8:grade='B';break;
case7:grade—7;break;
case6:grade='D';break;
case5:
case4:
case3:
case1:
case0:grade.E’;
}
printf("成績(jī)是%5.If,相應(yīng)的等級(jí)是%c。\n",score,grade);
}
說明:對(duì)輸入的數(shù)據(jù)進(jìn)行檢查,如小于0或大于100,要求重新輸入。
(int)(score/10)的作用是將(score/10)的值進(jìn)行強(qiáng)制類型轉(zhuǎn)換,得到一個(gè)整
型值。
5.7給定一個(gè)不多于5位的正整數(shù),要求:①求它是幾位數(shù);②分別打印出
每一位數(shù)字;③按逆序打印出各位數(shù)字。例如原數(shù)為321,應(yīng)輸出123。
解:
^include<stdio.h>
main()
{longintnum;
intindiv,ten,hundred,thousand,ten_thousand,place;
printf("請(qǐng)輸入一個(gè)整數(shù)(0^99999):〃);
scanf&num);
if(num>9999)place=5;
elseif(num>999)place=4;
elseif(num>99)place=3;
elseif(num>9)place=2;
elseplace=l;
printf("place=%d\n",place);
ten_thousand=num/10000;
thousand=num/1000%10;
hundred=num/100%10;
ten=num%100/10;
indiv二num%10;
switch(place)
{case5:
printf(z,%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;
case4:printf("%d,%d,%d,%d”,thousand,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("%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:printfindiv);
printf(〃\n反序數(shù)字為:〃);
printf("%d\n",indiv);
break;
)
)
5.8企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)I低于或等于10萬元時(shí),獎(jiǎng)金可提成
10%;利潤(rùn)高于10萬元,低于20萬元(10000(X1W200000)時(shí),其中10萬元
按10%提成,高于10萬元的部分,可提成7.5%;200000<1^400000時(shí),其中
20萬元仍按上述辦法提成(下同),高于20萬元的部分按5%提成;
400000<14600000時(shí),高于40萬元的部分按3%提成;600000〈IW1000000時(shí),
高于60萬的部分按1.5%提成;D1000000時(shí),超過100萬元的部分按1%提成。
從鍵盤輸入當(dāng)月利潤(rùn)I,求應(yīng)發(fā)放獎(jiǎng)金總數(shù)。要求:(1)用if語(yǔ)句編程序;(2)
用switch語(yǔ)句編程序。
解:計(jì)算利潤(rùn)時(shí),要特別注意不同利潤(rùn)的不同提成比例。例如,利潤(rùn)為15萬元,
其中有10萬元按10%的比例提成,另外5萬元?jiǎng)t按7.5%提成。
(1)用if語(yǔ)句編程序。
ttinclude<stdio.h>
main()
{longi;
floatbonus,bonl,bon2,bon4,bon6,bonlO;
bonl=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
printf("請(qǐng)輸入利潤(rùn)i:");
scanf&i);
if(i<=100000)
bonus=i*0.1;
elseif(i<=200000)
bonus=bonl+(i-100000)*0.075;
elseif(i<=400000)
bonus=bon2+(i-200000)*0.05;
elseif(i<=600000)
bonus=bon4+(i-400000)*0.03;
elseif(i<=1000000)
bonus=bon6+(i-600000)*0.015;
else
bonus=bonl0+(i-1000000)*0.01;
printf(”獎(jiǎng)金是%10.2f\n”,bonus);
)
此題的關(guān)鍵在于正確寫出每一區(qū)間的獎(jiǎng)金計(jì)算公式。例如利潤(rùn)在10萬元至20
萬時(shí),獎(jiǎng)金應(yīng)由兩部分組成:①利潤(rùn)為10萬元時(shí)應(yīng)得的獎(jiǎng)金。即100000x0.1;
②10萬元以上部分應(yīng)得的獎(jiǎng)金。即(num-100000)X0.075。同理,20萬?40萬
這個(gè)區(qū)間的獎(jiǎng)金也應(yīng)由兩部分組成:①利潤(rùn)為20萬元時(shí)應(yīng)得的獎(jiǎng)金,即100000
x0.1x1075x0.075;②20萬元以上部分應(yīng)得的獎(jiǎng)金,即(num-200000)x0.05o
程序中先把10萬、20萬、40萬、60萬、100萬各關(guān)鍵點(diǎn)的獎(jiǎng)金計(jì)算出來,即
bonl、bon2、bon4、bon6、honlO;然后再加上各區(qū)間附加部分的獎(jiǎng)金。
(2)用switch語(yǔ)句編程序。
輸入利潤(rùn)i,確定相應(yīng)的提成等級(jí)branch
根據(jù)branch確定獎(jiǎng)金值
0獎(jiǎng)金=i*0.1
1獎(jiǎng)金=bonl+(i-105)*0.075
2獎(jiǎng)金=bon2+(i-2*105)*0.05
3
4獎(jiǎng)金=bon4+(i-4*105)*0.03
5
6獎(jiǎng)金=bon6+(i-6*105)*0.015
7
8
9
10獎(jiǎng)金=bonlO+(i-106)*0.01
輸出獎(jiǎng)金
Sinclude<stdio.h>
mainO
{longi;
floatbonus,bonl,bon2,bon4,bon6,bonlO;
intc;
bonl=100000*0.1;
bon2=bonl+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
printf("請(qǐng)輸入利潤(rùn)i:”);
scanf&i);
c=i/100000;
if(c>10)c=10;
switch(c)
{case0:bonus=l*0.1;break;
case1:bonus=bonl+(i-100000)*0.075;break;
case2:
case3:bonus=bon2+(i-200000)*0.05;break;
case4:
case5:bonus=bon4+(i-400000)*0.03;break;
case6:
case7:
case8:
case9:bonus=bon6+(i-600000)*0.015;break;
case10:bonus=bonl0+(i-1000000)*0.01;
)
printf("獎(jiǎng)金是%10.2f”,bonus);
}
5.9輸入4個(gè)整數(shù),要求按由大到小的順序輸出。
解:此題采用依次比較的方法排出其大小順序。在學(xué)習(xí)了循環(huán)和數(shù)組以后,可
以有更多的排序方法。
#include<stdio.h>
main()
{intt,a,b,c,d;
printf(”請(qǐng)輸入4個(gè)整數(shù):〃);
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("\na=%d,b=%d,c=%d,d=%d\n”,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é)果如下:\n〃);
printf("%d,%d,%d,%d\n”,a,b,c,d);
5.10有4個(gè)圓塔,圓心分別為(2,2)、(-2,2)、(2,-2)、(-2,-2),圓半徑
為1。這4個(gè)塔的高度分別為10m。塔以外無建筑物。今輸入任一點(diǎn)的坐標(biāo),求
該點(diǎn)的建筑高度(塔外的高度為零)。
程序如下:
4include<stdio.h>
main()
{inth=10;
floatxl=2,yl=2,x2=-2,y2=2,x3=-2,y3=-2,x4=-2,y4=-2,x,y,dl,d2,d3,d4;
printf("請(qǐng)輸入一個(gè)點(diǎn)(x,y):");
scanf("%f,%f",&x,&y);
dl=(x-xl)*(x-xl)+(y-y1)*(y-yl);
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(dl>l&&d2>l&&d3>l&&d4>l)h=0;
printf("該點(diǎn)高度為%d\n",h);
第六章
第六章循環(huán)控制
6.1輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。
main()
{longm,n,i=l,j,s;
scanf%ld",&m,&n);
for(;i<=m&&i<=n;i++)
{if(m%i=0&&n%i=0)s=i;}
if(m>=n)j=m;
elsej=n;
for(;!(j%m==0&&j%n==0);j++);
printf("s=%ld,j=%ld\n”,s,j);
}
6.2輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其他字符的個(gè)數(shù)。
#include"stdio'h”
main()
{charc;inti=0,j=0,k=0,1=0;
while((c=getchar())!=,\n,)
{if(c>=65&&c<=90||c>=97&&c<=122)i++;
elseif(c>=48&&c<=57)j++;
elseif(c==32)k++;
else1++;}
printf(*i=%d,j=%d,k=%d,l=%d\n”,i,j,k,1);
)
6.3求Sn=a+aa+aaa+…+aa…aaa(有n個(gè)a)之值,其中a是一個(gè)數(shù)字。例如:
2+22+222+2222+22222(n=5),n由鍵盤輸入。
ttinclude^math.h"
main()
{intn,sum=0,i=l,s=2;
scanf&n);
while(i<=n)
{sum=sum+s;s=s+2*pow(10,i);
i++;}
printf("sum=%d\n”,sum);
)
6.4求,(即求1!+2!+3!+4!+5!+…+20!)
main()
{intn,i=l;longsum=0,s=l;
scanf&n);
while(i<=n){s=s*i;sum=sum+s;i++;}
printf("sum=%ld\n”,sum);
}
6.5求
mainO
{doublei=l,j=l,k=l,sl=0,s2=0,s3=0,sum;
for(;i<=100;i++)sl=sl+i;
for(;j<=50;j++)s2=s2+j*j;
for(;k<=10;k++)s3=s3+l/k;
sum=sl+s2+s3;
printf("sum=%f\n”,sum);
}
6.6打印出所有〃水仙花數(shù)〃,所謂〃水仙花數(shù)〃是指一個(gè)三位數(shù),其各位數(shù)字立方
和等于該本身。例如:153是一個(gè)水仙花數(shù),因?yàn)?53=廠3+5-3+3-3。
ttinclude^math.h"
main()
{intx=100,a,b,c;
while(x>=100&&x<1000){a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b;
if(x==(pow(a,3)+pow(b,3)+pow(c,3)))printf("%5d”,x);x++;}
)
6.7一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為〃完數(shù)〃。例如,6的因子
為1、2、3,而6=1+2+3,因此6是"完數(shù)"。編程序找出1000之內(nèi)的所有完數(shù),
并按下面格式輸出其因子:
6itsfactorsare1、2、3
main()
{intm,i,j,s;
for(m=6;m<10000;m++)
{s=l;
for(i=2;i<m;i++)
if(m%i==0)s=s+i;
if(m-s==0)
{printf("%5ditsfastorsare1”,m);for(j=2;j<m;j++)if(m%j==0)
printf(z,%d",j);printf("\n");}
}
)
或
main()
{intm,i,j,s;
for(m=6;m<1000;m++)
{s=m-l;
for(i=2;i<m;i++)
if(m%i==O)s=s-i;
if(s==0)
{printf(^%5ditsfastorsare1m);for(j=2;j<m;j++)if(m%j==0)
printf("%d",j);printf("\n");}
}
}
6.8有一分?jǐn)?shù)序列:
求出這個(gè)數(shù)列的前20項(xiàng)之和。
main()
{inti=l,n;doublet,x=l,y=2,s,sum=0;
scanf("斷d”,&n);
while(i<=n){s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}
printf("%f\n",sum);
}
6.9一球從100米高度自由下落,每次落地后返回原高度的一半,再落下。求它
在第10次落地時(shí)共經(jīng)過多少米?第10次反彈多高?
main()
{inti,n;doubleh=100,s=100;
scanf&n);
for(i=l;i<=n;i++)
{h*=0.5;if(i=l)continue;s=2*h+s;}
printf("h=%f,s=%f\n”,h,s);
}
6.10猴子吃桃問題。猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過癮,
又多吃了一個(gè)。第二天早上又將剩下的桃子吃掉一半,又多吃一個(gè)。以后每天
早上都吃了前一天剩下的一半零一個(gè)。到第10天早上想再吃時(shí),見只剩下一個(gè)
桃子了。求第一天共摘多少桃子。
main()
{inti=l,sum=0;
for(;i<=10;sum=2*sum+l,i++);
printf("sum=%d\n”,sum);
)
6.11用迭代法求。求平方根的迭代公式為:
要求前后兩次求出的得差的絕對(duì)值少于0.00001o
#include"math?h”
main()
{floatxO,xl,a;
scanf&a);
xl=a/2;
do
{x0=xl;xl=(xO+a/xO)/2;}
while(fabs(xO-xl)>=O.OOOO1);
printf(“先3f\n",xl);
)
6.12用牛頓迭代法求方程在1.5附近的根。
main()
{doublex,y;x=l.5;
do{y=2*x*x*x-4*x*x+3*x-6;
x=x-y/(6*x*x-8*x+3);}
while(y!=0);
printf("x=%.3f\n”,x);
}
6.13用二分法求方程在(TO,10)之間的根
main()
{doublexl,x2,yl,y2;xl=-10;x2=10;
do{y1=2*x1*x1*x1-4*x1*x1+3*x1-6;
xl=xl-yl/(6*xl*xl-8*xl+3);}
while(yl!=0);
do
{y2=2*x2*x2*x2-4*x2*x2+3*x2-6;
x2=x2-y2/(6*x2*x2-8*x2+3);}
while(y2!=0);
printf("xl=%,3f,x2=%.3f\n",xl,x2);
}
6.14打印以下圖案
*
***
*****
*******
*****
***
*
ttinclude^math.h"
main()
{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++)
printfC");
for(k=0;k<=4-2*i;k++)
printf(〃*");
printf("\n");
)
)
第七章
第七章數(shù)組
7.1用篩法求之內(nèi)的素?cái)?shù)。
main()
{inti,j,a[100];
for(i=2;i<100;i++)
{a[i]=i;
for(j=2;j<=i;j++)
{if(j<i)
if(a[i]%j==0)
break;
if(a[i]-j==0)
printf("%5d",a[i]);
)
)
printf("\n");
)
或
#include*math.h"
main()
{staticinti,j,k,a[98];
for(i=2;i<100;i++)
{a[i]=i;k=sqrt(i);
for(j=2;j<=a[i];j++)
if(j<k)if(a[i]%j=O)
break;
if(j>=k+l)
printf("%5d",a[i]);
)
printf(*Xn*);
)
7.2用選擇法對(duì)10個(gè)整數(shù)從小到大排序。
main()
{inti,j,a[10],t;
for(i=0;i<10;i++)
scanf("%d”,&a[i]);
for(j=l;j<10;j++)
for(i=0;i<=9-j;i++)
if(a[i]>a[i+l])
{t=a[i+l];a[i+l]=a[i];a[i]=t;}
for(i=0;i<10;i++)
printf(*%5d*?a[i]);
)
或
mainO
{staticinta[10],i,j,k,t;
for(i=l;i<ll;i++)
scanf("%d”,&a[i]);
for(j=l;j<10;j++)
for(i=l;i<=10-j;j++)
if(a[i]>a[i+l])
{t=a[i+l];a[i+l]=a[i];a[i]=t;}
for(i=l;i<ll;i++)
printfa[i]);
printf("\n");
)
7.3求一個(gè)3X3矩陣對(duì)角線元素之和。
main()
{inti=0,j=0,a[3][3],si,s2;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d”,&a[i][j]);
sl=a[0][0]+a[l][l]+a[2][2];
s2=a[0][2]+a[l][l]+a[2][0];
printf(*sl=%d,s2=%d\n”,si,s2);
)
或
main()
(
staticinti,j,si,s2,a[3][3];
for(i=l;i<=3;i++)
for(j=l;j<=3;j++)
scanf&a[i][j]);
sl=a[l][l]+a[2][2]+a[3][3];
s2=a[l][3]+a[2][2]+a[3][l];
printf("%d,%d\n”,si,s2);
)
7.4已有一個(gè)已排好的數(shù)組今輸入一個(gè)數(shù)要求按原來排序的規(guī)律將它插入數(shù)組
中。
main()
{staticinta[10]={l,7,8,17,23,24,59,62,101};inti,j,t;
scanf&a[9]);
for(i=9;i>0;i—)
if(a[i]<a[i-ll)
{t=a[i-l];a[i-l]=a[i];a[i]=t;}
for(i=0;i<10;i++)
printf("%5d",a[i]);printf("\n");
)
或
main()
(
staticinta[5]={l,4,5,6,7};
inti,t,b;
scanf("%d",&b);
for(i=0;i<5;i++)
{if(b<=a[i])
{t=a[i];a[i]=b;b=t;}
printf(*%d”,a[i]);}
printfb);
)
7.5將一個(gè)數(shù)組的值按逆序重新存放,例如,原來順序?yàn)椋?,6,5,4,1?要
求改為:1,4,5,6,8o
main()
{inti,b[10];
for(i=0;i<10;i++)
scanf("%d”,&b[i]);
for(i=9;i>-l;i—)
printf("%5d",b[i]);
printf("\n");}
7.6打印出以下楊輝三角形(要求打印出10行)。
1
11
121
1331
14641
15101051
main()
(
staticintm,n,k,b[15][15];
b[0][l]=l;
for(m=l;m<15;m++)
(
for(n=l;n<=m;n++)
(
b[m][n]=b[m-l][n-l]+b[m-l][n];
printf("%-5d”,b[m][n]);
)
printf("\n〃);
)
)
)
或
mainO
{inti,j,n,k,a[10][10];
statica[][l]={{l},{1},{1},{1},{1},{1},{1},{1},{1},{1}};
a[l][1]=1;
for(k=2,k<ll;k++)
for(i=2;i<=k;i++)
for(j=2;j<=i;j++)
a[i][j]=a[i-l][j-l]+a[i-l][j];
for(k=l;k<ll;k++)
for(i=l;i<=k;i++)
for(j=l;j<=i;j++)
printfa[i][j]);
)
7.7打印“魔方陣”,所謂魔方陣是指這樣的方陣,它的每一行、每一列和對(duì)
角線之和均相等。例如,三階魔方陣為
816
357
492
要求打印出由1?n2的自然數(shù)構(gòu)成的魔方陣。
解:
#include<stdio.h>
main()
{inta[16][16],i,i,k,p,m,n;
P=l:
while(p=l)
{printf(*Entern(n=l~15):”);
scanf&n);
if((n!=0)&&(n<=15)&&(n%2!=0))p=0;
)
for(i=l;i<=n;i++)
for(j=l;j<=n;j++)a[i][j]=0
7-8
#include<iostream>
voidmain()
inta[4][4],i,j,max,min,kl,k2,flag:
printf("輸入一個(gè)4*4的數(shù)組"也");
for(i=0;i<4;i++)
(
for(j=0;j<4;j++)
(
scanf(*%d*,&a[i][j]):
)
)
printf("鞍點(diǎn)為:\n\n");
for(i=0;i<4;i++)
{
max=a[i][0];
for(j=0;j<4;j++)
|
if(max<=a[i][j])
(
max=a[i][j];
kl=j;
)
)
min=a[0][kl];
for(j=0;j<4;j++)
(
if(min>=a[j][kl])
(
min=a[j][kl];
k2=j;
)
)
if((max!=min))flag=0;
else
(
flag=l;
printf("%d\n",max);
break;
)
if(flag==0)printf("不存在\n\n");
7-9
#include<iostream>
voidmain()
(
floata[15]={100,98,65,55,34,23,23,12,11,9,7,6,4,3,2},n;
inti,low,high,mid;
printf("原數(shù)組為:\n\n");
for(i=0;i<15;i++)
(
printf("%6.2f”,a[i]);
)
printf("\n\n輸入一個(gè)數(shù)n\n\n");
scanf("%f",&n);
low=0;
high=14;
i=0;
whi1e(1ow<=high)
(
mid=(low+high)/2;
if(a[mid]==n)
(
printf("該數(shù)是數(shù)組中第%d個(gè)元素\n\n”,mid+1);
i++;
break;
)
elseif(a[mid]<n)high=mid-l;
elselow=mid+l;
)
if(i==0)printf("無此數(shù)。\n\n");
)
7-10
#include<iostream>
voidmain()
(
chara[3][80];
inti,j,upon=0,low=0,num=0,spa=0,oth=0;
for(i=0;i<3;i++)
printf(〃輸入第%d行文字\n\n",i);
gets(a[i]);
for(j=0;j<80&&a[i][j]!='\0';j++)
if(a[i][j]>=,A*&&a[i][j]<='Z')upon+=l;
elseif(a[i][j]>=,a&&a[i][j]<=,z')low+=l;
elseif(a[i][j]>=48&&a[i][j]<=57)num+=l;
elseif(a[i][j]=,')spa+=l;
elseoth+=l;
)
)
printf("英文大寫字母:%d個(gè)\n\n”,upon);
printf("英文小寫字母:%d個(gè)\n\n”,low);
printf("數(shù)字:%d個(gè)\n\n”,num);
printf("空格:%d個(gè)\n\n”,spa);
printf(〃其他字符:%d個(gè)\11\11”,oth);
)
7-11
#include<iostream>
voidmain()
(
inti,j;
for(i=0;i<5;i++)
(
for(j=0;j<=i;j++)
(
printf("");
)
for(j=i;j<i+5;j++)
(
printf。*;
)
printf("\n");
)
)
7-12
#include<iostream>
voidmain()
(
chara[80],b[80];
inti,j;
printf("輸入密碼也也");
gets(a);
for(i=0;i<80&&a[i]!-\0*;i++)
(
if((a[i]>=,A,)&&(a[i]<=,Z'))
(
b[i]=155-a[i];
)
elseif((a[i]>=,a')&&(a[i]<='z'))
|
b[i]=219-a[i];
)
elseb[i]=a[i];
)
b[i]八O';
printf("密文為:\n\n*);
puts(a);
printf("原文為:\n\n*);
puts(b);
7-13
^include<iostream>
voidmain()
(
chara[80],b[80];
inti,j,k;
printf(〃輸入第1個(gè)字符串\n\n〃);
gets(a),
printf(:輸入第2個(gè)字符串\n\n〃);
gets(b);
for(i=0;i<80;i++)
(
if(a[i]—\0,)
(
k=i;
for(j=0;j<80&&b[j]!='\0';j++)
(
a[k]=b[j];
k++;
)
a[k]=\0,;
break;
}
printf(〃連接后字符串為:\n\n");
puts(a);
7-14
4include<iostream>
voidmain()
(
chara[80],b[80];
inti,j,k;
printf("輸入第1個(gè)字符串\n\n");
gets(a);
printf("輸入第2個(gè)字符串\n\n");
gets(b);
for(i=0;(i<80)&&(a[i]!=\0*)&&(b[i]!=\0*);i++)
(
k=a[i]-b[i];
if(k>0)
(
printfC\n\n字符串a(chǎn)大于字符串b:%4d\n\n",k);
break;
)
elseif(k<0)
{
printf("\n\n字符串a(chǎn)小于字符串b:%4d\n\n",k);
break;
)
elsek=0;
)
if(k==O)printfC\n\n字符串a(chǎn)等于字符串b:%4d\n\n",k);
}
7-15
4include<iostream>
voidmain()
(
charsi[80],s2[80];
inti,j;
printf("輸入數(shù)組sl\n\n");
gets(si):
printf("輸入數(shù)組s2\n\n");
gets(s2);
for(i=0;i<80&&s2[i]!=\0J;i++)
(
sl[i]=s2[i];
)
sl[i]-\0*;
printf("\n\n復(fù)制后的數(shù)組為:\n\n");
puts(si);
)
第八章
8-1
^include<iostream>
voidmain()
{
intmax_div(int,int);
intmin_mul(int,int);
intm,n;
printf("輸入兩個(gè)整數(shù)\n\n");
scanf("%d%d”,&m,&n);
if(max_div(m,n)==0)printf("\n\n無最大公約數(shù)為、n\n");
elseprintf("\n\n最大公倍數(shù)為:%d\n\n",max_div(m,n));
printf("\n\n最大公倍數(shù)為:%d\n\n",min_mul(m,n));
)
intmax_div(intkl,intk2)
(
intmin(int,int);
inti,k,flag;
k=min(kl,k2);
for(i=k;i>l;i-)
(
if((kl%i=0)&&(k2%i==0))
(
return(i);
flag=l;
break;
)
elseflag=0;
)
if(flag=0)return(0);
)
intmin_mul(intkl,intk2)
intmax(int,int);
inti,k;
k=max(kl,k2);
for(i=k;;i++)
(
if((i%kl==O)&&(i%k2==0))
(
return(i);
break;
)
)
}
intmin(intkl,intk2)
(
intmin;
min=kl;
if(kl>k2)min=k2;
return(min);
)
intmax(intkl,intk2)
(
intmax;
max=kl;
if(kl<k2)max=k2;
return(max);
)
8-2
^include<iostream>
^include<math.h>
voidmain()
(
voidrootl(float,float,float);
voidroot2(float,float,float);
voidroot3(float,float,float);
floata,b,c,k;
printf("輸入a,b,c的值\n\n");
scanf",&a,&b,&c);
k=b*b-4*a*c;
if(k>0)rootl(a,b,c);
elseif(k==0)root2(a,b,c);
elseroot3(a,b,c);
)
voidrootl(floata,floatb,floatc)
floatp,q;
p=-b/(2*a);
q=sqrt(b*b-4*a*c)/(2*a);
printf("\n\n方程的兩個(gè)根為:xl=%6.2f,x2=%6.2f\n\n”,p+q,p-q);
}
voidroot2(floata,floatb,floatc)
(
floatp;
p=-b/(2*a);
printf("\n\n方程的兩個(gè)根為:xl=x2=%6.2f\n\n",p);
)
voidroot3(floata,floatb,floatc)
(
floatp,q;
p=-b/(2*a);
q=sqrt(-b*b+4*a*c)/(2*a);
printf(*\n\n方程的兩個(gè)根為
xl=%6.2f+%6.2fi,x2=%6.2f-%6.2fi\n\n*,p,q,p,q);
)
8-3
Sinclude<iostream>
voidmain()
(
intprime(int);
intx;
printf("輸入一個(gè)正整數(shù)\n\n〃);
scanf&x);
if(prime(x)==0)printf("\n\n此數(shù)為素?cái)?shù)\n\n");
elseprintf("\n\n此數(shù)不是素?cái)?shù)\n\n");
)
intprime(intx)
(
inti,flag;
for(i=2;i<x;i++)
(
if(x%i==0)
(
flag=l;
break;
)
elseflag=0;
return(flag);
)
8-4
#include<iostream>
voidmain()
(
voidexchange(inta[3][3]);
inta[3][3],i,j;
printf("輸入一個(gè)3*3的矩陣\n\n");
for(i=0;i<3;i++)
(
for(j=0;j<3;j++)
(
scanf&a[i][j]);
)
)
exchange(a);
printf("\n\n轉(zhuǎn)置后的矩陣為:\n\n");
for(i=0;i<3;i++)
(
for(j=0;j<3;j++)
(
printf(*%d*,a[i][j]);
)
printf(〃\n");
)
)
8-5
#include<iostream>
voidmain()
(
voidexchange(charstr[]);
charstr[80];
printf("輸入一個(gè)字符串\n\n");
gets(str);
exchange(str);
printf("\n\n反序字符串為:\n\n");
puts(str);
)
voidexchange(charstr[])
inti,j,k;
chartemp;
for(i=0;;i++)
(
if(str[i]=='\0')break;
)
k=i/2;
for(j=0;j<=k;j++)
(
temp=str[j];
str[j]=str[i-l-j];
str[i-l-j]=temp;
)
str[i]=\0J;
)
8-6
#include<iostream>
voidmain()
(
voidstrcat(charstrl[],charstr2[]);
charstrl[80],str2[80];
printf("輸入strl\n\n*);
gets(strl);
printf("\n\n輸入str2\n\n");
gets(str2);
strcat(strl,str2);
printf(*\n\n連接后的字符串為:\n\n");
puts(strl);
}
voidstrcat(charstrl[],charstr2[])
(
inti,j;
for(i=0;;i++)
(
if(strl[i]=\0J)
(
for(j=0;str2[j]!=>\0*;j++)
(
strl[i]=str2[j];
i+=l;
)
break;
)
strl[i]-\0*;
)
8-7
#include<iostream>
voidmain()
(
voidstrcpy(charstrl[],charstr2[]);
charstrl[80],str2[80];
printf("輸入str2\n\n");
gets(str2);
strcpy(strl,str2);
printf("\n\n復(fù)制后的字符串為:\n\n");
puts(strl);
)
voidstrcpy(charstrl[],charstr2[])
(
inti,j=0;
for(i=0;str2[i]!=>\0*;i++)
(
if((str2[i]==a)II(str2[i]=e)II(str2[i]=i*)||(str2[i]='o'
)II(str2[i]==u))
(
strl[j]=str2[i];
j++;
)
)
strl[j]-\0*;
)
8-8
#include<iostream>
voidmain()
(
voidstradd(charstr[]);
charstr[80];
printf("輸入一串?dāng)?shù)字\n\n");
gets(str);
stradd(str);
printfC\n\n加空格后的字符串\n\n〃);
puts(str);
}
voidstradd(charstr口)
chara[80];
inti=0,j;
for(j=0;str[j]!-\0J;j++)
(
a[i]=str[j];
a[i+l]='
i+=2;
)
a[i]-\0*;
for(i=0;a[i]!='\0';i++)
(
str[i]=a[i];
)
str[i]-\0';
8-9
Sinclude<iostream>
voidmain()
voidnum(charstr口,inta[]);
charstr[80];
inta[4]={0};
printf("輸入一個(gè)字符串\n\n");
gets(str);
num(str,a);
printf("字母?jìng)€(gè)數(shù)為:%d\n”,a[0]);
printf(〃數(shù)字個(gè)數(shù)為:%d\n",a[l])
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店行業(yè)盈利能力分析試題及答案
- 2025至2030年中國(guó)中老型鈣咀嚼片市場(chǎng)調(diào)查研究報(bào)告
- 債券基金面試試題及答案
- 小自考行政管理信息共享試題及答案
- 二級(jí)建造師考試全景復(fù)習(xí)試題及答案
- 2024年市場(chǎng)營(yíng)銷小自考試題和答案審核
- 2024食品安全員考試前的資料準(zhǔn)備試題及答案
- 《小數(shù)除法-一個(gè)數(shù)除以小數(shù)》教學(xué)設(shè)計(jì)-2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)人教版
- 2024年物理創(chuàng)思考問卷試題及答案
- 2024年CPBA考試備考心態(tài)調(diào)整試題及答案
- 湖北省部分名校2024-2025學(xué)年高二下學(xué)期3月聯(lián)考物理試卷(A)(原卷版+解析版)
- 第5課+光色交匯+課件-2024-2025學(xué)年浙人美版(2024)初中美術(shù)七年級(jí)下冊(cè)
- (2025)政工職稱考試題庫(kù)(附參考答案)
- 臨沂考科目一試題及答案
- 2025年初級(jí)等保測(cè)評(píng)試題及答案
- 2025年全國(guó)中小學(xué)生安全知識(shí)競(jìng)賽參考試題庫(kù)500題(含答案)
- DB11∕T493.1-2024道路交通管理設(shè)施設(shè)置規(guī)范 第1部分:道路交通標(biāo)志
- 教師如何使用AI開展教學(xué)DeepSeek使用指南人工智能 課件
- 2025新人教版七年級(jí)下語(yǔ)文-4.16《有為有不為》教案教學(xué)設(shè)計(jì)
- (二調(diào))武漢市2025屆高中畢業(yè)生二月調(diào)研考試 生物試卷(含標(biāo)準(zhǔn)答案)
- 2025年寧夏建設(shè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)一套
評(píng)論
0/150
提交評(píng)論