




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C程序設(shè)計(jì)(第四版)(譚浩強(qiáng))第-
章課后習(xí)題答案
P10067.7的一幕塔點(diǎn)支辱,
^include<stdio.h>〃預(yù)編譯.代碼均調(diào)試成功,若有失誤大多不是代碼問題.自己找找.
intmain()
(
printf(,zWelcometomybbing.com\n,?);
return0;〃與intmain對應(yīng),為了程序可移植性,建議全用intmain+return0;.
)
poog1.2東兩小救的命,
#include<stdio.h>
intmain()
(
inta,b,sum;
a=5;
b=4;
sum=a+b;
printf(,zThesumis%d.\n〃,sum);
return0;
)
POOg1.3碉用褊裁比較兩必裁的人小,
#include<stdio.h>
intmain()
(
intmax(intx,inty);〃被調(diào)用函數(shù)在主函數(shù)后面,用前先聲明.
inta,b,c;
scanf(〃&l,%d〃,&a,&b);〃輸入時(shí)要按格式來,此處的逗號,用空格會發(fā)生錯誤.
c=max(a,b);//a,b作為實(shí)參傳入被調(diào)用函數(shù)中.
printf("Themaxis%d.\n〃,c);
return0;
}
intmax(intx,inty)〃定義了兩個(gè)形參.
intz;〃z屬于局部變量,可與主函數(shù)中相同名字.
if(x>y)
z=x;
else
z=y;
return(z);〃z作為整個(gè)程序的出口值,賦給主函數(shù)中的c.
)
P0150.6三小版的人小,(敏生。表示薛后琳習(xí)題,
#include<stdio.h>
intmain()
(
inta,b,c,d;〃€1是用于存儲最大值的.
intmax(intx,inty,intz);〃測試可知,在VS2008中,可以不預(yù)先聲明.
printf(,zPleaseinput3numbers:\n〃);
scanfC%d%d%d〃,&a,&b,&c);
d=max(a,b,c);〃調(diào)用函數(shù)中有三個(gè)形參,這里需要傳入三個(gè)實(shí)參,才可運(yùn)算.
printf("Themaxis:%d.\n",d);//d可以換成max(a,b,c).
)
intmax(intx,inty,intz)
(
intm;
if(x>y&&x>z)〃求三者之大的一種方法.
m=x;
if(y>x&&y>z)
m=y;
if(z>y&&z>x)
m=z;
return(m);〃返回值m給主函數(shù)中的d.
)
c程序設(shè)計(jì)(第四版)(譚浩強(qiáng))第2章課
后習(xí)題答案
算法一一程序的靈魂
P0172.1計(jì)算機(jī)7-5相乘的汆,
#include<stdio.h>
intmain()
(
inti,s=l;〃在執(zhí)行數(shù)值操作前一定要先有個(gè)初值.
for(i=l;i<6;i++)〃這里是到6.
(
s=s*i;〃相乘
}
printf(z,Thesumis%d.\n",s);
return0;
}
^include<stdio.h>〃作出要求:換成1到11間奇數(shù)相乘.
intmain()
(
inti,s=l;〃在執(zhí)行數(shù)值操作前一定要先有個(gè)初值.
for(i=l;i<12;i++)〃這里是到,但題R要求的是取單數(shù).也可以是1=1+2
(
if(i%2!=0)〃1對取模,值為非為奇數(shù);為則為偶數(shù).
s=s*i;
else
continue;〃跳過這個(gè)for循環(huán)的這一次,執(zhí)行下一次.
)
printf("Thesumis%d.\n",s);
return0;
)
P01922按要求曲出充臺應(yīng)上的老幺信息,
暫時(shí)沒法做.
和92.3判斷2加-西”耳中的閥耳,畀曲風(fēng)
年的概念是地球圍繞太陽一周的時(shí)間(所謂公轉(zhuǎn)周期)稱為一年,這個(gè)周期是相當(dāng)穩(wěn)定的,
很長時(shí)間也不會變動1秒,但是真正的一年是3652423天(目前)。所以,如果每年定義
為365天的話,1年就會多出0.2423天,4年就會多出0.9692天,非常接近1天,這樣閏
年就出現(xiàn)了,也就是每4年要有1年設(shè)置為366天,來抵消這多出的1天。規(guī)則為:-1)如
果年份能被4整除,則該年計(jì)為閏年;可是,假如不做調(diào)整的話,當(dāng)400年的時(shí)候,累計(jì)才
多出96.92天,接近于多出97天,閏年的設(shè)置卻多出來100天,所以要在400年內(nèi),再撤
銷3個(gè)閏年。怎么撤銷呢?就有了下面這個(gè)規(guī)則:-2)如果年份能被TOO整除,則不計(jì)為閏
年;問題又來了,400年里有4個(gè)100年吧,去掉后四個(gè)100年后,又少了一個(gè),所以再加
一個(gè)規(guī)則就是:3)如果年份能被40Q整除,則計(jì)為閏年。簡單說來每400年里設(shè)置了97
個(gè)閏年,也就是400里的前3個(gè)100年不設(shè)置閏年,誤差被調(diào)整到400年僅有0.08天。
#include<stdio.h>
intmain()
(
inti;
for(i=2000;i<=2200;i++)
(
if((i%4=0&&i%100!=0)||i%400=0)〃閏年的經(jīng)典判斷條件.
printf(z,%disaleapyear!\n",i);
else
printf(〃%disnotaleapyear!\n〃,i);
)
)
中02。2.4^(1)-012)+(113).......+G/徹的值,
#include<stdio.h>
intmain()
(
floatsign=l,sum=0,deno,term;〃關(guān)于有小數(shù)的i卜算應(yīng)該用門oal.
for(deno=1;deno<=100;deno++)
(
term=sign*(1/deno);〃term臨時(shí)值,sing符號,deno為分母.
sum=sum+term;〃第一次總?cè)鎯?
sign=(-l)*sign;〃換號.
)
printf("Thesumofdeno(指定值)is%f.\n,z,sum);
return0;〃若是到100的話,結(jié)果為0.68172
)
P0212.5得刻一個(gè)大寸5的藏耳判斷是否名素藏
ttinclude<stdio.h>
intmain()
inti,num,n;〃像13,37,這樣只能讓和它本身除以外,沒有其它除數(shù)的叫素?cái)?shù).
printf("Pleaseinputanumber:\n");〃獲取一個(gè)數(shù)值
scanf&num);
for(i=2;i<num;i++)〃在到此數(shù)值間進(jìn)行循環(huán)除,如果除得盡,就不滿足素?cái)?shù)要求.
(
if(num%i==O)〃除得盡,則不是.
(
n=l;
break;〃設(shè)置跳出,才不會執(zhí)行多次.
}
n=0;〃按程序走的話,這里會執(zhí)行多次,不能用printf語句,會輸出多次.
}
if(n==0)〃單出口問題,雖然n=0執(zhí)行多次,但仍然是n=0,這樣才會只輸出一次.
(
printf("Itisdoaprimenumber!");〃如果是100-200可以加個(gè)"%d”,nmu進(jìn)去.
}
else
(
printfC'ltisnotaprimenumber!");
)
return0;
2,6-N勿要忒用流程囹表示上列算依,
2.77-2,76要或用名-$畫泰京上列算落
...........還要偽代碼
P0360.1碉換二個(gè)參照的值,
#include<stdio.h>
intmain()
(
chara=,a,,b=,b,,c;
c=a;
a=b;
b二c;
printf(zzanowis%c,bnowis%c!\n〃,a,b);
return0;
)
P0360.2輸入7。個(gè)裁,不輸長素火的那一小撤,
#include<stdio.h>
intmain()
(
inti,a[10],s=0;
printf(,zPleaseinput10numbers:\n〃);
for(i=0;i<=9;i++)
(
scanf("%d”,&a[i]);
}
for(i=0;i<=9;i++)
(
if(s<a[i])s=a[i];
)
printf(z,%disthebiggestnumber!\n〃,s);
return0;
}
P0360.3越大小喉格曲出一些數(shù),
ttinclude<stdio.h>
intmain()
(
inti,j,a[4],s=0;
printf(/zPleaseinput5numbers:\n");〃此處要回車.
for(i=0;i<=4;i++)
(
scanf(編d",&a[i]);〃這是取多個(gè)數(shù)的代碼,可以用while控制取到\n符為止.
)
for(i=0;i<=3;i++)〃雙重循環(huán),先一個(gè)外循,再輪所有小循,輪完后再下一個(gè)大循.
(
for(j=i+l;j<=4;j++)〃第一個(gè)循環(huán)是至nT,第二個(gè)循環(huán)是到n.
(
if(a[i]>a[j])〃如果成立,則對換,小于號表示降序排列,大于號表示升序排列.
s=a[i];
a[i]=a[j];
a[j]=s;
for(i=0;i<=4;i++)〃重新定義循環(huán)輸出數(shù)組中新排列的數(shù).
printfa[i]);
return0;
)
P0360.4點(diǎn)7至次的總合,
#include<stdio.h>
intmain()
(
inti,sum=0;〃這是一個(gè)簡單的程序.
for(i=0;i<101;i++)
sum=sum+i;
printf(Z/Thesumofonetoonehundredis%d!\n〃,sum);
return0;
)
P0360.5判斷一小破餓番同時(shí)被M和5卷除,
#include<stdio.h>
intmain()
(
intn;
printf("Pleaseinputanumber:\n〃);
scant*&n);
if(n%3==0&&n%5==0)〃關(guān)鍵句,用〃并〃的符號.
printf("Canbedevideby3and5!\n〃);
else
printf("Cannotbedevideby3and5!\n");
return0;
P0360.6榜出7勿-2"同的索菽
〃********************第一種方法.
#include<stdio.h>〃網(wǎng)絡(luò)版本,采用調(diào)用函數(shù)和求根取素.
#include<math.h>〃下面用到sqrl,所以需要包含數(shù)據(jù)函數(shù).sqrl是求根,屬數(shù)學(xué)函數(shù).
intmain()〃學(xué)會一個(gè)程序采用“主函數(shù)+被調(diào)用函數(shù)”的方式,會比較規(guī)范.
(
inti;
for(1=100;i<=200;i++)//為了書寫規(guī)范,最好加上}以示清范圍.
if(prime_number(i)==1)〃1是實(shí)參.
printf(,z%d”,i);
return0;
}
intprime_number(doublem)是形參.
(
intj,k;
k=(int)sqrt(m);〃求根,(int)是強(qiáng)制轉(zhuǎn)換,求根里要是浮點(diǎn)型.
for(j=2;j<=k;j++)
(
if(m%j==0)
return0;〃此值返回給主函數(shù)中的實(shí)參.
)
return1;
)
〃********************第二種方法.
#include<stdio.h>
#include<math.h>
intmain()
(
inti;
for(i=100;i<=200;i++)〃指定至間.
(
if(prime(i)==l)〃這里i為實(shí)參,傳入形參j中進(jìn)行運(yùn)算,然后再由形參j帶出返風(fēng)
printf("%distheprimenumber!\n〃,i);
)
return0;
)
intprime(intj)〃j是形參,用于接收實(shí)參i給的值.
(
intm,n;
m=(int)sqrt(j);
for(n=2;n<=m;n++)
if(j%n==O)
return0;〃返回值,0為不是素?cái)?shù),1是素?cái)?shù).
}
return1;
)
〃********************第二種方法.
請仿照2.5來寫.
7>0360,7率丈公的裁和果小公借破.
itinclude<stdio.h>〃最大公約數(shù)用累除法,除到無余數(shù)時(shí)的被除數(shù)是最大公約數(shù).
main()
(
intm,n,c,d;
intgcd();〃這是最大公約數(shù)的縮寫,此處調(diào)用函數(shù),可以不寫里面的實(shí)參.
int1cm();〃這是最小公倍數(shù)的縮寫,此處調(diào)用函數(shù),可以不寫里面的實(shí)參.
printf(z,Pleaseinputtwonumber:\n");
scanf(〃%d%d”,&m,&n);
c=gcd(m,n);〃(2獲取最大公約數(shù)
d=lcm(m,n);〃(1獲取最小公倍數(shù)
printf(Z/TheGCDof%dand%dis:%d!\n/z,m,n,c);
printf(,zTheLCMof%dand%dis:%d!\n”,m,n,d);
return0;
)
intgcd(intx,inty)〃最大公約數(shù)GreatestCommonDivisor
(
inttemp;
while(x%y!=0)
(
temp=y;〃丫在下一輪中作為除數(shù),即是下一輪中的X,所以先閃一邊去.
y=x%y;//x,y的余數(shù)作為下一輪中的Y,由x%y來取得.
x二temp;〃剛才temp中存儲了y的值,現(xiàn)在拿出來作為下一輪中的X使用.
)
returny;〃這是每一輪中的被除數(shù),按原理來,這就是最大公約數(shù),即累除法的原理.
)
intlcm(intx,inty)〃最小公倍數(shù)LowestCommonMultiple
(
inti,temp;
if(x<y)〃保證二者大的數(shù)在X上,小的數(shù)在Y上,小于號降序,大于號升序.
(〃以下為經(jīng)典三行碼,實(shí)現(xiàn)兩個(gè)數(shù)的互換.
temp=x;
x=y;
y=temp;
for(i=l;i<=y;i++)〃設(shè)定一個(gè)區(qū)間,從1至小的數(shù)之間的循環(huán).
(
if(!((x*i)%y))〃除得盡為零,非零為真,則成立并返回.
{〃如此往復(fù),直到取模無余數(shù),那么小的數(shù)X乘以區(qū)間當(dāng)前的I值,就是最小公倍數(shù).
returnx*i;
)
}
}
最簡單的C程序設(shè)計(jì)一一順序程序設(shè)計(jì)
P0373.1杷華氏浸點(diǎn)轉(zhuǎn)化,板氏表示旅,
#include<stdio.h>
floatF_to_C(floatinputfah)〃代表華轉(zhuǎn)攝,inputfah是局部變量.
(
floatoutputcen;〃這里也是局部變量.
output_cen=(5.0/9)*(input_fah-32);〃函數(shù)的功能體.
returnoutput_cen;〃返回值,注意,返回值的數(shù)據(jù)類型應(yīng)該和函數(shù)一致.
}
floatC_to_F(floatinput_cen)
(
floatoutputfah;
output_fah=(9.0/5)*input_cen+32;〃轉(zhuǎn)換過程.
returnoutputfah;
)
intmain()
(
intchoice;
floatinput_fah,input_cen,output_fah,output_cen;〃局部變量的調(diào)用及參數(shù)傳遞.
printf(,zF__toCpress<1>andCtoFpress<2>!\n〃);
scanf&choice);
if(choice==l)
(
printf("Pleaseinputfahrenheit:〃);
scanf(z/%fz/,&input_fah);〃這個(gè)是主函數(shù)定義的變量,雖然和調(diào)用函數(shù)同名.
outputcen=FtoC(inputfah);
printf(/zThe華氏is%d,攝氏is%d.z/,(int)input_fah,(int)output_cen);
if(choice-2)
printf(/zPleaseinputcentigrade:〃);
scanf&input_cen);
output_fah=C_to_F(input_cen);
printf(zzTheCentigradeis%d,andtheFahrenheit
is%d、(int)input_cen,(int)output_fah);
)
return0;
)
如酎3.2計(jì)弄腐載利念俅孑精盛冏板,,
#include<stdio.h>
intmain()
(
floatp0=1000,rl=0.0036,r2=0.0225,r3=0.0198,pl,p2,p3;
pl=p0*(l+rl);
p2=p0*(l+r2);
p3=p0*(l+r3/2)*(l+r3/2);
printfC,pl=%f\np2=%f\np3=%f\nz,,pl,p2,p3);
return0;
}
P0553.3人怎轉(zhuǎn)換崗小怎
#include<stdio.h>
intmain()〃小寫范圍是97-122,大寫范圍是65-90,大寫加上即得小寫.26個(gè)字母.
(
charcl,c2;
cl='A';
c2=cl+32;
printf(,z%c%d,z,c2,c2);
return0;
)
F0593.4含出三龜形邊長,算出而鋼,
#include<stdio.h>
#include<math.h>
intmain()
doublea=3.67,b=5.43,c=6.21,s,area;
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(z/areais%f\nz/,area);〃默認(rèn)可以組成三角形.
return0;
)
P0653.5點(diǎn)一無二決等式的根,就依兩個(gè)又同根.
#include<stdio.h>
#include<math.h>
intmain()
(
doublea,b,c,disc,xl,x2,p,q;
scanfC%lf%lf%lfz/,&a,&b,&c);
disc=b*b-4*a*c;
p=-b/⑵0*a);
q=sqrt(disc)/(2.0*a);
xl=p+q;
x2=p-q;
printf(/zxl=%7.2f\nx2=%7.2f”,xl,x2);
return0;
}
加〃3.6用%/用/實(shí)救,旦餓得副九住小崔.
^include<stdio.h>
#include<math.h>
intmain()
(
doublea=l.0;〃1是整型,1.0是浮點(diǎn)型,默認(rèn)是double.可以是float.
printf("%.9f\n”,a/3);
return0;
}
々82S7”型前輾的守的彼照.
ttinclude<stdio.h>
#include<math.h>
intmain()
(
floata;〃輸出的結(jié)果是.333252,float精度6位,所以第七位后不可信.
a=10000/3.0;
,,,,
printf(%f\n,a);
return0;
}
MW使用忽必斯晶裁輸丸
#include<stdio.h>
#include<math.h>
intmain()
(
chara=,B',b=,0',c=,Y,;
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
putchar(101);〃101是A的ASCH代碼的縮寫,因?yàn)榇撕瘮?shù)只能輸出字符.
putchar(66);
return0;
)
PO793.9使用約“加得副生符,
#include<stdio.h>
#include<math.h>
intmain()
(
chara,b,c;
a=getchar();
b=getchar();
c=getchar();
putchar(a);
putchar(b);
putchar(c);//這也是基本回顯的C程序代碼.
putchar('\n,);
return0;
)
"Post3.1。刈得利女與,忽成癡t輸山小宿.
#include<stdio.h>
#include<math.h>
intmain()
(
chara,b;
a=getchar0;
b=a+32;
putchar(b);
putcharC\n);
return0;
}
P0820.1電反幺產(chǎn)總值7。耳后的惜長信氤
^include<stdio.h>
#include<math.h>
intmainO
(
doublep,r=0.09,n=10;
p=pow((l+r),n);〃這是數(shù)學(xué)函數(shù),pow(x,y)計(jì)算x的y次方.
printf(Z,Pis%lfwhen10yearslater.\n〃,p);
return0;〃結(jié)果是0.36倍.
"P0g20.2或各種存款的利息照.
#include<stdio.h>
#include<math.h>
intmain()
doublep,r,n;〃年份和當(dāng)年利率均有給出.
p=1000*(1+5*0.0585);
printfC'5yearsis%lf!\n',p);〃1292.5,這是全五年期.If輸出的是double型.
p=(1000*(1+2*0.0468));
p=(p*(1+3*0.0540));
printf(z,5yearsis%lf!\n〃,p);//1270.76,這是先二年,再三年的.
p=(1000*(1+3*0.0540));
p=(p*(1+2*0.0468));
printf(v5yearsis%lf!\n〃,p);〃1270.76,這是先三年,再二年的.證明,是一樣的.
p=1000*pow((l+0.0414),5);
printfC,5yearsis知Lf!\n〃,p);//1224?86,這難道說是,相對的存死期越久越值錢.
p=1000*pow((l+0.072/4),4*5);
printf(*5yearsis%lf!\n〃,p);//1428.74.
return0;
P0^30.3東幾個(gè)月妻應(yīng)迎倏,
#include<stdio.h>
#include<math.h>
intmain()
(
doublem,r=0.01,d=300000,p=6000;
m=(loglO(p/(p-d*r)))/(loglO(1+r));
printfC%.lir,m);〃按要求只留一個(gè)小數(shù),所以要寫%.Ilf.
return0;
印岬0.6生母恭媽轉(zhuǎn)換,碉用褊破融德界處理.
#include<stdio.h>
charprintcode(charf)
if(((int)f>86&&(int)f<91)||((int)f>118&&(int)f<123))
return(f-26+4);〃因?yàn)閜utchar會自動返回,所以改成return,因?yàn)檫@是在函數(shù)中,
調(diào)用需要返回值.
}
else
(
return(f+4);
)
)
intmain()
(
chara,b,c,d,e;
printf(,zPleaseinput:\n");
a=getchar();
b=getchar();
c=getchar();
d=getchar();
e=getchar();〃臨界問題.
printf(,/%c%c%c%c%cz",printcode(a),printcode(b),printcode(c),printcode(d),printc
ode(e));
putchar(putcharcode(a));
putchar(putcharcode(b));
putchar(putcharcode(c));
putchar(putcharcode(d));
putchar(putcharcode(e));
return0;〃注意理解自定義函數(shù)的定義,使用,及形參實(shí)參的流向.
〃p84的是計(jì)算問題,自己看著辦,最后要求小數(shù)點(diǎn)后兩位,用的是%.21f來實(shí)現(xiàn),因?yàn)闆]有
要求實(shí)部,所以m.n格式中m不寫.
〃p84的是定義問題,第一問,兩者都行,但是定義字母時(shí),scanf要寫猊來獲取,而定義數(shù)值
時(shí)則要用%(1來獲取.
//第二問,putchar貌似只能輸出字符,所以用printf.putchar本身就是
字符輸出函數(shù)啦,字符,有木有!??!字符?。。”M管它的參數(shù)可以是putchar('\101'),效果是輸出字
符A啊.
//第三問,出現(xiàn)〃任何〃及〃無條件〃,那么答案明顯是〃否〃.可以轉(zhuǎn)換,但
要在某此條件下,例如輸出和讀入時(shí),枇是字母,而%(1是數(shù)值,看著辦.
}
選擇結(jié)構(gòu)程序設(shè)計(jì)
7X)^64.1一無二次方程東根的二臺其
#include<stdio.h>
tfinclude<math.h>
intmain()
doublea,b,c,disc,xl,x2,p,q;
scanf(*%lf%lf&a,&b,&c);
disc=b*b-4*a*c;
if(disc<0)〃這是選擇結(jié)構(gòu)和其判斷條件的示例.
printf(''Thisequationhasrftrealroots'n");
else
(
p=-b/⑵0*a);
q=sqrt(disc)/(2.0*a);
xl=p+q;
x2=p-q;
printf(,zxl=%7.2f\nx2=%7.2f”,xl,x2);
)
return0;
)
W"4.2二個(gè)熬越大小輸亂
#include<stdio.h>
intmainO〃此程序代表按大小順序輸出.
(
floata,b,t;
scanf(〃%f%f”,&a,&b);〃出錯時(shí)?,注意檢查這里是否按格式輸入「比如有個(gè)逗號.
if(a>b)
(
t=a;
a=b;
b=t;
)
printf(,z%5.2f,%5.2f\n”,a,b);
return0;
)
POgg4.3三個(gè)數(shù)橫大小輸丸
#include<stdio.h>
intmainO〃此程序代表按大小順序輸出.
(
floata,b,c,t;
scanf(z,%f%f%r,&a,&b,&c);
if(a>b)〃此處執(zhí)行后,a為小者.
(
t=a;
a=b;
b=t;
)
if(a>c)〃此處執(zhí)行后,a為小者.
(
t=a;
a=c;
c=t;
)
if(b>c)〃上面已經(jīng)搞定a是最小者,現(xiàn)在對比得出次小者,并且己經(jīng)歸到變量中.
(
t=b;
b=c;
c=t;
)
printf(z/%5.2f,%5.2f%5.2f\n〃,a,b,c);
return0;
)
W”4.4判斷輸入生符,畀景珞接小信輸火,
#include<stdio.h>
intmain()
(
charch;
scanf&ch);
ch=(ch>=A'&&ch<='7:)?(ch+32):ch;〃條件運(yùn)算符,真取前,假取后.
printf(z,%c\n,z,ch);
return0;
)
P84.5按要求輸出相備的當(dāng)值.
#include<stdio.h>
intmain()
{
intx,y;
scanf("%d",&x);
if(x>=0)
(
if(x>0)〃這個(gè)范圍要基于x>=0來判斷.
(
y=l;
)
else
(
y=0;
}
)
else〃這個(gè)是x〈O的范圍.
(
y=T;
)
printf("x=%d,y=%d”,x,y);
return0;
)
P1OZ4.6"4的簡單或用,
#include<stdio.h>
intmain()
(
chargrade;
scanf&grade);
printf(z,Yourscore:z,);
switch(grade)
(
case'a':printf(“85700\n〃);break;〃當(dāng)多分支結(jié)構(gòu)過于多時(shí),可以用switch來解決.
case*b*:printf("70-84\n〃);break;
case'c:printf(“60-69\n");break;
case'd':printf(//<60\n/,);break;
default:printf(Z/Enterdataerror!\n,z);
}
return0;
}
P1044.7接輸入孤行操作,畀同系合之小名.
#include<stdio.h>
voidactionl(intx,inty)
(
printf("x+y=%d\rT,x+y);
)
voidaction2(intx,inty)
(
printf(〃x*y=%d\n〃,x*y);
)
intmain()
(
charch;
inta=15,b=23;
ch=getchar();
switch(ch)
(
case'a’:
case'A':actionl(a,b);break;〃a,A共用一個(gè)執(zhí)行語句.
case*b':
case'B':action2(a,b);break;
default:putchar(J\a');〃'\a'可以控制電腦發(fā)出蜂鳴聲.
)
return0;
)
P1064.g用《的臺文來做同耳冏墓
#include<stdio.h>
intmain()
(
intyear,leap;
printf(''Pleaseinputtheyear:\n",);
scanf&year);
if(year%4==0)〃400年里,在100個(gè)可除盡4的年里計(jì)算,以下是在全范圍內(nèi)計(jì)算.
(
if(year%100==0)〃既是100個(gè)內(nèi)的,又是可以除盡100的,算是且.
{
if(year%400==0)〃相當(dāng)于且了兩次,只余下唯一一個(gè).
{
leap=l;
)
else//400年里只有1個(gè)除得盡,其它都不是.
{
leap=0;
}
}
else〃這里的范圍是(year%4=0)&&(year%100!=0)
(
leap=l;〃在合法的100內(nèi),又不是2100,2200一類的,當(dāng)然屬閏年.
}
}
else
(
leap=0;
)
if(leap)
(
printf(z/%dis",year);
)
else
(
printf(繪disnot",year);
}
printf("aleapyear!");〃不管上面如何判斷,最后還是會輸出這一句.
return0;
}
Plow4.9一無二米等式的全計(jì)算過在,
#include<stdio.h>
#include<math.h>
intmain()
(
doublea,b,c,disc,xl,x2,realpart,imagpart;
scanfC%lf%lf&b,&c);
printf(,zTheequation〃);
if(fabs(a)<=le-6)〃fabs是絕對值,le-6,即是的負(fù)六次方,接近或是等于零.
(
printf(/zisnotaquadratic!\n〃);
printf(z,xl=x2=%lf/z,-c/b);
)
else
(
disc二b*b-4*a*c;
if(fabs(disc)<=le-6)〃指數(shù)形式,數(shù)字1.
(
printfC'hastwoequalroots:-b/(2*a));
}
else
(
if(disc>le-6)
(
xl=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("hasdistinctrealroots:%lfand%lf\n〃,xl,x2);
)
else
(
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf(,zhascomplexroots:\n〃);
printf(,z%lf+realpart,imagpart);
printf(,z%lf+%iri\nz,,realpart,imagpart);
)
)
)
return0;
}
R184.10關(guān)于多個(gè)區(qū)同的計(jì)算,運(yùn)費(fèi)問題名網(wǎng),
#include<stdio.h>
intmain()
(
doublep,w,s,d,f;
printf(z/p,w,s\n〃);
scanf(z/%lf%1f&p,&w,&s);
if(s<250)
d=0.0;
f=p*w*s*(l-d);
printff);
)
elseif(s<500)
(
d=0.02;
f=p*w*s*(l-d);
printff);
)
elseif(s<1000)
(
d=0.05;
f=p*w*s*(l-d);
printff);
)
elseif(s<2000)
(
d=0.08;
f=p*w*s*(l-d);
printfC%1^,f);
)
elseif(s<3000)
(
d=0.1;
f=p*w*s*(l-d);
printff);
)
else
(
d=0.15;
f=p*w*s*(l-d);
printf(z,%lff);
}
return0;
P01120.4植盤榜人三個(gè)虬梅出素大看
ttinclude<stdio.h>
intmina,mida,maxa;
intmax(inta,intb,intc)
(
intm;
if(a>b)〃凡是比較中,大于號代表升序排列.
(
m=a;
a=b;
b=m;
)
if(a>c)
(
m=a;
a=c;
c=m;
)
if(b>c)
(
m=a;
a=c;
c=m;
)
return(c);〃此排序后,a,b,c由小到大.所以c是返回中最大的.
)
intmain()
(
inta,b,c;
printf(Z/Pleaseinput3numbers:〃);
scanfC%d%d%d〃,&a,&b,&c);
printf(,zThemaxis%d!\n,z,max(a,b,c));
return0;
}
427720.5一個(gè)小孑7加的裁,■判窕,條件,
#include<stdio.h>
#include<math.h>
intmain()
(
doublea,b;
printf("Pleaseinputanumber:〃);
scanf("lf",&a);
if(a<1000)
b=sqrt.(a);
)
else
(
printf(z,\az/);〃控制蜂鳴聲
printf(''Pleaseinputanumberagain:〃);
scanf&a);11
b=sqrt(a);
)
printf(X01fz,,b);〃按要求,只取整數(shù).
return0;
)
P01120.9一個(gè)系多吁5彼的教,按條件輸風(fēng)
^include<stdio.h>
^include<math.h>
intmain()
(
inti,a,b[4],count=0;
printf(z,Pleaseinputanumber(five-digitnumber):〃);〃意思是五位數(shù)以內(nèi).
scanf(/z%d,z,&a);
for(i=0;i<=4;i++)
(
b[i]=a%10;〃是%10,不是/10000,結(jié)果就是b[0]至b[4]中存著個(gè),十,百,千,萬位.
a=a/10;///10后得到的結(jié)果去掉了個(gè)數(shù).
if(b[i]!=O)
(
count=count+l;
)
)
printf("%d位數(shù).\n”,count);
printf(〃分別輸出每一位數(shù)字,如下:〃);
for(i=4;i>=0;i—)
(
printf(/z%d”,b[i]);
)
printf(z/\nz,);
printf(〃倒序輸出這一個(gè)數(shù)字,如下:〃);
for(i=0;i<=4;i++)
(
printf("%d",b[i]);
)
printf("\n");
return0;
}
W772O.K)按要求提閥其公仆/法,,
^include<stdio.h>
intmain()
(
doublea,b;
printf("Pleaseinputprofitamount
scanf("斷f”,&a);
if(a<=10)〃這個(gè)是整個(gè)if的基礎(chǔ).
(
b=a*0.1;
)
elseif(a<=20)〃以上面為基礎(chǔ),這已經(jīng)代表了10-20間了!?。?/p>
(
b=l+(a-10)*0.075;
)
elseif(a<=40)〃同理,這是20-40間.
(
b=l+0.75+(a-20)*0.05;
)
elseif(a<=60)
(
b=l+0.75+0.l+(a-40)*0.03;
)
elseif(a<=100)
(
b=l+0.75+0.1+0.06+(a-60)*0.15;
)
else〃這里是大于100的.
I
b=l+0.75+0.1+0.06+(a-100)*0.01;
)
printf("Therewardis%lf!\n',b);
return0;
}
P01120.10按要求提由其金“法,,
#include<stdio.h>
doubleGetProfit(doublec)
(
printf(,zPleaseinputprofitamount:〃);
scanf&c);
return(c);〃返回本身了,如果有進(jìn)一步的計(jì)算結(jié)果,將值賦給其它變量,也可以返回.
)
intmain()
(
doublea;
charc;
printf("Yourchoice:\nA:0-10;\nB:10-20;\nC:20-40;\nD:40-60八nE:
60-100;\nF:100-1000;\n〃);
scanf(〃枇〃,&c);〃不同檔時(shí)I應(yīng)照檔的規(guī)定數(shù)值進(jìn)行輸入,否則結(jié)果不會是正確的.
switch(c)〃前三后三用于比較調(diào)用函數(shù).
{〃GetProfit(c)引入的實(shí)參沒有意義,返回值和引入的實(shí)參沒關(guān)系,反而由鍵盤獲得.
case*A*:{printf("Therewardis%lf!\n,z,GetProfit(c)*0.1);};break;
//0-100.100
case'B':{printf(,zTherewardis%lf!\n*,1+(GetProfit(c)-10)*0.075);}break;
//10-200.075
case'C':{printf(''Therewardis%lf!\nz,,1+0.75+(GetProfit(c)-20)*0.05);}break;
//20-400.050
case'D':{printf("Pleaseinputprofitamount:z,);scanf(z,%lf/z,&a);printf(,zThe
rewardis%lf!\n〃,1+0.75+0.l+(a-40)*0.03);}break;
//40-600.030
case'E':{printf("Pleaseinputprofitamount:scanf&a);printf("The
rewardis%lf!\n〃,1+0.75+0.1+0.6+(a-60)*0.15);}break;
//60-1000.015
case'F':{printf("Pleaseinputprofitamountscanf&a);printf("The
rewardis%]f\\n\1+0.75+0.1+0.6+0.6+(a-100)*0.01);}break;
//100-10000.010
default:printf("Errordata!z,);break;〃可以有一個(gè)執(zhí)行體,用。包括起來.
)
return0;
}
P01120.11軟盤輸入數(shù)值,就后挑再輸丸
ttinclude<stdio.h>
intmain()
{
inta[10],i,j,m,n;〃變量可以在寫代碼過程中再回來臨時(shí)添加.
printf(〃請輸入數(shù)值的個(gè)數(shù):(十個(gè)以內(nèi))”);
scanf(\d”,&m);〃到這里需要變量來承載數(shù)值的個(gè)數(shù),設(shè)m,回頭去定義變量那寫上m.
printf(“請分別輸入相對應(yīng)個(gè)數(shù)的數(shù)值:“);
for(i=0;i<m;i++)
(
scanf&a[i]);
}
for(i=0;i<m;i++)
(
for(j=i+l;j<m;j++)
(
if(a[i]>a[j])〃這是選擇排序法.升序.
{
n=a[i];〃這里需要一個(gè)用于臨時(shí)變量的n,所以問頭去寫上.
a[i]=a[j];
a[j]=n;
)
}
}
for(i=0;i<m;i++)
(
printfa[i]);
}
return0;
}
c程序設(shè)計(jì)(第四版)(譚浩強(qiáng))第五章課后習(xí)
題答案
循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
PU55.1用”&計(jì)算7至0的合,
#include<stdio.h>
intmain()
{
inti=l,sum=0;
while(i<=100)〃對于需要運(yùn)算的值,要么在運(yùn)算前可以賦值,要么一開始要指定.
(
sum=sum+i;
i++;
)
printf("Thesumis%d.\n”,sum);
return0;
)
P1175.2用4-枕套做7至0的合,
ttinclude<stdio.h>
intmain()
{
inti=l,sum=0;
do//do-while可以做的事,用while都可以做到.
{〃do-while先做一次執(zhí)行,再判斷條件,而while卻是先做一個(gè)條件,再執(zhí)行.
sum=sum+i;
i++;
}while(i<=100);
printf(^Thesumis%d.\n〃,sum);
return0;
)
png5.3比簌癡修成星的愛別,
#include<stdio.h>
intmain()
(
inti,sum=0;
printf(Z/Pleaseinputanumber:〃);
scanf(〃%d〃,&i);〃輸入10以內(nèi),正常,11的話,則sum仍然是0.
while(i<=10)
sum=sum+i;
i++;
}
printf(z,Thesumofl_10is%d.\n〃,sum);
return0;
)
^include<stdio.h>
intmain()
(
inti,sum=0;
printf("Pleaseinputanumber:〃);
scanf(,z%dz,,&i);〃輸入10以內(nèi),結(jié)果一樣.輸入11的話,先做操作,所以sum=11.
do
(
sum=sum+i;
i++;
}while(i<=10);〃此重點(diǎn)在于理解二者的差別.
printf("Thesumof1-10is%d.\n〃,sum);
return0;
)
P1265.4M4的例3,
#include<stdio.h>
intmainO
(
inti,b=0,a,c;
for(i=0;i<=1000;i++)
(
printf("Pleaseinputamount:〃);
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 質(zhì)量培訓(xùn)合同范本
- 現(xiàn)代職高教育中的實(shí)踐基地建設(shè)路徑探索
- 保潔合同清潔合同范本
- 計(jì)算機(jī)網(wǎng)絡(luò)(山東聯(lián)盟-聊城大學(xué))知到智慧樹章節(jié)測試課后答案2024年秋聊城大學(xué)
- 銷售布匹合同范本
- 幼兒園大年夜班卒業(yè)晚會節(jié)目表演主持稿范文
- 醫(yī)師證書租賃合同范本
- 清洗玻璃合同范本
- 2025年廣東工貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案一套
- 鄉(xiāng)鎮(zhèn)購房合同范本
- 空間向量求線面角
- 閱讀與思考圓錐曲線的光學(xué)性質(zhì)及其應(yīng)用課件
- 試產(chǎn)到量產(chǎn)項(xiàng)目轉(zhuǎn)移清單
- TB編程從入門到進(jìn)階
- 城市軌道交通應(yīng)急處理 01 城市軌道交通應(yīng)急處理概述-2
- 2023年全國中學(xué)生物理競賽預(yù)賽試題含答案版
- 葛傳椝向?qū)W習(xí)英語者講話
- 6人小品《沒有學(xué)習(xí)的人不傷心》臺詞完整版
- 教師溝通能力提升培訓(xùn)幼兒園家長溝通技巧教學(xué)課件
- 喀喇沁旗樓子店鄉(xiāng)上燒鍋白石礦石灰?guī)r礦2022年度礦山地質(zhì)環(huán)境治理計(jì)劃書
- 中國石油天然氣股份有限公司長慶油田分公司第九采油廠油田產(chǎn)能建設(shè)項(xiàng)目組竣工環(huán)境保護(hù)驗(yàn)收調(diào)查表
評論
0/150
提交評論