C語(yǔ)言課后題編程答案_第1頁(yè)
C語(yǔ)言課后題編程答案_第2頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語(yǔ)言課后題編程答案所有章節(jié)的課后習(xí)題的選擇題和填空題大家必須熟練掌握,編程 題掌握到第九章即可。 希望大家通過(guò)課后的編程題熟悉典型的編程算 法,掌握基本的編程思路,注意編程細(xì)節(jié)。第3章3-17編寫(xiě)程序, 把560分鐘換算成用小時(shí)和分鐘表示,然后進(jìn)行輸 出。#includemain()int h,m;h=560/60;m=560%60;printf( 560分鐘可轉(zhuǎn)換成d小時(shí)d分鐘”,h,m);程序總結(jié):(1)只要在程序中用到系統(tǒng)提供的庫(kù)函數(shù),必須把庫(kù)函數(shù)所在的頭 文件用#include命令包含進(jìn)來(lái)。 否則庫(kù)函數(shù)的使用無(wú)效。 輸入輸出庫(kù) 函數(shù)的頭文件是:stdio.h;數(shù)學(xué)函數(shù)的頭文件是:ma

2、th.h;字符處理函 數(shù)的頭文件是:ctype.h;字符串處理函數(shù)的頭文件是:string.h。(2)注意C語(yǔ)言中的“/”和“%”兩種運(yùn)算符?!?”的運(yùn)算結(jié)果取 決于兩操作數(shù)的類(lèi)型。比如:1/2=0(與數(shù)學(xué)中不同,結(jié)果與操作數(shù) 的類(lèi)型一致,所以結(jié)果只取商值), 1.0/2=0.5(除之前2要自動(dòng)類(lèi)型轉(zhuǎn)換成2.0,因?yàn)橹挥型?lèi)型的操作數(shù)才能進(jìn)行除運(yùn)算), 1/2.0=0.5,1.0/2.0=0.5。“%”的兩個(gè)操作數(shù)都必須是整數(shù)。(3)printf( 560分鐘可轉(zhuǎn)換成d小時(shí)d分鐘”h,m); printf第一 個(gè)參數(shù)要盡量詳細(xì), 這樣可以提高輸出結(jié)果的可讀性, 恰當(dāng)好處的添 加提示性信息,可以

3、提高程序的質(zhì)量。(4)int h,m;變量起名要有藝術(shù)性,盡量做到見(jiàn)名知意。3-18編寫(xiě)程序,輸入兩個(gè)整數(shù),1500和350,求出它們的商和余數(shù) 并進(jìn)行輸出。#includemain()int a,b,m,n;printf(“請(qǐng)輸入兩個(gè)整數(shù):n”);scanf(“%d%d”,&a,&b);m=a/b;n=a%b;printf( %d除以%d商%d余%d”,a,b,m,n);程序總結(jié):(1)printf(“請(qǐng)輸入兩個(gè)整數(shù):n”) ;這是一個(gè)提示信息, 避免用戶在看到 黑屏后不知所措。(2)scanf(“%d%d”,&a,&b); scanf的功能是用戶要通過(guò)鍵盤(pán)輸

4、入數(shù) 據(jù),賦值給各輸入項(xiàng)。注意每個(gè)輸入項(xiàng)前面必須要加&符號(hào)。%d與 輸入項(xiàng)的個(gè)數(shù)要一致,類(lèi)型要匹配。%d與int一致,%f與float對(duì) 應(yīng),lf與double匹配,c與char對(duì)應(yīng)。3-19編寫(xiě)程序, 讀入三個(gè)雙精度數(shù), 求它們的平均值并保留此平均 值小數(shù)點(diǎn)后一位數(shù), 對(duì)小數(shù)點(diǎn)后第二位數(shù)進(jìn)行四舍五入, 最后輸出結(jié) 果。#includemain()double a,b,c,x;printf(“請(qǐng)輸入三個(gè)雙精度數(shù):n”); scanf(“%lf%lf%lf”,&a,&b,&c);x=(a+b+c)/3;x=x*10;x=x+0.5;x=(int)x;x=x/10;

5、printf(“x=%.1lf”,x);程序總結(jié):(1)double a,b,c,x;和scanf(“%lf%lf%lf”,&a,&b,&c);有 直 接 聯(lián) 系,%lf與輸入項(xiàng)a,b,c在定義時(shí)所用的類(lèi)型double一致。(2) %.1lf,.1的意思是結(jié)果僅保留小數(shù)點(diǎn)后一位小數(shù)。3-20編寫(xiě)程序,讀入三個(gè)整數(shù)給a、b、c,然后交換他們中的數(shù),把a(bǔ)中原來(lái)的值給b,把b中原來(lái)的值給c,把c中原來(lái)的值給a, 然后輸出a,b,c。#includemain()int a,b,c,t;printf(“請(qǐng)輸入三個(gè)整數(shù):n”);scanf(“%d%d%d”,&a,&

6、b,&c);printf(“交換之前:a=%d,b=%d,c=%d”,a,b,c);t=a;a=c;c=b;b=t;printf(“交換之后:a=%d,b=%d,c=%d”,a,b,c);程序總結(jié): 交換兩個(gè)變量的值和三個(gè)變量的值,都需要借助另外一個(gè)變量。第4章4-21若a的值小于100,請(qǐng)將以下選擇結(jié)構(gòu)改寫(xiě)成由switch語(yǔ)句構(gòu) 成的選擇結(jié)構(gòu)。if(a30) m=1;else if(a40) m=2; else if(a50) m=3;else if(a60) m=4;else m=5; #include main() int a;printf(“enter a(a100):n”);

7、 scanf(“%d”,&a);printf(“a=%dn”,a); switch(a/10) case 0:case 1:case 2:printf(“m=1n”);break; case 3: printf(“m=2n”);break;case 4: printf(“m=3n”);break;case 5: printf(“m=4n”);break; default: printf(“m=5n”);程序總結(jié):1)選擇結(jié)構(gòu)的實(shí)現(xiàn)除了使用if語(yǔ)句以外,還可以使用switch語(yǔ)句 來(lái)實(shí)現(xiàn)。(2)switch后的表達(dá)式和case后的標(biāo)號(hào)的類(lèi)型要一致,switch后的 表達(dá)式直接決定了swi

8、tch語(yǔ)句體的執(zhí)行入口。執(zhí)行完入口的case語(yǔ)句后,依次順序往下執(zhí)行,直到遇到break語(yǔ)句就徹底跳出switch語(yǔ)句體,轉(zhuǎn)去執(zhí)行switch語(yǔ)句體后的語(yǔ)句。(3)default語(yǔ)句可有可無(wú), 位置無(wú)所謂, 當(dāng)switch后的表達(dá)式和所 有case后的標(biāo)號(hào)都不一致時(shí),轉(zhuǎn)去執(zhí)行default語(yǔ)句,然后依次順序執(zhí)行default語(yǔ)句后其他的switch語(yǔ)句,直到遇到break語(yǔ)句,則徹底跳出switch語(yǔ)句體。(4)break語(yǔ)句可出現(xiàn)在循環(huán)語(yǔ)句體和switch語(yǔ)句體內(nèi), 目的是徹 底跳出循環(huán)體和switch語(yǔ)句體。(5)case和其后的標(biāo)號(hào)之間必須要加空格。4-22編寫(xiě)程序,輸入一位學(xué)生的生日(

9、年:yO、月m0、日dO),并 輸入當(dāng)前的日期(年:y1、月m1、日d1),輸出該生的實(shí)際年齡。#includemain()int yO,mO,dO,y1,m1,d1,age;printf(“輸入一位學(xué)生的生日:n”);scanf(“%d%d%d”,&yO,&mO,&dO);printf(“輸入當(dāng)前日期:n”);scanf(“%d%d%d”,&y1,&m1,&d1);age=y1-yO;if(m1mO|mO=m1&d1dO)age-;printf(“age=%dn”,age);程序總結(jié):(1)if(m1m0|m0=m1&d0d1)

10、,在程序設(shè)計(jì)中,要學(xué)會(huì)用邏輯 與、或、非代替復(fù)雜的if語(yǔ)句嵌套。(2)在printf語(yǔ)句中,要盡量加上n,這樣可以避免黑屏上的結(jié)束 語(yǔ)press any keyto continue出現(xiàn)在有價(jià)值的輸出結(jié)果的后面, 而是換行輸出。這樣就提高了程序輸出結(jié)果的可讀性。(3) 通過(guò)本設(shè)計(jì),要加強(qiáng)對(duì)變量起名藝術(shù)性的認(rèn)識(shí)。4-23編寫(xiě)程序,輸入一個(gè)整數(shù),打印出它是奇數(shù)還是偶數(shù)。#includemain()int x,y;printf(“請(qǐng)輸入一個(gè)整數(shù):n”)scanf(“%d”,&x);y=x%2;if(y=0)printf(“%d是一個(gè)偶數(shù)!n”,x);elseprintf(“%d是一個(gè)奇數(shù)!n

11、”,x);程序總結(jié):y=x%2;這是判斷一個(gè)數(shù)是奇數(shù)還是偶數(shù)的一貫表示方式。計(jì)算機(jī)中 的等號(hào)是雙等號(hào),與數(shù)學(xué)中的等號(hào)不一樣。4-24編寫(xiě)程序,輸入a,b,c三個(gè)數(shù),打印出最大者。方法一:#includemain()int a,b,c,max;printf(“請(qǐng)輸入三個(gè)數(shù):n”);scanf(“%d%d%d”,&a,&b,&c);if(ab)if(ac)max=a;elsemax=c;elseif(bc)max=b;elsemax=c;printf(“max=%d”,max);程序總結(jié):利用if-else的嵌套,可求出一組數(shù)的最大值和最小值。在if-else的嵌套 中,要

12、格外注意if和else的配對(duì)問(wèn)題。配對(duì)的原則是:從最后一個(gè)else開(kāi)始,尋找與其配對(duì)的if,找的原則是離else最近的還沒(méi)有配對(duì)的if就是該else的配對(duì)對(duì)象。if和else的配對(duì)一旦出問(wèn)題,輸出結(jié)果全錯(cuò)。方法二:#includemain()int a,b,c,t;printf(“請(qǐng)輸入三個(gè)數(shù):n”);scanf(“%d%d%d”,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(“最大值為:%d”,c);程序總結(jié):(1)方法一利用if-else的嵌套來(lái)進(jìn)行程序設(shè)計(jì),極易容易出錯(cuò)

13、。而方法二采 用三個(gè)if語(yǔ)句的并列來(lái)實(shí)現(xiàn),同樣可以求出最大值。(2)方法二算法分析:第一個(gè)if語(yǔ)句結(jié)束后,b中保存a和b中的較大值; 第二個(gè)if語(yǔ)句結(jié)束后,c中保存a和c中的較大值;第三個(gè)if語(yǔ)句結(jié)束 后,c中保存b和c中的較大值;三次比較后,c中的值就是三個(gè)數(shù)中 最大的。(3)現(xiàn)實(shí)生活中,交換兩盆水必須要借助第三個(gè)盆子;在程序設(shè)計(jì)中,要想 實(shí)現(xiàn)兩個(gè)變量中值的交換,就必須借助第三個(gè)變量。4-25對(duì)于以下函數(shù):Y=x(-5x0),y=x-1(x=0),y=x+1(0 x10),編寫(xiě)程序,要求輸入x的值,輸出y的值。分別用:(1)不嵌套的if語(yǔ)句(2)嵌套的if語(yǔ)句(3)if-else語(yǔ)句(4)s

14、witch語(yǔ)句(1)#include main()int x,y;printf(“請(qǐng)輸入x的值:n”); scanf(“%d”,&x);if(x=0) y=x-1;if(x-5&x0&x10) y=x+1;printf(“y=%dn”,y);(2) #includemain()int x,y;printf(“請(qǐng)輸入x的值:n”); scanf(“%d”,&x);if(x-5)if(x0)if(x10)y=x+1;if(x=0)y=x-1;Printf(“y=%dn”,y);(3) #includemain()int x,y;printf(“請(qǐng)輸入x的值:n”);

15、 scanf(“%d”,&x);if(x-5&x0)y=x;else if(x=0)y=x-1;elsey=x+1;Printf(“y=%dn”,y);(4) #includemain()int x,y,i;printf(“請(qǐng)輸入x的值:n”);scanf(“%d”,&x);if(x-5&x0&x10) i=3;switch(i) case 1:y=x;printf(“x=%d,y=%dn”,x,y);break;case 2:y=x-1; printf(“x=%d,y=%dn”,x,y);break;case 3:y=x-1; printf(“x=%d

16、,y=%dn”,x,y);程序總結(jié):對(duì)于這個(gè)程序設(shè)計(jì)我建議大家采用第一種方法,因?yàn)榈谝环N方法是大眾化 的思路,鑒于上機(jī)考試是機(jī)器閱卷,希望大家不要在上機(jī)試題上展現(xiàn)自己 的個(gè)性。大家可以在平常練習(xí)中,嘗試多種方法解決同一問(wèn)題,這樣可以 通過(guò)一個(gè)程序設(shè)計(jì),鞏固多個(gè)知識(shí)點(diǎn)。第5章5-17編寫(xiě)程序,求1-3+5-7+-99+101的值。方法一:#includemain() int s,n,t,j;s=0;n=1;t=1;j=1;while(n=101) s=s+t;n+=2;j=-j;t=j*n;printf( 1-3+5-7+-99+10l=%d ”,s);程序總結(jié):( 1 )循環(huán)結(jié)構(gòu)可用循環(huán)語(yǔ)句來(lái)

17、實(shí)現(xiàn),循環(huán)語(yǔ)句有三種:while,do-while,for,循環(huán)語(yǔ)句的使用場(chǎng)合是:數(shù)之間有規(guī)律可循并且是重復(fù)執(zhí)行某項(xiàng)操作。(2)本程序設(shè)計(jì)是正負(fù)數(shù)交替求和,所以必須單獨(dú)定義一個(gè)變量,通過(guò)每次 乘以- 1,來(lái)實(shí)現(xiàn)正負(fù)交替。本題中的j就扮演了這個(gè)角色。(3) while語(yǔ)句簡(jiǎn)介:功能是可實(shí)現(xiàn)循環(huán)結(jié)構(gòu)。While與其后的括號(hào)之間無(wú) 空格,括號(hào)里的表達(dá)式只要是合法的表達(dá)式即可,不過(guò)關(guān)系表達(dá)式最為常 見(jiàn)。While的管轄范圍是緊跟在其后的一條“C語(yǔ)句”(可以是單純的一條C語(yǔ)句,也可以是用花括號(hào)括起來(lái)的復(fù)合語(yǔ)句) 。程序設(shè)計(jì)最忌諱死循環(huán), 所以說(shuō)循環(huán)體中必須要有使while后表達(dá)式為假的趨勢(shì),這樣才能正常

18、的跳出循環(huán)體,從而避免死循環(huán)的出現(xiàn)。方法二:#include#includemain()int a,b,c,s;a=1;b=1;c=1;s=0;while(fabs(c)=101)s+=c;b+=2;a=-a;c=a*b;printf( 1-3+5-7+-99+10l=%d ”,s);程序總結(jié):若程序中用到了數(shù)學(xué)函數(shù),就必須把#include加上5-18編寫(xiě)程序,求e的值,1+1/1!+1/2!+1/3!+1/4!+(1)用for循環(huán),計(jì)算前50項(xiàng)。(2)用while循環(huán),要求直至最后一項(xiàng)的值小于10的-6次方。(1)方法一:#includemain() int m,n;float e=1.0

19、,i=1.0,t;for(n=1;n=1;m-)t=t*m;i=1/t;e=e+i;printf(“e=%f”,e);程序總結(jié):for(t=1.0;m=1;m-) t=t*m;實(shí)現(xiàn)的是階乘的求法 方法二:#includemain()float a,b,c,e; e=1.0;a=1.0;c=0;for(b=1.0;b50;b+)e+=c;c=1.0/(a*b);a=a*b;printf(“e=%f”,e);程序總結(jié):c=1.0/a*b; a=a*b;這兩句是階乘的另一種實(shí)現(xiàn)方法。 此算法的設(shè)計(jì)思路是:1!*2=2!,2!*3=3!,3!*4=4!后一項(xiàng)的分母是前一項(xiàng) 分母再乘以一個(gè)有規(guī)律的數(shù)。(

20、2) #includemain()float a=1.0,b=1.0,c=1.0,e=1.0;while(c=1e-6) e+=c;b+;c=1.0/(a*b);a=a*b;printf(“e=%fn”,e);程序總結(jié):1乘以10的-6次方,在C語(yǔ)言中表示為1e-6。5- 1 9編寫(xiě)程序,輸出從公元2000年至3000年所有閏年的年號(hào),每輸出10個(gè)年號(hào)換一行,判斷公元年是否為閏年的條件是:( 1 )公元年數(shù)如能被4整除,而不能被100整除,則是閏年。(2)公元年數(shù)能被400整除也是閏年。#include main() int i,j=0;for(i=2000;i=3000;i+) if(i%4

21、=0&i%100!=0|i%400=0)printf(“i=%d”,i);j+;if(j%10=0)printf(“n”);printf(“n”);程序設(shè)計(jì):(1) int i,j=0;這條語(yǔ)句中的j=0非常必要,因?yàn)閖的作用就是累計(jì)閏年的個(gè) 數(shù),在所有的程序設(shè)計(jì)中,具有累計(jì)功能的變量都需要初始化為零。否則 隨機(jī)數(shù)會(huì)來(lái)?yè)v亂,從而導(dǎo)致最后累計(jì)結(jié)果的無(wú)意義。(2) if(j%10=0)這是換行的一貫表示形式。(3)語(yǔ)句printf(“n”);在程序的最后出現(xiàn)兩次,這兩次的作用是不一樣的, 前者實(shí)現(xiàn)的是每10個(gè)閏年換行一次。后者的功能是讓黑屏上的press any key tocontinu

22、e乖乖換行,從而提高程序輸出結(jié)果的可讀性。5- 20編寫(xiě)程序,打印以下圖形:*#include main() int i,j,k;for(i=3;i=0;i-) for(k=1;k=i;k+)Printf(“”);for(j=0;j7-i*2;j+)printf(“*”);printf(“n”);for(i=4;i7;i+)for(k=4;k=i;k+)printf(“”);for(j=3;j=15-i*2;j+)printf(“*”);printf(“n”);程序總結(jié):(1)類(lèi)似圖形的設(shè)計(jì)是有規(guī)律可循的,比如此題:空格的個(gè)數(shù)從上往 下依次是3、2、1、0、1、2、3,星號(hào)的個(gè)數(shù)從上往下依次是

23、1、3、5、7、5、3、1,并且上下兩部分是對(duì)稱(chēng)的。(2) 本題中for循環(huán)的控制條件很難想出來(lái), 大家只要把這個(gè)題記住就 可以,到時(shí)候稍微變一下型就可以。第6章6-19請(qǐng)編寫(xiě)程序,輸入一行字符(用回車(chē)結(jié)束) ,輸出每個(gè)字符以及與之對(duì)應(yīng)的ASCII代碼值,每行輸出三對(duì)。#includemain()int n=0;char c;while(c=getchar()!=n)n+;printf(“ASCII=%d,c=%c”,c,c);if(n%3=0)printf(“n”);putchar(n);程序總結(jié):(1)字符型數(shù)據(jù)在內(nèi)存中保存的是與之相對(duì)應(yīng)的ASCII碼值。大家要牢 記的ASCII代碼值有:

24、數(shù)字字符0的ASCII值是48,字符a的ASCII值是65,字符A的ASCII值是97,字符的ASCII值是32,這4個(gè)特殊字符的ASCII值必須記住。其他的只要在它們 的基礎(chǔ)上遞推就可以。(2)在printf和scanf中所用到的%后的字母,取決于輸入輸出項(xiàng)在定 義時(shí)所用的關(guān)鍵字。Int與d對(duì)應(yīng),float與f對(duì)應(yīng),double與lf對(duì)應(yīng),char與c對(duì)應(yīng),long int與%ld對(duì)應(yīng),short int與%hd對(duì)應(yīng)。(3)本題中的語(yǔ)句char c;和printf( ASCII=%d,c=%c”c,c);貌似與中 講的理論相沖突,其實(shí)是可行的,由于字符型數(shù)據(jù)在內(nèi)存中保存的 是與之相對(duì)應(yīng)的AS

25、CII碼值,ASCII碼值都是整型數(shù),所以char既可以與%c對(duì)應(yīng),也可以與%d對(duì)應(yīng)。(4)注意語(yǔ)句while(c=getchar()!= n)中括號(hào)的用法,很多同學(xué)容易 把(c=getchar()外的這層括號(hào)忘掉,變成while(c=getchar()!=n,由 于!=的優(yōu)先級(jí)要高于=,所以導(dǎo)致運(yùn)算順序的改變,最終引起結(jié)果的 錯(cuò)誤。(5)putchar( h的功能仍然是讓黑屏上的press any key to continue乖 乖換行,從而提高程序輸出結(jié)果的可讀性。與printf(“n”) ;是完全等價(jià)的。(6)getchar()的功能是等待用戶從鍵盤(pán)輸入一個(gè)字符到內(nèi)存,它的功能 決定了

26、它的寫(xiě)法必須是賦給一個(gè)字符型的內(nèi)存變量,如本題的c=getchar()。6-20請(qǐng)編寫(xiě)程序,輸入一行數(shù)字字符(用回車(chē)結(jié)束) ,每個(gè)數(shù)字字符 的前后都有空格。 請(qǐng)編程,把這一行中的數(shù)字轉(zhuǎn)換成一個(gè)整數(shù)。 例如, 若輸入(代表Enter鍵):2 48 3 ,則輸出整數(shù):2483。#includemain()char ch,int i=0;while(ch=getchar()!=n)if(ch=0&ch=0&ch=9不能寫(xiě)成 0=ch=0&ch=0&ch=9)和i=i*10+ch-0是一體的,是一條語(yǔ)句。而while恰恰只需要對(duì)這一條語(yǔ)句負(fù)責(zé),而不是對(duì)多條語(yǔ)句負(fù)責(zé),所以

27、 花括號(hào)是多余的。(3)大家要格外注意i=i*10+ch-0;這條語(yǔ)句, 這條語(yǔ)句是本程序的一大 亮點(diǎn)。6- 21請(qǐng)編寫(xiě)程序統(tǒng)計(jì)輸入的行數(shù),用!號(hào)結(jié)束輸入, !號(hào)所在的行不 計(jì)入行數(shù)。#includemain()char ch;int i=0;while(ch=getchar()!=!);if(ch=n) i+;printf(“%d”,i);putchar(n);程序總結(jié):本程序是要統(tǒng)計(jì)輸入的行數(shù),其實(shí)就是統(tǒng)計(jì)n出現(xiàn)的次數(shù)。6-22請(qǐng)編寫(xiě)程序統(tǒng)計(jì)輸入的一行中小寫(xiě)字母的個(gè)數(shù)。#includemain()char ch;int i=0;while(ch=getchar()!=n)if(ch=a&a

28、mp;ch=a&ch= z不能寫(xiě)成av二ch二 zo6-23請(qǐng)編寫(xiě)輸出以下圖案的程序,圖案的行數(shù)由輸入的整數(shù)值確定(每 行中字符之間沒(méi)有空格) 。ABBBCCCCCDDDDDDDEEEEEEEEE#includemain()int i,j,k,m,n;char ch;printf(“Enter n:n”);scanf(“%d”,&n);for(i=1;i=i;k- -) putchar(“”);for(j=1;j=m;j+) putchar(ch);printf(“n”);第7章7- 15編寫(xiě)函數(shù)int mymod(int a,int b)用以求a被b除之后的余數(shù)。intmym

29、od(int a,int b)int s;s=a%b;return s;程序總結(jié):(1)函數(shù)定義分為兩部分,函數(shù)首部和函數(shù)體。結(jié)合本題,函數(shù)首 部是intmymod(int a,int b),函數(shù)體是花括號(hào)內(nèi)的所有語(yǔ)句。(2)int mymod(int a,int b)中的int是函數(shù)的返回值類(lèi)型,return后 的表達(dá)式是函數(shù)的返回值, 所以int類(lèi)型的書(shū)寫(xiě),是根據(jù)return后表達(dá)式的類(lèi)型而定的,必須要保證兩處的一致性。要是函數(shù) 體中沒(méi)有return語(yǔ)句,或是只有return這個(gè)單詞, 其后沒(méi)有表 達(dá)式,則認(rèn)定為該函數(shù)沒(méi)有返回值。那么函數(shù)首部中int就要 改寫(xiě)成void。要是函數(shù)首部省略函

30、數(shù)的返回值類(lèi)型,寫(xiě)成mymod(int a,int b)的形式,并不表示該函數(shù)沒(méi)有返回值,而是 系統(tǒng)默認(rèn)該函數(shù)的返回值為int類(lèi)型。(3)int mymod(int a,int b)中的mymod是函數(shù)名,只要符合標(biāo)識(shí)符 的命名規(guī)則即可,盡量做到見(jiàn)名知義。(4)int mymod(int a,int b)中的a, b是該函數(shù)的兩個(gè)形參。 形參的個(gè) 數(shù)取決于題目的實(shí)際需要,形參前的類(lèi)型名一定不能少。(5)return s;語(yǔ)句的功能是把該被調(diào)用函數(shù)得到的結(jié)果返回調(diào)用函 數(shù)。用return語(yǔ)句只能帶回一個(gè)數(shù)據(jù)。要想返回多個(gè)數(shù)據(jù),必 須用到后面的知識(shí)點(diǎn):傳址。(6)%(取余運(yùn)算符)是雙目運(yùn)算符,其左

31、右的兩個(gè)運(yùn)算符必須都 是整型數(shù)。7- 16編寫(xiě)函數(shù),根據(jù)整型形參n的值,計(jì)算如下公式的值:1-1/2+1/3-1/4+1/5-1/6+1/7float res(int n) int i=1;float e=0,m,j;for(j=1.0;j=n;j+)m=1/j;e+=i*m;i=-i; return e;程序總結(jié):(1)要注意m=1/j;中的1/j,若是把j的類(lèi)型定義成int類(lèi)型的,只 要1和j(j大于1)進(jìn)行整除運(yùn)算,統(tǒng)統(tǒng)為0。只要把j的類(lèi)型 定 義 成float類(lèi) 型, 這 種 情況 即 可避 免 。舉例 :1/2=0,而1/2.0=0.5,1.0/2=0.5,1.0/2.0=0.5,運(yùn)

32、算結(jié)果的類(lèi)型取決于兩操作數(shù) 中較大的類(lèi)型,雙目運(yùn)算符在運(yùn)算之前,首先要統(tǒng)一兩操作數(shù) 的類(lèi)型(統(tǒng)一的原則請(qǐng)參看附錄5)。7-17編寫(xiě)函數(shù),根據(jù)整型形參m的值,計(jì)算如下公式的值:t=1-1/2*2-1/3*3-float fun(int m)float i,t=1,n;for(n=2;n=m;n+)i=-1/(n*n);t+=i;return t;7-18編寫(xiě)函數(shù)用以求表達(dá)式x*x-5x+4的值,x作為參數(shù)傳送給函數(shù), 調(diào)用此函數(shù)求:y1=2*2-5*2+4 y2=(x+15)*(x+15)+4y3=sinx*sinx-5*sinx+4y1的值為-2.0;x為0.5時(shí),y2的值為166.75,y3

33、的值為1.832721double fun(double x)double y;y=x*x-5*x+4;return y;第8章8- 17請(qǐng)編寫(xiě)函數(shù),其功能是對(duì)傳送過(guò)來(lái)的兩個(gè)浮點(diǎn)數(shù)求出和值與差 值,并通過(guò)形參傳送回調(diào)用函數(shù)。Void fun(float a,float b,float *m,float *n)*m=a+b;*n=a-b;程序總結(jié):本題的要求是在調(diào)用函數(shù)中傳遞兩數(shù)到被調(diào)用函數(shù), 在被調(diào)用函數(shù)中 求出和值和差值,然后傳送到調(diào)用函數(shù)。顯然return語(yǔ)句無(wú)能為力, 因?yàn)閞eturn語(yǔ)句僅能返回一個(gè)數(shù)據(jù)。像這樣涉及到多個(gè)數(shù)據(jù)的傳遞 的必須要用到傳址運(yùn)算。8- 18請(qǐng)編寫(xiě)函數(shù),對(duì)傳送過(guò)來(lái)的三個(gè)數(shù)選出最大數(shù)和最小數(shù),并通 過(guò)形參傳回調(diào)用函數(shù)。void fun(float *a,float*b,float *c)float t;if(*a*b)t=*a;*a=*b;*b=t;if(*a*c)t=*a;*a=*c;*c=t;if(*b*c)t=*b;*b=*c;*c=t;程序總結(jié):本函數(shù)的設(shè)計(jì)思路是: 在被調(diào)用函數(shù)中利用指針遠(yuǎn)程遙控, 把三個(gè)數(shù)按

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論