c語言程序設(shè)計(jì)課件-c程序設(shè)計(jì)(第四版)(譚浩強(qiáng))-課后習(xí)題答案_第1頁
c語言程序設(shè)計(jì)課件-c程序設(shè)計(jì)(第四版)(譚浩強(qiáng))-課后習(xí)題答案_第2頁
c語言程序設(shè)計(jì)課件-c程序設(shè)計(jì)(第四版)(譚浩強(qiáng))-課后習(xí)題答案_第3頁
c語言程序設(shè)計(jì)課件-c程序設(shè)計(jì)(第四版)(譚浩強(qiáng))-課后習(xí)題答案_第4頁
c語言程序設(shè)計(jì)課件-c程序設(shè)計(jì)(第四版)(譚浩強(qiáng))-課后習(xí)題答案_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論