大學(xué)c_c語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)教程答案-陽(yáng)小華-電子工業(yè)出版社_第1頁(yè)
大學(xué)c_c語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)教程答案-陽(yáng)小華-電子工業(yè)出版社_第2頁(yè)
大學(xué)c_c語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)教程答案-陽(yáng)小華-電子工業(yè)出版社_第3頁(yè)
大學(xué)c_c語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)教程答案-陽(yáng)小華-電子工業(yè)出版社_第4頁(yè)
大學(xué)c_c語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)教程答案-陽(yáng)小華-電子工業(yè)出版社_第5頁(yè)
已閱讀5頁(yè),還剩33頁(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、實(shí)驗(yàn) 1 基本程序示例任務(wù) 1 熟悉 C 語(yǔ)言程序的編輯、編譯、連接和運(yùn)行過(guò)程上機(jī)內(nèi)容】1輸入并運(yùn)行下面程序,寫出運(yùn)行結(jié)果。#include stdio.hmain( ) char c1, c2;c1=97;c2=98;printf(%c ,%c, c1, c2);在此基礎(chǔ)上,完成以下 3 項(xiàng)任務(wù):(1) 在 c1=97;c2=98; 語(yǔ)句后加入如下語(yǔ)句,并運(yùn)行。printf(%d, %d, c1, c2 );運(yùn)行結(jié)果:a, b97, 98(2) 將char cl, c2;改為如下語(yǔ)句,再運(yùn)行。int c1, c2; 運(yùn)行結(jié)果:a, b( 3)將 c1=97;c2=98; 改為如下語(yǔ)句,再運(yùn)行

2、,并分析其運(yùn)行結(jié)果。c1=300; c2=400; 運(yùn)行結(jié)果:,怭(或,?)2分析下面程序,寫出運(yùn)行結(jié)果,再輸入計(jì)算機(jī)中運(yùn)行,將得到的結(jié)果與分析得到的結(jié)果 比較對(duì)照。#include stdio.hmain( )char c1=a,c2=b,c3=c,c4=101,c5=116;printf(a%c b%ctabc%c n,c1,c2,c3);printf(tb%c %c,c4,c5);運(yùn)行結(jié)果:aa bb abccA N3分析下面程序,寫出運(yùn)行結(jié)果,再輸入計(jì)算機(jī)中運(yùn)行,將得到的結(jié)果與分析得到的結(jié)果 比較對(duì)照。#include stdio.h main( )int i , j , m , n

3、;i=8; j=10;m=+i; n=j+; printf(%d,%d,%d,%d,i,j,m,n);運(yùn)行結(jié)果:9,11,9,10 分別進(jìn)行以下改動(dòng)后,先分析結(jié)果,再運(yùn)行對(duì)照。( 1)將 m=+i; n=j+; 改為如下:m=i+; n= + j; 運(yùn)行結(jié)果: 9,11,8,11(2)程序改為如下:#include stdio.hmain( )int i , j ;i=8; j=10;printf(%d,%d, i+, j+); 運(yùn)行結(jié)果:8,10(3) 程序改為如下:#include stdio.hmain( )int i , j ;i=8; j=10;printf(%d,%d, + i,

4、+ j);運(yùn)行結(jié)果:9,11(4) 程序改為如下:#include stdio.hmain( )int i , j ;i=8; j=10;printf(%d,%d,%d,%d , i, j ,i+, j+);運(yùn)行結(jié)果:8,10,8,10(5) 程序改為如下:#include stdio.hmain( )int i , j , m=0 , n=0 ;i=8; j=10; m+= i +; n-= -j;printf(i=%d,j=%d,m=%d,n=%d,i,j,m,n);運(yùn)行結(jié)果:i=9,j=9,m=8,n=-9任務(wù) 2 簡(jiǎn)單的 C 語(yǔ)言程序設(shè)計(jì)1按格式要求輸入、輸出數(shù)據(jù)。 程序請(qǐng)單如下:#i

5、nclude stdio.hmain( ) in a,b; float x,y; char c1,c2; scanf(a%d,b=%d,&a,&b); scanf(%f, %e,&x,&y);scanf(%c %c,&c1,&c2); /* 錄入時(shí)%c與%c之間有個(gè)空格*/ printf(a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn,a,b,x,y,c1,c2); 運(yùn)行該程序,必須按如下方式在鍵盤上輸入數(shù)據(jù):a=3,b=7 /8.5,71.82a A / (注解:a與A之間輸入一個(gè)空格,且a緊跟71.82后寫,不要空格)請(qǐng)寫出輸出結(jié)果。運(yùn)行結(jié)果: a=7,b=3,x=8.5

6、00000,y=71.820000,c1=a,c2=A2輸入三角形的三條邊長(zhǎng),求三角形面積。 程序清單如下:#include stdio.h#include math.hmain()float a,b,c,s,area; scanf(%f ,%f,%f,&a,&b,&c);s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf(area=%f,area); 運(yùn)行結(jié)果:(具體情況根據(jù)自己輸入的數(shù)據(jù)而定) 如在鍵盤上輸入: 3,4,5/則運(yùn)行結(jié)果為: area=6.0000003已知圓半徑、圓柱高、求圓周長(zhǎng)、圓柱體積。 程序清單如下:#incl

7、ude stdio.hmain()float r,h,l,v,pi;pi=3.1415926;scanf(%f,%f,&r,&h);l=2*pi*r; v=pi*r*r*h;printf( 圓周長(zhǎng)為: %6.2fn,l);printf(% 圓柱體積為: 6.2f,v);運(yùn)行結(jié)果:(具體情況根據(jù)自己輸入的數(shù)據(jù)而定)如在鍵盤上輸入:5,6/則運(yùn)行結(jié)果為: 圓周長(zhǎng)為: 31.42 圓柱體積為: 471.244輸入一個(gè)攝氏溫度,要求輸出華氏溫度,公式為f = 5/9 c+32。程序清單如下:#include stdio.hmain( )float c,f; scanf(%f,&c); f=5.0/9*

8、c+32; printf(%5.2fn,c); 運(yùn)行結(jié)果:(具體情況根據(jù)自己輸入的數(shù)據(jù)而定)如在鍵盤上輸入:37/ 則運(yùn)行結(jié)果為:52.56實(shí)驗(yàn) 2 選擇結(jié)構(gòu)任務(wù) 1 if 語(yǔ)句程序設(shè)計(jì)1修改下列程序,使之滿足輸入10時(shí)輸出“= =”,否則輸出“! =”的條件。#includestdio.hmain()int x;scanf(%d,&x);if( x=10)printf(=n);else printf(!=n);2. 修改下列程序,使之實(shí)現(xiàn)以下功能:當(dāng)a= =b并且b=c時(shí),輸出“ a=b=c;當(dāng)a!=b 時(shí),輸出 “ a!=b?!?include “ stdio.h ”main( ) int

9、 a,b,c;scanf( “ %d%d%d,&a,&b,&c);if (a=b)if(b=c)printf(“ a=b=c”);else printf( “a!=b ” );3. 程序填空。從鍵盤輸入任意一個(gè)大寫字母,將其轉(zhuǎn)換成相應(yīng)小寫字母輸出。#i nclude mai n() char c;sca nf(%c, &c);if(c=A &c=65&c=90)c=c+32;prin tf(n%c,c);4 有以下程序,執(zhí)行后輸出結(jié)果為 _4。#include “stdio.h ”mai n() int a=1,b=2,c=3,d=4; if(abc) printf( “%d n” ,d);e

10、lse if(c-b)=a) printf(“%d n” ,2*d);else printf( “%d n” ,4*d);5. 有以下程序,執(zhí)行后輸出結(jié)果為9 7 0。#i nclude stdio.hmai n() int a=8,b=7,c=9,t=0;if(ab) t=a;a=b;b=t;if(ac) t=a;a=c;c=t;if(bc) t=b;b=c;c=t;prin tf(%5d%5d%5dn,a,b,c);6. 有以下程序,執(zhí)行后輸出結(jié)果為 9 8 7。#i nclude stdio.hmai n() int a=8,b=7,c=9,t=0;if(ab) t=a;a=b;b=t;

11、if(ac) t=a;a=c;c=t;if(bc) t=b;b=c;c=t;prin tf(%5d%5d%5dn,a,b,c);7. x、y有如下函數(shù)關(guān)系,編寫程序輸入 x,輸出y值。x (x1)-y = 2x- 1(1 x 10)參考答案:#i nclude stdio.hmain () double x,y;scanf (%lf, &x);if (x1)y=x;else if(x10) y=2*x-1;else y=3*x-11;printf (y=%lf,y);89 為8 .輸入一個(gè)百分制分?jǐn)?shù),要求輸出對(duì)應(yīng)的成績(jī)等級(jí):90100為 A , 80 B, 7079為C, 6069為D,不及格

12、為E。參考答案: #include main( ) float score; printf(input socre:); scanf(%f, &score); if(score=90) printf(An);else if(score=80)printf(Bn);else if(score=70)printf(Cn);else if(score=60)printf(Dn);elseprintf(En);9給一個(gè)不多于 3 位的正整數(shù),編寫程序完成以下要求:(1 )求出它是幾位數(shù);(2) 分別輸出每一位數(shù)字;(3) 按逆序輸出各位數(shù)字,例如,原數(shù)為321,應(yīng)輸出 123。參考答案:#includ

13、e stdio.hvoid main()int a,b,c,x,n;scanf(%d,&x); a=x/100;b=(x-a*100)/10;c=x%10;if(a!=0)printf(%d為 3 位數(shù),原數(shù)為 %d,逆序數(shù)為 dn,x,x,c*100+b*10+a);else if(b!=0)printf(%d為 2 位數(shù),原數(shù)為 %d 逆序數(shù)為 %dn,x,x,c*10+b);elseprintf(%d 為1位數(shù),原數(shù)為%d逆序數(shù)為%dn,x,x,c);任務(wù) 2 switch 語(yǔ)句程序設(shè)計(jì)1有如下程序,執(zhí)行后輸出結(jié)果為 14。#include“stdio.h ”mai n () int i

14、=5;switch(i) case 4:i+=1;case 5:i+=2;case 6:i+=3;default:i+=4;prin tf(%dn,i);2. 有如下程序段,若grade的值為C,則輸出結(jié)果是Medium!Pass!_ switch(grade) case A:pri ntf(Excelle nt!n);case B:pri ntf(Fi ne!in ”);break;case C:pri ntf(Medium!n ”);case D:pri ntf(Pass!n);break;default:pri ntf(Fail!n);3. 有以下程序,執(zhí)行后輸出結(jié)果為 a=3,b=5#

15、i nclude stdio.hmai n() int x=0,y=1,a=2,b=3;switch(x) case 0:switch(y) case 0: a+;case 1: b+; break;case 1: a+;b+; break;case 2: a+;b+;prin tf(na=%d,b=%d,a,b);4. 將下列的程序段改用 switch語(yǔ)句來(lái)實(shí)現(xiàn),使它完成相同的功能。if(x=0& x10) y=x;else if(x20) y=x+3;else if(x0) case 0 :y=0; break;case 1 : switch(i nt)x2/10) case 0: y=x

16、2; break;case 1: y=x2+3;break;case 2:case 3: y=-0.5*x2+10;break;default: y=2*x2-5;break;prin tf(x=%f,y=%f,x1,y);5以下程序計(jì)算某年某月有幾天,閏年與平年的二月份天數(shù)不同。判別閏年的條件是:能 被4整除但不能被100整除的年是閏年,或者能被400整除的年也是閏年。請(qǐng)分析程序填空。#i nclude stdio.h#i nclude stdio.hmain () int yy,mm,days;prin tf(i nput year and mon th:);scan f(%d %d, &

17、yy,&m m);switch(mm) case 1: case 3: case 5: case 7:case 8:case 10:case 12:days=31 ;break;case 4: case 6: case 9: case 11:days=30;break;case 2:if(yy%4=0&y y%100!=0|yy%400=0)days=29 ;else days=28;break;default:pri ntf(i nput error);break;prin tf(the days of %d %d is %dn,yy,mm,days);6.假設(shè)獎(jiǎng)金稅率如下(ma代表獎(jiǎng)金,t

18、r代表稅率),利用switch語(yǔ)句編寫程序?qū)斎氲囊?個(gè)獎(jiǎng)金數(shù),輸出稅率和應(yīng)交稅款以及實(shí)得獎(jiǎng)金數(shù)(扣除獎(jiǎng)金稅后), ma1000 時(shí),tr=0% ; 1000 打a2000 時(shí), tr=5% ; 2000 打a=1000) case 0 :tr=0; break;case 1 : switch(i nt)ma/1000) case 1: tr=0.05;break;case 2:case 3: tr=0.08;break; default: tr=0.1;break;printf(稅率為=%.2f,應(yīng)交稅款為=%.2f,實(shí)得獎(jiǎng)金數(shù)為 =%.2fn,tr,ma*tr,ma*(1-tr);實(shí)驗(yàn)3循

19、環(huán)結(jié)構(gòu)實(shí)驗(yàn)(1)任務(wù)1 while語(yǔ)句程序設(shè)計(jì)1. 分析并修改下面的程序,使該程序能正常結(jié)束運(yùn)行。#i nclude main () int x,y;x=2; y=0;while (!y-) printf (“%d,%d n”,x, y);2. 下列程序中,while循環(huán)的循環(huán)次數(shù)為6次 。#i nclude main () int i=0;while(i10) if(i=5) break;i+; printf (“%d n” ,i); 3下面是一個(gè)計(jì)算 e的近似值(使誤差小于給定的數(shù)值)的程序。#in cludemain () double e=1.0,x=1.0,y,detax;int i

20、=1;prin tf(please in put en ter :n ”);scan f(%lf, &detax);y=1/x;while(y=detax)x=x*i;y=1/x;e=e+y;+i;prin tf(%12.10f,e);參考答案:實(shí)驗(yàn)要求: (1)閱讀上面的程序,寫出程序所依據(jù)的計(jì)算公式。e=1+1/1!+1/2!+1/3!+1/n !( 2)當(dāng)輸入的 detax 各是什么值時(shí),能分別使程序按下面的要求運(yùn)行:a. 不進(jìn)入循環(huán); detax 1.0b. 只循環(huán)兩次; detax0.5&detax=1.0c. 進(jìn)入死循環(huán) ( 程序?qū)⒂肋h(yuǎn)循環(huán)下去 ) 。 =detax ,分別換成 y

21、detax,y=detax,ydetax,y=detax ,觀察程序運(yùn)行將會(huì)有什么變化。4編寫程序。對(duì)輸入的任意的一個(gè)正整數(shù)按反序輸出。例如,輸入147,輸出 741 。參考答案:#include stdio.h void main() int x,i; scanf(%d,&x); while(x!=0) i=x%10;x=x/10; printf(%d,i);任務(wù) 2 do-while 語(yǔ)句程序設(shè)計(jì)1分析并修改下面的程序,使該程序能正常結(jié)束運(yùn)行。#include main() int x=0;dox+;while(x=2);printf ( “%d n”,x);2. 有以下兩段程序,比較輸出

22、結(jié)果并分析原因。(一) main() int x=0;while(x0) x+;printf ( “%d n”,x);結(jié)果為: 0(二) main() int x=0; do x+;while(x0);printf ( “%d n”,x);結(jié)果為:1兩段程序結(jié)果不同,是因?yàn)?x的初始值為0,從而使循環(huán)條件不成立。當(dāng)循環(huán)條件不 成立一次都不成立時(shí),dowhile循環(huán)會(huì)比while循環(huán)多執(zhí)行一次循環(huán)體。3. 下列程序中,do_while循環(huán)的循環(huán)次數(shù)為_(kāi)無(wú)限次。#i nclude main () int i=0;do if(i=6) con ti nue;i=i+2;while(i10);prin

23、tf (”dn,i);4. 運(yùn)行下列程序,輸出結(jié)果為 sum=4000 。#i nclude stdio.h#defi ne N 100mai n() int x=0,sum=0;do if(x=(x/5*5)con ti nue;sum=sum+x;while(+xN);prin tf(sum=%dn,sum);5. 求 1!+2!+3!+4!+5!+6!+7!+8!+9!+10!請(qǐng)?zhí)羁諏⑾旅娴某绦蜓a(bǔ)充完整:答案:4037913#i nclude mai n() int j,m,p,s;s=0;m=1 ;doP=1;j=1 ;while(j=m) P*=j; j+;s=s+p;m+; whi

24、le(m=10); prin tf(s=%dn,s);6. 編寫程序。每個(gè)蘋果0.8元,第一天買2個(gè)蘋果,第二天開(kāi)始,每天買前一天的2倍,直至購(gòu)買的蘋果總個(gè)數(shù)到不超過(guò)100的最大值,求每天平均花多少錢?答案:9.92參考答案:#i nclude stdio.hvoid mai n()int x,sum,day;double ave=0;x=2;day=1;sum=2;dox=2*x;sum=sum+x;day+;while(sum=100);ave=(sum-x)*0.8/(day-1);prin tf(%lf,ave);實(shí)驗(yàn)4循環(huán)結(jié)構(gòu)實(shí)驗(yàn)(2)任務(wù)1 for語(yǔ)句程序設(shè)計(jì)1. 分析并修改下面的

25、程序,使該程序能正常結(jié)束運(yùn)行。#i nclude main () int i;for( i=1 ;i10;i+)printf (%dn,i);2. 分析并修改下面的程序,使sum的值為1+2+10的和。#i nclude mai n() int i=1, sum=0;for(;i=10;i+)sum=sum+i;printf (sum=%dn,sum);3. 運(yùn)行下列程序,輸出結(jié)果為 sum=15。#in clude main () int i,sum=0;for(i=0;i=10;i+) sum=sum+i;if(i=5) break;printf (sum=%dn,sum);4. 運(yùn)行下列

26、程序,輸出結(jié)果為 sum=4OO0。#in clude main () int i,sum=0;for(i=0;i=100;i+) if(i%5)=0)con ti nue;sum=sum+i;printf (sum=%dn,sum);5. 運(yùn)行下列程序,輸出結(jié)果為 sum=60。#in clude main () int i,j,sum=0;for(i=0;i=3;i+)for(j=0;j0;i-)if(i%13=0 )break;prin tf(n%d,i);7. 程序填空。求如下Fib on acci數(shù)列1, 1, 2, 3, 5, 8, 的前40個(gè)數(shù),要求每一行輸出8個(gè)數(shù)。F1=1(n

27、 =1)F2=1(n =2)Fn 二 Fn -1 Fn -2 (n 3)參考答案:#i nclude mai n() long f1,f2;int i;f1=1; f2=1;for(i=1; i=20;i+ ) pri ntf(%10ld%10ld,f1,f2);if( i%4=0 ) printf(n);f1=f1+f2;f2=f2+f1;&程序填空。從鍵盤輸入10個(gè)不為0的整型數(shù),統(tǒng)計(jì)其中負(fù)數(shù)的個(gè)數(shù)并求出所有正數(shù)的平均值。參考答案:#in clude mai n() int i,x,co un t=0;float ave=0;for(i=0;i0)ave+= x ;elsecoun t+;

28、if(cou nt!=1O)ave/=10-co unt;prin tf(co un t:%d,Average:%fn,co un t,ave);20項(xiàng)之和。9. 帕多瓦數(shù)列:1,1,1,2,2,3,4,5,7,9,12, 16,21,求出這個(gè)數(shù)列的前參考答案:方法1一次一項(xiàng)#i nclude stdio.hmain () int f1=1,f2=1,f3=1,f,sum=3,i;prin tf(%d %d %d,f1,f2,f3);for(i=4;i=20;i+) f=f1+f2;printf( %d,f);sum=sum+f;f仁 f2;f2=f3;f3=f;prin tf(nsum=%d

29、,sum);方法2一次3項(xiàng)#i nclude stdio.hmain () int f1=1,f2=1,f3=1,sum=0,i;for(i=1;i=7;i+) pri ntf(%4d%4d%4d,f1,f2,f3);sum=sum+f1+f2+f3;f1=f1+f2;f2=f2+f3;f3=f3+f1;prin tf(nsum=%d,sum-f3+f1);10. 統(tǒng)計(jì)能被4整除而且個(gè)位數(shù)為 6的4位數(shù)的個(gè)數(shù)及和。參考答案:#i nclude stdio.hmain () int i,sum=0,co un t=0;for(i=1000;i=9999;i+)if(i%10=6&i%4=0) c

30、ount+; sum=sum+i;printf( 個(gè)數(shù)為 :%8d, 總和為 :%8dn,count,sum); 11. 求1100之間所有素?cái)?shù)的個(gè)數(shù)及和。參考答案:#include #include main() int m,n,i,j,k,sum=0;n=0; for(m=2;m=100;m+) k=(int)sqrt(m);i=2; while(m%i!=0&i=k) i+;if(i=k+1) n+;sum=sum+m; printf(共有 8d個(gè)素?cái)?shù),總和為 8dn,n,sum);12( 1 )編寫程序輸出下面的數(shù)字金字塔。1121123211234321 123454321 參考答案

31、:#include main()int n=5, i,j; for(i=1;i=5;i+) for(j=1;j=5-i;j+)printf( );for(j=1;j=1;j-)printf(%d,j ); printf(n);12( 2)編寫程序輸出下面的數(shù)字金字塔。333334444444555555555參考答案:#in cludemain ()int n=5, i,j;for(i=1;i=5;i+) for(j=1;j=5-i;j+) printf(”);for(j=1;j=2*i-1;j+)prin tf(%d,i );prin tf(n);I實(shí)驗(yàn)5函數(shù)定義、聲明與調(diào)用任務(wù)1函數(shù)的定義

32、和聲明1 預(yù)測(cè)下面程序的輸出,并上機(jī)運(yùn)行驗(yàn)證結(jié)果。(結(jié)果:21)#include func(int a,int b)int c;c=a+b;return c;main()int x=6,y=7,z=8,r;r=func(x-,y+,x+y),z-);printf(%dn,r);2 分析推測(cè)下面程序的輸出,并上機(jī)運(yùn)行驗(yàn)證結(jié)果。(結(jié)果:12)#include unsigned fun26(unsigned num)unsigned k=1;do k*=num%10;num/=10; while(num);return k;main()unsigned n=26;printf(%dn,fun26(n

33、);3求出以下程序的運(yùn)行結(jié)果,并描述程序所完成的功能。(結(jié)果:s=16。功能是:求x的n次幕即2的4次幕。)#include main( )int power(int x,int n);int x=2,n=4; printf(ns=%d,power( x,n) ;int power(int x,int n)int i,p=1;for(i=1;i=n;i+)p=p*x;return(p);4上機(jī)調(diào)試下面計(jì)算兩個(gè)整數(shù)之和的程序,記錄系統(tǒng)給出的出錯(cuò)信息,指出出錯(cuò)原因并予 以改正。正確代碼為:#include int sum( int a,int b) /函數(shù)不能嵌套定義,所以將 sun函數(shù)拉到mai

34、n函數(shù)外,同時(shí)形參的每個(gè)參數(shù)前都必須要有類型return (a+b);main()int x,y; scanf(%d,%d,&x,&y);printf(%dn,sum( x,y); /形參與實(shí)參的個(gè)數(shù)要一致,所以將加號(hào)改成逗號(hào)。5上機(jī)調(diào)試下面判斷n 是否是素?cái)?shù)的程序,函數(shù) fun 中有邏輯錯(cuò)誤,調(diào)試并改正。正確代碼為:#include fun(int n)int k,yes=1; for(k=2;k=n/2;k+) if(n%k=0) yes=0; break; /反證法證明,找到一個(gè)就跳出,否則會(huì)被后面覆蓋 else yes=1;return yes;main()int n;scanf(%d

35、,&n);if(fun( n )將main函數(shù)中的函數(shù)調(diào)用fun()改成fun(n),因?yàn)閷?shí)參的個(gè)數(shù)應(yīng)與形參對(duì)應(yīng)printf(%d:yes!n,n);elseprintf(%d:no!n,n);6. 下面程序中,函數(shù)fun的功能是根據(jù)形參m計(jì)算公式 T=1/1!+1/2!+1/3!+1/m!的值,上機(jī)調(diào)試,請(qǐng)改正程序中的錯(cuò)誤。當(dāng)從鍵盤輸入 10時(shí),給出程序運(yùn)行的正確結(jié)果(按四舍 五入保留 10 位小數(shù))。正確代碼為: (輸入 10 時(shí)的結(jié)果: 1.7182818011)#include main( ) double fun(int m); / 先調(diào)用再定義,且不是能缺省的int 型,請(qǐng)加上函數(shù)

36、說(shuō)明。int m;printf(n input m:);scanf(%d,&m);printf(n t=%12.10lf n,fun(m); double fun(int m)double fac,t=0.0;int i=1,j;for(i=1;i=m;i+) fac=1.0;for(j=1;j= i ;j+) fac=fac* j; /邏輯有誤,改為: for(j=1;j=i;j+) fac=fac*j; 這樣才表示求 i! , 原程序行是求i的m次方。t+=1.0/fac; return t;任務(wù) 2 函數(shù)的嵌套調(diào)用1. 跟蹤調(diào)試下面程序,注意函數(shù)調(diào)用的過(guò)程中形參、實(shí)參的關(guān)系。記錄并分析結(jié)

37、果;將形 參a,b對(duì)應(yīng)改為x,y,使之與實(shí)參變量同名,記錄并分析結(jié)果。#include main()int t,x=2,y=5;int swap(int,int);printf(1) in main: x=%d,y=%dn,x,y);swap(x,y);printf(4) in main: x=%d,y=%dn,x,y);swap(int a,int b)int t;printf(2) in swap: a=%d,b=%dn,a,b);t=a;a=b;b=t;printf(3) in swap: a=%d,b=%dn,a,b);結(jié)果:(1) in main: x=2,y=5(2) in swa

38、p: a=2,b=5(3) in swap: a=5,b=2(4) in main: x=2,y=5將形參 a,b 對(duì)應(yīng)改為 x,y 結(jié)果 :(1) in main: x=2,y=5(2) in swap: x=2,y=5(3) in swap: x=5,y=2(4) in main: x=2,y=5結(jié)論:無(wú)論實(shí)參、形參是否同名,交換的只是子函數(shù)( swap )中兩個(gè)變量的值。主函數(shù)中 的 x,y 的值沒(méi)有變。2若輸入 2、 3,求以下程序的運(yùn)行結(jié)果,分析函數(shù)嵌套調(diào)用的執(zhí)行過(guò)程。#include long sum(int a,int b);long factorial(int n);main(

39、 )int n1,n2;long a;scanf(%d,%d,&n1,&n2); a=sum(n1,n2);printf(a=%ld,a);long sum(int a,int b) long c1,c2; c1=factorial(a); c2=factorial(b); return(c1+c2);long factorial(int n) long rtn=1; int i;for(i=1;i=n;i+)rtn*=i; return(rtn);(結(jié)果為:a=8。程序功能:求 n1!+n2!即:2! +3!)3運(yùn)行下面程序,寫出運(yùn)行結(jié)果。#include stdio.hmain( )int

40、 i=5;void palin(int n);printf(please input 5 characters: );palin(i); printf(n);void palin(int n)char next;if(n=1) next=getchar( ); printf(n0: ); elsenext=getchar(); palin(n-l); putchar(next);(程序功能:實(shí)現(xiàn)將從鍵盤輸入的5個(gè)字符逆序輸出。如輸入:abcde.輸出:edcba)4. 寫出下面程序的輸出結(jié)果。#include stdio.hint abc(int u,int v);main ()int a=2

41、4,b=16,c; c=abc(a,b); printf(%dn,c);int abc(int u,int v)int w;while(v) w=u%v; u=v; v=w; return u;(程序功能:求兩數(shù)的最大公約數(shù)即24,16的最大公約數(shù)。結(jié)果:8)實(shí)驗(yàn)6函數(shù)遞歸調(diào)用、變量的存儲(chǔ)類型及編譯預(yù)處理任務(wù)1函數(shù)的遞歸調(diào)用1. fact(j-1)*j2. gcd(n,m%n)mn3. /for(j=0;j=n-i;j+)/ printf();刪除這兩行,因?yàn)轫敻褫敵?,不要空行了y=1|y=xz=c(x-1,y-1)+c(x-1,y)4. 程序代碼如下:#in cludefib(i nt n)

42、int f;if(n=1| n=2)f=1;elsef=fib( n-1)+fib( n-2); return(f);main ()int n ,i,s=O;printf(Input n=);scan f(%d,&n);for(i=1;i(B)?(A):(B)#defi ne ZMAX(A,B,C) MAX(MAX(A,B),C)main () int a,b,c,t;prin tf(i nput a,b,c:);sca nf(%d,%d,%d, &a,&b,&c);t=ZMAX(a,b,c);prin tf(max of a,b,c:%dn,t);實(shí)驗(yàn)7 一維數(shù)組、二維數(shù)組及字符串?dāng)?shù)組任務(wù)1

43、數(shù)組的基本定義與應(yīng)用1. 4 3 3 22. 6,4,3,2,3. a=a+arrijj=2j-i+j=2輸出為:a=13,b=144. i=1xi-15. m1000 或 m=999m/10%10 或 m/10-x*10ai=mmi 或 m=i-1輸出結(jié)果為:153 370 371 4076. aasum/nxiave任務(wù)2字符數(shù)組1. 0str1i-str2i2. ck=ai+; ck=bj+;ai=0或 bj!=03. xWHOwho4. c1!= &c2=實(shí)驗(yàn)8數(shù)組與函數(shù)任務(wù)1數(shù)組與函數(shù)的綜合應(yīng)用1. n %2+0bini=02. float a10,x;i10 或 i=9i10 或

44、i=9j9 或 j=8 或 j10-i 或 jaj+1aj=aj+1i10 或 i=j;i ai+1=ai4. mi=a%10t=t*10k=n*n5. 0II16. k-1N-1temp7. 程序代碼如下:#in cludevoid fun(char *a) int i=0;char *p=a;while(*p&*p=*)ai=*p;i+;p+;while(*p)if(*p!=*)ai=*p;i+;p+;ai=0;main() char s81;printf(Enter a string:n);gets(s);fun(s);printf(The string after deleted:n)

45、; puts(s);實(shí)驗(yàn) 9 指針概念及指針與一維數(shù)組的關(guān)系任務(wù) 1 理解指針及其使用方法1閱讀分析下面程序,寫出運(yùn)行結(jié)果,理解指針概念及“*與”“ &”的含義。#include main()int a,b;int *p1,*p2; a=100; b=10; p1=&a; p2=&b;printf(a=%d,b+2= %dn,a ,b+2); printf(*p1=%d,*p2+2= %dn,*p1,*p2+2 ); 運(yùn)行結(jié)果為: a=100,b+2= 12 *p1=100,*p2+2= 122上機(jī)驗(yàn)證下列程序的運(yùn)行結(jié)果。#include void main( )int a,b,*p1,*p2

46、; p1=&a;p2=&b;a=5;b=7;printf(na=%d,b=%d,p1=%dp2=%d,a,b,p1,p2);printf(n&a=%d,*&a=%d,&b=%d,*&b=%dn,&a,*&a,&b,*&b);運(yùn)行結(jié)果如下: (下面紅色標(biāo)記的字,是漏寫了的 )a=5,b=7,p1=1245052,p2=1245048&a=1245052, *&a= 5,&b=1245048, *& b=7 思考:在本題中,可不可用 &*a 來(lái)代替 *&a ?不能代替,上機(jī)驗(yàn)證通不過(guò)。所以 * 號(hào)只能寫在地址或指針變量的前面,不能寫在普通 變量的前面。3分析下面程序,并運(yùn)行,理解用指針變量進(jìn)行輸入、輸出。#include main( )/*指針 p 指向變量 m*/*p 是對(duì)指針?biāo)傅淖兞康囊眯问?,與此 m 意義相/*p 是變量 m 的地址 ,可以替換 &m*/int *p,m; scanf(%d,&m); p=

溫馨提示

  • 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)論