已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語言編程基礎(chǔ)(第2版)上機(jī)實(shí)習(xí)解答前 言C語言編程基礎(chǔ)(第2版)在各章后面都安排了上機(jī)實(shí)習(xí)指導(dǎo)和上機(jī)實(shí)習(xí),這是該書編寫的一大特色。上機(jī)實(shí)習(xí)指導(dǎo)給出了該章的學(xué)習(xí)目標(biāo)和應(yīng)注意的問題,這兩部分都非常重要,前者告訴讀者應(yīng)該掌握的知識(shí)重點(diǎn),后者告訴讀者最容易忽略、混淆、搞錯(cuò)的概念和問題。而上機(jī)實(shí)習(xí)的內(nèi)容又很好地配合了對(duì)這些知識(shí)的掌握和理解,并通過實(shí)踐、操作、練習(xí),能很好地鍛煉編程技巧和能力。為了幫助老師教學(xué)、方便學(xué)生做好實(shí)習(xí)準(zhǔn)備,特別是幫助不具備上機(jī)條件的學(xué)生了解上機(jī)結(jié)果,我們給出本上機(jī)實(shí)習(xí)解答。重點(diǎn)是給出一些程序的運(yùn)行結(jié)果、需要完善的程序語句、及要求編寫的程序答案。如有錯(cuò)誤或不當(dāng)之處請(qǐng)批評(píng)指正。第1章 C語言概述上機(jī)實(shí)習(xí) Turbo C系統(tǒng)的基本操作方法二、上機(jī)內(nèi)容2、 運(yùn)行結(jié)果如下:sum=3 刪除變量定義語句或?qū)⑵渥⑨屍饋砗?,再運(yùn)行會(huì)出現(xiàn)錯(cuò)誤提示: “ Error Undefined symbol a in function main. ”等信息。告知a、b、sum在函數(shù)中未定義3、運(yùn)行該程序,輸入任意兩個(gè)整數(shù),會(huì)輸出其中的最大值。第2章 數(shù)據(jù)類型和簡(jiǎn)單程序設(shè)計(jì)上機(jī)實(shí)習(xí) 基本數(shù)據(jù)類型的簡(jiǎn)單程序設(shè)計(jì)二、上機(jī)內(nèi)容1、語法錯(cuò)誤的檢查與修改。錯(cuò)誤:y未定義。修改:int x1,x2,y;運(yùn)行結(jié)果:y=50錯(cuò)誤:inta 缺少空格。修改:int a,b,c;運(yùn)行結(jié)果:c=5000錯(cuò)誤:ch=A 字符變量賦值錯(cuò)誤。修改:ch=A運(yùn)行結(jié)果:A錯(cuò)誤:m#1 #不能為變量名。修改:float m1;m1=2.36;printf(“%f”,m1/2);運(yùn)行結(jié)果:1.1800002、分析程序運(yùn)行結(jié)果。 該題是已知半徑而求圓的面積,輸出半徑和面積值。運(yùn)行結(jié)果為: r=2s=12.566360 該題是求字母a和b的ASCII碼值。運(yùn)行結(jié)果為: 字母a的ASCII碼為:97 字母b的ASCII碼為:98 運(yùn)行結(jié)果: (笑臉) (梅花)3、設(shè)計(jì)編寫一個(gè)簡(jiǎn)單程序。main()printf(“平均成績(jī):%dn”,(100+80+75)/3);該程序運(yùn)行結(jié)果為:平均成績(jī):85第3章 表達(dá)式與運(yùn)算符上機(jī)實(shí)習(xí) 運(yùn)算符及表達(dá)式應(yīng)用二、上機(jī)內(nèi)容1、指出下面程序中的錯(cuò)誤,并改正。錯(cuò)誤:C未定義且該定義語句不正確;若定義時(shí)給a、b、c三個(gè)變量都初始賦值了,可刪掉“scanf(“%d,%d,%d”,a,b,c);”程序行;若定義變量時(shí)不進(jìn)行初始化,該接收變量值的語句有錯(cuò)。修改:int a,b,c;scanf(“%d,%d,%d”,&a,&b,&c);運(yùn)行結(jié)果:1,2,3A=1,b=2,c=62、運(yùn)行下列程序,觀察并分析運(yùn)行結(jié)果。 運(yùn)行結(jié)果:(a+b)/(a-b)=-5a+b/a-b=-9分析:該題說明在表達(dá)式中,分?jǐn)?shù)線上下使用括號(hào)與否計(jì)算結(jié)果完全不同,應(yīng)注意使用括號(hào)。 運(yùn)行結(jié)果:100/200=0100/200.0=0.500000分析:該題說明整除運(yùn)算結(jié)果只保留整數(shù)部分,實(shí)數(shù)運(yùn)算的結(jié)果保留小數(shù)。 運(yùn)行結(jié)果:(i+)+j=300i+(+j)=301i+j)=300分析:自增自減運(yùn)算符的前置運(yùn)算與后置運(yùn)算不同,并注意運(yùn)算符的結(jié)合性。 運(yùn)行結(jié)果:i=101j=101k=101分析:使原數(shù)加1的三種不同運(yùn)算方法。 書中例3.7程序調(diào)試運(yùn)行結(jié)果如下:char=1char(ch)=1int=2int(x)=2float=4float(y)=43、完善程序 #include y=pow(x,5)+POW(10,5);.b=xy?x:y;.第4章 數(shù)據(jù)的輸入與輸出上機(jī)實(shí)習(xí)一 字符的輸入輸出二、上機(jī)內(nèi)容1、運(yùn)行下列程序,注意觀察運(yùn)行結(jié)果。 運(yùn)行結(jié)果: a(輸入數(shù)據(jù))c1=a ab(輸入數(shù)據(jù))c1=a abc(輸入數(shù)據(jù))c1=agetchar()只接收一個(gè)字符,且等待回車后向下運(yùn)行,因此c1輸出結(jié)果相同。 運(yùn)行結(jié)果:請(qǐng)輸入一個(gè)字母:b(輸入數(shù)據(jù))b的前一個(gè)字母是a,后一個(gè)字母是c(輸出結(jié)果)變化:更換“getch ()”命令不顯示輸入內(nèi)容,不等待回車便向下執(zhí)行,輸出結(jié)果相同。2、完善程序ch1=getchar();ch2=ch1-32;(ch1=a&ch1=z)?putchar(ch2):printf(“輸入出錯(cuò)!”);上機(jī)實(shí)習(xí)二 格式輸入輸出函數(shù)的使用二、上機(jī)內(nèi)容1、運(yùn)行下列程序,注意觀察運(yùn)行結(jié)果。 運(yùn)行結(jié)果: 10 25 4.72(輸入數(shù)據(jù)及格式)a=10b=25c=4.720000 10(輸入數(shù)據(jù)及格式) 20 4.72a=10b=25c=4.720000 10,25,4.72(輸入數(shù)據(jù)及格式)a=10b=-20c=324這種輸入格式不對(duì),scanf語句中格式轉(zhuǎn)換符之間沒有非格式字符,輸入逗號(hào)以后不能給后面的變量正確賦值。 運(yùn)行結(jié)果:113,3270;x(輸入數(shù)據(jù)及格式)a=113b=3270c=x 運(yùn)行結(jié)果:p=3.14p=3.1416p= 3.14p= 3.1416p=-10.2fp=-10.4f分析:在%后面加上負(fù)號(hào)后,改變了格式控制符的作用,將-10.2f與-10.4f作為非格式符輸出。在語句“clrscr();”的后面加上語句“printf(“nnn”);”再運(yùn)行程序,在輸出結(jié)果上面空出三個(gè)空行。2、完善程序: scanf(“%d”,&cost);printf(“輸入折扣率”);scanf(“%f”,&percent);printf(“實(shí)際售價(jià)為%f”,c);3、編寫程序。main() float kilometer,metre,mile; printf(“請(qǐng)輸入公里數(shù):”); scanf(“%f”,&kilometre);metre=kilometre*1000;mile=kilometre*2;printf(“%.1f 公里=%.2f里=%.2f米”,kilometre,mile,metre); 第5章 控制結(jié)構(gòu)程序設(shè)計(jì)上機(jī)實(shí)習(xí)一 關(guān)系表達(dá)式和邏輯表達(dá)式二、上機(jī)內(nèi)容1、運(yùn)行下列程序,分析并觀察運(yùn)行結(jié)果。 運(yùn)行結(jié)果:a=1, b=2, c=3ab 的值為:1ab 的值為:1 運(yùn)行結(jié)果:x=3,y=4,z=5xy&xz的值為:1xz的值為:0xz的值為:1!x的值為:0!(xy)的值為:1(xy|xz)&yz的值為:0 運(yùn)行結(jié)果:x=202x10 的值為:12x&x10的值為:02、完善程序b=(year%4= =0 & year%100 != 0 ) | | ( year%400= = 0 );上機(jī)實(shí)習(xí)二 if語句二、上機(jī)內(nèi)容1、運(yùn)行下列程序,分析并觀察運(yùn)行結(jié)果。 運(yùn)行結(jié)果(輸入測(cè)試數(shù)據(jù)一)number=300300是10的倍數(shù)(輸入測(cè)試數(shù)據(jù)二)number=27無輸出 運(yùn)行結(jié)果:(輸入測(cè)試數(shù)據(jù)二)number=300300是10的倍數(shù)(輸入測(cè)試數(shù)據(jù)二)number=2727不是10的倍數(shù)分析:上兩題雖然測(cè)試數(shù)據(jù)相同,但判斷語句完整性不同,輸出結(jié)果便不同。 運(yùn)行結(jié)果: number=8(輸入測(cè)試數(shù)據(jù)8)8是正數(shù)。 number=0(輸入測(cè)試數(shù)據(jù)0)0是零。 number=-8(輸入測(cè)試數(shù)據(jù)-8)-8是負(fù)數(shù)。分析:該題輸出所輸入的數(shù)據(jù)是正數(shù)、零、還是負(fù)數(shù)。2、完善程序if(m= =1|m= =3|m= =5|m= =7|m= =8|m= =10|m= =12) days=30 printf(“%d月份有%d天。n”,m,days) 上機(jī)實(shí)習(xí)三 switch語句二、上機(jī)內(nèi)容1、運(yùn)行下列程序,分析并觀察運(yùn)行結(jié)果。 1(輸入測(cè)試數(shù)據(jù)1)* 2(輸入測(cè)試數(shù)據(jù)2)* 3(輸入測(cè)試數(shù)據(jù)3)*分析:輸入數(shù)值為1、2、3時(shí)輸出如上結(jié)果,輸入其它數(shù)時(shí)無輸出。2、完善程序switch(grade)case 9:printf(“等級(jí)為A”);break;case 8:printf(“等級(jí)為B);break;case 7:printf(“等級(jí)為C);break;case 6:printf(“等級(jí)為D);break;default:printf(“等級(jí)為E”);3、編寫程序#include main()float n,c,sq,sqr;int i;while(1)clrscr();printf(輸入一個(gè)實(shí)數(shù):);scanf(%f,&n);printf(1.輸出相反數(shù)n2.輸出平方數(shù)n3.輸出平方根n4.退出n);scanf(%d,&i);switch(i)case 1:printf(相反數(shù)為:%fn,-n);break;case 2:printf(平方數(shù)為:%fn,n*n); break;case 3:printf(平方根為:%fn,sqrt(n); break;case 4:exit(0);default:printf(輸入錯(cuò)誤!n); 上機(jī)實(shí)習(xí)四 for語句二、上機(jī)內(nèi)容1、運(yùn)行程序,分析并觀察運(yùn)行結(jié)果。 運(yùn)行結(jié)果:4 8 12 16 20分析:該題輸出20以內(nèi)能被4整除的數(shù)。 運(yùn)行結(jié)果:*程序修改后運(yùn)行結(jié)果:*2、完善程序。. for(j=0;j_4-i_;j+). for(j=0;j_i_;j+).3、編寫程序。main()int grade,n1,n2,i=1;clrscr();n1=n2=0;printf(“輸入學(xué)生成績(jī):n”);while(i=60) n1+;else n2+;i+;printf(“及格人數(shù)為:%dn不及格人數(shù)為:%d”,n1,n2);上機(jī)實(shí)習(xí)五 while語句和do-while語句二、上機(jī)內(nèi)容1、運(yùn)行下列程序,分析并觀察運(yùn)行結(jié)果。 原程序運(yùn)行結(jié)果: sum=6 程序修改后運(yùn)行結(jié)果:sum=0分析:因?yàn)檠h(huán)條件為i=3,當(dāng)i=1改成i=4后循環(huán)未執(zhí)行,因此sum=0(初始值)。 原程序運(yùn)行結(jié)果:sum=10 程序修改后運(yùn)行結(jié)果:sum=4分析:do-while循環(huán)先做一次循環(huán)體后再判定條件,因此原程序可做到+1+2+3+4使sum=10,程序修改后,只做一次循環(huán)體+4使sum=4。2、完善程序。.n1=n2=_0_;.scanf(“%d”,&grade);while(grade!=-1).else n2+;.3、編寫程序。按題目要求編寫輸出10行楊輝三角形的程序提供了兩種方法,其中第二種方法更加簡(jiǎn)單和便于理解,但需要學(xué)習(xí)了第6、7章的知識(shí)后再用才更為合適。因此,本題也可以作為習(xí)題放在以后再做。 main() int l,c; long int v; clrscr(); for(l=1;l=10;l+) v=1; printf(%d,v); for(c=2;c=l;c+) v=v*(l-1)-(c-1)+1)/(c-1); if(v100) if(v10) printf(% ld ,v); else printf(% ld ,v); else printf(%ld ,v); printf(n); main() static int m,n,b1010;b01=1;clrscr();for(m=1;m=10;m+) for(n=1;n=m;n+) bmn=bm-1n-1+bm-1n; printf(%-5d,bmn); printf(n); 第6章 數(shù) 組上機(jī)實(shí)習(xí)一 數(shù)值型數(shù)組二、上機(jī)內(nèi)容1、上機(jī)調(diào)試下面的程序,修改其中存在的錯(cuò)誤。 定義數(shù)組長(zhǎng)度不能使用變量。因此,“int ab=1,2,3,4,5;”應(yīng)為“ int a5=1,2,3,4,5;”。 定義一維數(shù)組時(shí),若不是通過初始化將所有的元素賦值,其長(zhǎng)度值不能省略。因此,“int a ;”不正確,按此題意應(yīng)為:“int a11;”。另外,求和變量應(yīng)給初值賦零,“int i,sum;”應(yīng)為:“int i,sum=0;”。2、運(yùn)行下列程序,分析并觀察運(yùn)行結(jié)果。 運(yùn)行結(jié)果: 輸入要查找的數(shù):89(輸入數(shù)據(jù)一)89在這組數(shù)中的第1個(gè)位置 輸入要查找的數(shù):120(輸入數(shù)據(jù)二)120不在這組數(shù)中 輸入要查找的數(shù):94(輸入數(shù)據(jù)三)94在這組數(shù)中的第7個(gè)位置分析:輸入的數(shù)據(jù)在數(shù)組中有無,其輸出結(jié)果能明確告知。3、完善程序 . scanf(%d,&numi); if(numi0 )count+; sum=sum+numi; . . For(i=0;inum;i+) for(j=0;j2;j+) scorei2+=scoreij; avi=scoreij/2; . printf(“%8d”,i+1); printf(“%10d”,scoreij);printf(“%10.1fn”,avi); 上機(jī)實(shí)習(xí)二 字符型數(shù)組二、上機(jī)內(nèi)容1、上機(jī)調(diào)試下面的程序,修改其中存在的錯(cuò)誤。 該程序語句“str=Hello;”不正確,可將前兩句程序合并為:char str =Hello;運(yùn)行結(jié)果:Hello 本程序比較兩個(gè)輸入的字符串是否相同,使用如下語句是不正確的。if (str1= =str2) printf(兩個(gè)字符串相同);應(yīng)改為: if (strcmp(str1,str2)=0) printf(兩個(gè)字符串相同);運(yùn)行結(jié)果: abcabc兩個(gè)字符串相同 abcdef兩個(gè)字符串不同 2、完善程序。 if (_!strcmp(password,str_) printf(_密碼不正確_); for(i=0;inum;i+)for(j= i ;jnum;j+).scorei=scorej;scorej=t;strcpy(namei,namej);strcpy(namej,str);printf(“%8s%12s%8sn”,”名次”,”姓名”,”成績(jī)”);printf(“%8d%12s%8dn”,i+1,namei,scorei);第7章 函 數(shù)上機(jī)實(shí)習(xí)一 函數(shù)的定義和調(diào)用二、上機(jī)內(nèi)容1、上機(jī)調(diào)試下面的程序,修改其中存在的錯(cuò)誤。 該程序有如下缺陷: 返回值類型不為int型時(shí),應(yīng)指出該函數(shù)的類型,并應(yīng)在主函數(shù)中予以指明; 定義sum( )函數(shù)時(shí),形式參數(shù)類型說明使用不正確; 返回值變量的類型要與函數(shù)類型相一致。程序修改如下:main() float a,b,s; float sum(); scanf(%f%f,&a,&b); s=sum(a,b); printf(sum=%f,s);float sum(float x, float y) float s; s=x+y; return s; 該程序有如下缺陷: 該程序所使用的函數(shù)體用大括號(hào)不匹配; 自定義函數(shù)的形式參數(shù)沒說明類型,且不用應(yīng)用空值類型說明; 主程序中是要接收打印星號(hào)的數(shù)量值,而不是輸出n的值。程序修改如下:main() int n; scanf(%d,&n); printstar(n); printstar(n) int n; int i; for (i=1;i=n;i+) printf(*); 2、運(yùn)行下列程序,分析并觀察運(yùn)行結(jié)果。 運(yùn)行結(jié)果:10,35,-20(輸入數(shù)據(jù))35 (輸出數(shù)據(jù))分析:求三個(gè)輸入數(shù)據(jù)的最大值 運(yùn)行結(jié)果:a0=11 (輸入數(shù)據(jù))a1=22a0=22 (輸出數(shù)據(jù))a1=11分析:輸入到兩個(gè)數(shù)組元素內(nèi)的數(shù),經(jīng)調(diào)用s函數(shù)后,將其值進(jìn)行了交換。3、完善程序.scanf(%d,&ascii);put(ascii);int n;for(i=1;imaxi) maxi=xij;上機(jī)實(shí)習(xí)三 一個(gè)應(yīng)用程序的設(shè)計(jì)二、上機(jī)內(nèi)容題目要求編寫應(yīng)用程序的三個(gè)函數(shù)如下:1、減法練習(xí)函數(shù) subt() int i,num1,num2,answer;clrscr();for(i=1;i=5;i+)num1=random(99)+1;num2=random(99)+1;question(num1,num2,-);scanf(“%d”,&answer);if(answer=num1-num2)puts(“正確”);elsevoice();printf(“錯(cuò)了!正確答案是:%dn”,num1-num2);printf(“n減法練習(xí)做完了,按任意鍵返回菜單.”);getch();2、乘法練習(xí)函數(shù)mult() int i,num1,num2,answer;clrscr();for(i=1;i=5;i+)num1=random(99)+1;num2=random(99)+1;question(num1,num2,*);scanf(“%d”,&answer);if(answer= =num1*num2)puts(“正確”);elsevoice();printf(“錯(cuò)了!正確答案是:%dn”,num1*num2);printf(“n乘法練習(xí)做完了,按任意鍵返回菜單.”);getch();3、除法練習(xí)函數(shù)divid() int i,num1,num2,answer;clrscr();for(i=1;i=5;i+)num1=random(99)+1;num2=random(99)+1;question(num1,num2,/);scanf(“%d”,&answer);if(answer=num1/num2)puts(“正確”);elsevoice();printf(“錯(cuò)了!正確答案是:%dn”,num1/num2);printf(“n除法練習(xí)做完了,按任意鍵返回菜單.”);getch();第8章 文 件上機(jī)實(shí)習(xí)一 文件的順序讀寫二、上機(jī)內(nèi)容1、建立和運(yùn)行給定程序,分析并觀察運(yùn)行結(jié)果 該題目要求改正錯(cuò)誤上機(jī)運(yùn)行,請(qǐng)參看本資料包的習(xí)題解答部分。 該程序運(yùn)行時(shí),送入的文件名應(yīng)該是題中創(chuàng)建和操作過的xt1.txt。2、完善程序。 . fp=fopen(filename,”w”); . fprintf(fp,”%s %d %d”,name,s1,s2); . fclose(fp); . . if(fp=fopen(filename.”r”)= =NULL); .fscanf(fp,”%s %d %d”,name,&s1,&s2):if(strcmp(name,stuname)= =0).3、從文件中讀出例8.8寫入的字符串,可以放在字符數(shù)組中,通過屏幕輸出查驗(yàn)讀出的內(nèi)容,寫出參考程序如下:#include FILE *fp;main( ) static char a32; fp=fopen(w88.txt,r); fgets(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版多房產(chǎn)離婚協(xié)議書-2025年度家庭財(cái)產(chǎn)分割實(shí)施流程2篇
- 二零二五年度餐飲業(yè)餐飲店裝修設(shè)計(jì)與施工服務(wù)合同2篇
- 二零二五版廣告牌廣告位租賃與廣告效果分析合同3篇
- 二零二五年度鋼板租賃及節(jié)能改造服務(wù)合同2篇
- 二零二五版房屋抵押借款合同及借款收據(jù)范本3篇
- 二零二五年度軟裝方案創(chuàng)意設(shè)計(jì)合同2篇
- 二零二五年度火鍋店原料采購(gòu)及質(zhì)量控制合同范本3篇
- 二零二五版跨境電商個(gè)人合伙退伙合同范本3篇
- 二零二五年度頂賬房買賣合同備案及注銷協(xié)議3篇
- 二零二五版綠色建筑項(xiàng)目墊資合同范本共3篇
- 《疥瘡的防治及治療》課件
- Unit4 What can you do Part B read and write (說課稿)-2024-2025學(xué)年人教PEP版英語五年級(jí)上冊(cè)
- 2025年MEMS傳感器行業(yè)深度分析報(bào)告
- 《線控底盤技術(shù)》2024年課程標(biāo)準(zhǔn)(含課程思政設(shè)計(jì))
- 學(xué)校對(duì)口幫扶計(jì)劃
- 倉(cāng)庫倉(cāng)儲(chǔ)安全管理培訓(xùn)課件模板
- 風(fēng)力發(fā)電場(chǎng)運(yùn)行維護(hù)手冊(cè)
- 《3-6歲兒童學(xué)習(xí)與發(fā)展指南》專題培訓(xùn)
- 河道旅游開發(fā)合同
- 情人合同范例
- 建筑公司勞務(wù)合作協(xié)議書范本
評(píng)論
0/150
提交評(píng)論