C語言程序設(shè)計實驗上機(jī)報告_第1頁
C語言程序設(shè)計實驗上機(jī)報告_第2頁
C語言程序設(shè)計實驗上機(jī)報告_第3頁
C語言程序設(shè)計實驗上機(jī)報告_第4頁
C語言程序設(shè)計實驗上機(jī)報告_第5頁
已閱讀5頁,還剩105頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課 程 實 驗 報 告課程名稱: C語言程序設(shè)計 專業(yè)班級: 信息安全 1302 學(xué) 號: 姓 名: 指導(dǎo)教師: 報告日期: 2014年6月16日 計算機(jī)科學(xué)與技術(shù)學(xué)院目 錄 TOC o 1-3 h z u HYPERLINK l _Toc388720546 1 實驗概述1 HYPERLINK l _Toc388720547 2 第一次實驗2 HYPERLINK l _Toc388720548 2.1 實驗?zāi)康?PAGEREF _Toc388720548 h 3 HYPERLINK l _Toc388720549 2.2 實驗內(nèi)容 PAGEREF _Toc388720549 h 3 HYPER

2、LINK l _Toc388720550 2.3 實驗小結(jié)19 HYPERLINK l _Toc388720551 3 第二次實驗20 HYPERLINK l _Toc388720552 3.1 實驗?zāi)康?0 HYPERLINK l _Toc388720553 3.2 實驗內(nèi)容20 HYPERLINK l _Toc388720554 3.3 實驗小結(jié)35 HYPERLINK l _Toc388720555 4 第三次實驗36 HYPERLINK l _Toc388720556 4.1 實驗?zāi)康?6 HYPERLINK l _Toc388720557 4.2 實驗內(nèi)容36 HYPERLINK l

3、 _Toc388720558 4.3 實驗小結(jié)49 HYPERLINK l _Toc388720559 5 第四次實驗50 HYPERLINK l _Toc388720556 5.1 實驗?zāi)康?0 HYPERLINK l _Toc388720557 5.2 實驗內(nèi)容50 HYPERLINK l _Toc388720558 5.3 實驗小結(jié)62 HYPERLINK l _Toc388720560 6 第五次實驗63 HYPERLINK l _Toc388720556 6.1 實驗?zāi)康?3 HYPERLINK l _Toc388720557 6.2 實驗內(nèi)容63 HYPERLINK l _Toc3

4、88720558 6.3 實驗小結(jié)69 HYPERLINK l _Toc388720561 7 第六次實驗70 HYPERLINK l _Toc388720556 7.1 實驗?zāi)康?0 HYPERLINK l _Toc388720557 7.2 實驗內(nèi)容70 HYPERLINK l _Toc388720558 7.3 實驗小結(jié)83 HYPERLINK l _Toc388720562 8 第七次實驗84 HYPERLINK l _Toc388720556 8.1 實驗?zāi)康? PAGEREF _Toc388720556 h 4 HYPERLINK l _Toc388720557 8.2 實驗內(nèi)容8

5、4 HYPERLINK l _Toc388720558 8.3 實驗小結(jié)105 HYPERLINK l _Toc388720563 9 實驗總結(jié)106 HYPERLINK l _Toc388720564 參考文獻(xiàn)1071實驗概述本實驗采用C語言常用的上機(jī)開發(fā)環(huán)境Visual C+6.0集成開發(fā)環(huán)境。其關(guān)鍵是掌握程序的編輯、修改、編譯、鏈接和執(zhí)行的方法,以及如何調(diào)試程序,跟蹤程序,通過斷點控制程序,觀察變量、表達(dá)式在程序運(yùn)行過程中的取值,如何綜合運(yùn)用這些方法定位程序中的的錯誤和排除錯誤。在實驗中除了傳統(tǒng)的編程設(shè)計題外,增加了源程序改錯題,源程序完善、修改、替換題,程序的調(diào)試跟蹤題等,培養(yǎng)學(xué)生跟蹤

6、程序、設(shè)置斷點、調(diào)試程序的能力,排除程序中語法、邏輯方面錯誤與故障的能力,并養(yǎng)成細(xì)致、周密、嚴(yán)謹(jǐn)?shù)木幊套黠L(fēng)。實驗中的源程序改錯題,先給出一些含有經(jīng)典、常見錯誤的源程序,讓學(xué)生通過編譯或運(yùn)行發(fā)現(xiàn)錯誤,并加以改正,從而糾正初學(xué)者易犯的常見錯誤,實驗中的源程序修改替換題,也是先給出源程序,然后要求學(xué)生按要求編寫修改替換原來程序中的部分代碼。實驗中的跟蹤調(diào)試結(jié)果填空題,給出源程序,要求學(xué)生填寫程序運(yùn)行過程中的某些中間結(jié)果。強(qiáng)迫學(xué)生用斷點設(shè)置、單步跟蹤等調(diào)試程序,觀察并填寫相應(yīng)的中間結(jié)果。實驗中的編程設(shè)計題,只給出題目,要求學(xué)生完成從源程序的編程、編輯、修改,編譯產(chǎn)生目標(biāo)代碼,鏈接產(chǎn)生可執(zhí)行文件,運(yùn)行程

7、序得到正確結(jié)果的全部環(huán)節(jié)。學(xué)習(xí)C語言與學(xué)習(xí)和使用任何一門其他程序設(shè)計語言一樣。首先要理解程序設(shè)計語言的語法和語義,然后通過上機(jī)熟悉該語言集成開發(fā)環(huán)境,掌握編輯、修改、編譯、鏈接、跟蹤、調(diào)試程序等方面的技巧。最后,還要熟悉語言編譯系統(tǒng)提供的庫函數(shù)或類庫,以便快速實現(xiàn)程序的設(shè)計與開發(fā)。上機(jī)實驗就是學(xué)習(xí)與掌握上面三個環(huán)節(jié)的重要途徑。上機(jī)實驗之前一定要預(yù)先編好有關(guān)程序,把上機(jī)的重點放到程序的編輯、修改、編譯、鏈接、跟蹤、調(diào)試程序等方面,放到觀察程序運(yùn)行過程中的中間結(jié)果和運(yùn)行完畢后的運(yùn)行結(jié)果方面來。最終使自己的大腦變成一臺“計算機(jī)”,能夠在腦袋中運(yùn)行自己的程序,判斷各種情況下程序的走向等等,從而提高上機(jī)

8、的效率和程序設(shè)計的準(zhǔn)確性。 總之,上機(jī)實驗是進(jìn)一步深刻了解C語言的語法、語義,掌握用C語言進(jìn)行初步程序設(shè)計所需要的方法和技能的一個重要環(huán)節(jié)。2 第一次實驗2.1 實驗?zāi)康?.熟悉C語言開發(fā)環(huán)境VC+6.0的使用;2.學(xué)會在VC+6.0中編譯、運(yùn)行、調(diào)試程序;3.熟悉表達(dá)式和標(biāo)準(zhǔn)輸入與輸出;4.熟悉掌握掌握各種運(yùn)算符運(yùn)算功能,操作數(shù)的類型,運(yùn)算結(jié)果的類型及運(yùn)算過程中的類型轉(zhuǎn)換,重點是c語言特有的運(yùn)算符,例如位運(yùn)算符,問號運(yùn)算符,逗號運(yùn)算符;書籍運(yùn)算符的優(yōu)先級和結(jié)合性;5.掌握getchar,putchar,scanf和printf函數(shù)的用法;6.掌握c程序(順序結(jié)構(gòu)程序)的編寫方法。2.2 實驗

9、內(nèi)容(一) 修改四個源程序得到正確的結(jié)果和如下程序設(shè)計:編寫一個程序,輸入字符,如果是大寫字母,則將轉(zhuǎn)換成對應(yīng)的小寫,否則的值不變,最后輸出。編寫一個程序,輸入無符號短整數(shù)x,(0 15, 1 16-),取出x從第位開始向左的位(從右至左編號為015),并使其向左端(第15位)靠齊。(3)IP地址通常是4個用句點分隔的小整數(shù)(即點分十進(jìn)制),如32.55.1.102。這些地址在機(jī)器中用無符號長整形表示。編寫一個程序,以機(jī)器存儲的形式讀入一個互聯(lián)網(wǎng)IP地址,對其譯碼,然后用常見的句點分隔的4部分的形式輸出。例如,整形676879571二進(jìn)制表示就是:00101000 01011000 01011

10、100 11010011,按照8位一組可表示為:40 88 92 211,由于CPU處理數(shù)據(jù)的差異,它的順序是顛倒的,所有最終格式為211.92.88.40。(二)1. 設(shè)計一個程序,在字符模式下,以某個字符拼出“王”漢字圖形,顯示輸出。2. 輸入一個華氏溫度,要求輸出攝氏溫度。公式為c=5/9*(f-32)。3. 設(shè)計3種算法,完成交換整型兩個變量值的程序。4. 設(shè)計一個程序,完成如下功能:輸出一個三位數(shù),將它反向輸出。如輸入127,輸出721。5. 設(shè)計2種完成計算MAXx,y,z的程序。6. 設(shè)計一個程序,完成計算3個數(shù)的居中數(shù)。7. 設(shè)計計算一元二次方程的根的程序。8. 根據(jù)任意三角形

11、的面積公式(海倫公式):S=p(p-a)(p-b)(p-c), 其中,p=(a+b+c)/2, a.b.c為三角形三邊,設(shè)計一個程序計算任意三角形的面積。實驗步驟及結(jié)果(要求給出源程序和程序運(yùn)行結(jié)果。另外,根據(jù)實驗內(nèi)容,記錄編輯、編譯、鏈接、調(diào)試程序的操作過程和實驗現(xiàn)象) (一)改錯:(紅色字體為修改部分)源程序1.#include #includeint main(void) float a,b,c,s,t; print(input three dege of the trianglen) scanf(%f%f%f,&a,&b,&c); s=(a+b+c)/2 t=s*(s-a)*(s-b)

12、*(s-c); area=sqrt(t); print(area=%dn,area); return 0;修改后:源程序1.#include #include int main(void) float a,b,c,s,t; print(input three dege of the trianglen); scanf(%f%f%f,&a,&b,&c); s=(a+b+c)/2; t=s*(s-a)*(s-b)*(s-c); t=sqrt(t); printf(area=%dn,t); return 0;源程序2:#include #define N 5;int sum(int x,int n)

13、;int main() int i,aN,total; printf(Input %d integer please!n,N); for(i=0;iN;i+) scanf(%d,ai); total=sum(a,N); printf(The sum is %dn,total); return 0;int sum(int x,int n); int i,s; for(s=0;i=0;in;i+); s+=xi; return s;修改后:#include #define N 10int sum(int x,int n);int main() int i,aN,total; printf(Inpu

14、t %d integer please!n,N); for(i=0;iN;i+) scanf(%d,ai); total=sum(a,N); printf(The sum is %dn,total); return 0;int sum(int x,int n) int i,s; for(s=0,i=0;in;i+) s+=xi; return s;源程序3:#include #define PI 3.14159; voidmain(void) int f; short p,k; double c,r,s; /*for task 1*/ printf(Input Fahrenheit:); sc

15、anf(%d,f); c=5/9*(f-32); printf(n %d(F)=%.2(C)nn,f,c /*for task 2*/ printf(input the radius r:); scanf(%f,&r); s=PI*r*r; printf(nThe acreage is %.2fnn,s); /*for task 3*/ printf(input hex int k,p:); scanf(%x %x,&k,&p);newint=(p&0 xff00)|(k&0 xff00)8; printf(new int=%xnn,newint);修改后:#include #define P

16、I 3.14159 int main(void) int f,newint; short p,k; double c,r,s; /*for task 1*/ printf(Input Fahrenheit:); scanf(%d,&f); c=5/9*(f-32); printf(n %d(F)=%.2f(C)nn,f,c); /*for task 2*/ printf(input the radius r:); scanf(%lf,&r); s=PI*r*r; printf(nThe acreage is %.2fnn,s); /*for task 3*/ printf(input hex

17、short int k,p:); scanf(%hd %hd,&k,&p); newint=(p&0 xff00)+(k8)&0 x00ff; printf(newint=%hdnn,newint); return 0;源程序4:#include void main() int a,b,t; printf(Input two integers:); scanf(%d %d,&a,&b); t=a;a=b;b=t; prinf(na=%d,b=%d,a,b);替換下劃線,語句:#include void main() int a,b; printf(Input two integers:); s

18、canf(%d %d,&a,&b); a=a+b; b=a-b; a=a-b; printf(na=%d,b=%d,a,b);程序設(shè)計:程序1: #include void main() int c ; c=getchar(); if(c=A&c=Z) c=c-A+a; putchar(c);程序2: #include int main() unsigned short int x,m,n; unsigned short int result; scanf(%hu%hu%hu,&x,&m,&n); result=xm(16-n); printf(%hu,result); return 0;程序

19、3:#includevoid main() long ip; unsigned int i=0,tem=0,c=0; scanf(%ld,&ip); for (i=0;i32;i+) tem|=(ip%2)(i-8*c); if(i+1)%8=0) c=2?printf(%3d.,tem):printf(%3d,tem); tem=0; c+; ip=ip/2;(二)、題1:#include void main()printf(1111111111n);printf( 11 n);printf( 11 n);printf( 11111111 n);printf( 11 n);printf( 1

20、1 n);printf(1111111111n);題2:#include void main ()int tem,res;printf(please input your temperaturen);scanf(%d,&tem);res=5.0/9.0*(tem-32);printf(the result is: %dn,res);題3: #include void main () int a,b; printf(The first Methoad:n); printf(please input the value of a,bn); scanf(%d%d,&a,&b); int tem; t

21、em=a,a=b,b=a; printf(a=%d b=%d,a,b); printf(The second Methoad:n); printf(please input the value of a,bn); scanf(%d%d,&a,&b); a+=b; b=a-b; a=a-b; printf(a=%d b=%d,a,b); printf(The third Methoad:n); printf(please input the value of a,bn); scanf(%d%d,&a,&b); a=b; b=a; a=ab; printf(a=%d b=%d,a,b); 題4:#

22、include void main() int num,res;printf (input the number :n);scanf(%d,&num);res=100*(num%10);res+=num%100-num%10;res+=num/100;printf(the result is the :n%dn,res); 題5: #include void main() int a,b,c;printf(the first:ninput three numbersn);scanf(%d%d%d,&a,&b,&c);a=ab?a:b;a=ab?a:c;if (ab) if(ac); elsea

23、=c; else a=b; if (bc); else a=c; printf(Max=:%dn,a);printf(the second:ninput three numbersn);scanf(%d%d%d,&a,&b,&c);a=(ab)?(ac?a:c):(bc?b:c);printf(Max=:%dn,a);題6: #include void main() int a,b,c,d;printf(input three numbers:n);scanf(%d%d%d,&a,&b,&c);d=a+b+c;a=(ab)?(bc?c:b):(ac?c:a);b=(ab)?(ac?a:c):(

24、bc?b:c);d=d-a-b;printf(mid=%dn,d); 題7:#include#includeint main(void)float a,b,c,d,x1,x2,realpart,imagepart;printf(Input a,b,c:n);scanf(%f%f%f,&a,&b,&c);if(a=0)printf(Inupt ERRORn);elsed=b*b-4*a*c;if(d0)realpart=-b/(2*a);imagepart=sqrt(-d)/(2*b);printf(complex roots:%g+%.3gin,realpart,imagepart);prin

25、tf(complex roots:%g-%.3gin,realpart,imagepart);elsex1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a);printf(x1=%f,x2=%fn,x1,x2);return 0;題8:#include #include void main() float a,b,c,s,p; printf(input three numbers:n); scanf(%f%f%f,&a,&b,&c); p=(a+b+c)/2; if(p*(p-a)*(p-b)*(p-c)0) s=sqrt(p*(p-a)*(p-b)*(p-c);

26、 printf(the result :%fn,s); else printf(these numbers isn a triangle!n);2.3 實驗小結(jié)1.編寫程序時,要注意加上“#include ” ,這是一個包含基本輸入輸出的頭文件。2,在溫度轉(zhuǎn)換題中。公式是c=5/9*(f-32),但是用c語言不能這么寫。因為在C語言中,5/9是得到一個int 型的結(jié)果,所以會得到0,導(dǎo)致程序運(yùn)行結(jié)果始終為0;必須寫成5.0/9才能得到浮點型結(jié)果。3.一個工程中只能有一個main()函數(shù),不然編譯器會報錯。4.在使用標(biāo)準(zhǔn)輸入語句scanf()是其中需要賦值的變量要使用其地址,即使用&來獲取其地址

27、,以存入數(shù)據(jù)。6.define 語句后不帶分號,for條件表達(dá)式后不需要分號。7.數(shù)據(jù)輸入定義類型要和輸入一致;使用變量必須聲明。3 第二次實驗3.1 實驗?zāi)康?.掌握復(fù)合語句、if語句、switch語句的使用,熟練掌握for、while、do-while 三種基本的循環(huán)控制語句的使用,掌握重復(fù)循環(huán)技術(shù),了解轉(zhuǎn)移語句與標(biāo)號語句。2.熟練運(yùn)用for、while、do-while語句來編寫程序。3.練習(xí)轉(zhuǎn)移語句和標(biāo)號語句的使用。4.使用集成開發(fā)環(huán)境中的調(diào)試功能:單步執(zhí)行、設(shè)置斷點、觀察變量值。3.2 實驗內(nèi)容(一) 下面是計算s=n!的源程序,在這個源程序中存在若干語法和邏輯錯誤。 要求在計算機(jī)上

28、對這個例子程序進(jìn)行調(diào)試修改,使之能夠正確完成指定任 務(wù)。例如,8!=40320。 源程序修改替換(1)修改上述計算s=n!的源程序,要求分別用while和do-while語句替換for語句。(2)修改上述計算s=n!的源程序,要求輸入改為“整數(shù)S”,輸出改為“滿足n!S的最小整數(shù)n”。例如,輸入整數(shù)為40310,輸出結(jié)果為n=8。 編寫并上機(jī)調(diào)試運(yùn)行能實現(xiàn)以下功能的程序。 (1) 假設(shè)工資稅金按以下方法計算:x 1000元,不收取稅金;1000 x 2000,收取5%的稅金;2000 x 3000,收取10%的稅金;3000 x 4000,收取15%的稅金;4000 x 5000,收取20%的

29、稅金;x5000,收取25%的稅金。編寫一個程序,輸入工資金額,輸出應(yīng)收取稅金額度,要求分別用if語句和switch語句來實現(xiàn)。(2)編寫一個程序,將輸入的一行字符復(fù)制到輸出,復(fù)制過程中將一個以上的空格字符用一個空格代替(3)編寫一個程序,打印如下的楊輝三角形。1/*第0行 */11/*第1行 */121/*第2行 */13311464115101051161520156117213535217118285670562881193684126126 843691每個數(shù)據(jù)值可以由組合計算(表示第i行第j列位置的值),而的計算如下: (i=0,1,2,)(j=0,1,2,3,i)說明:本程序中為了

30、打印出金字塔效果,要注意空格的數(shù)目。一位數(shù)之間是3個空格,說明:本程序中為了打印出金字塔效果,要注意空格的數(shù)目。一位數(shù)之間是3個空格,兩位數(shù)之間有2個空格,3位數(shù)之間只有一個空格,程序編制過程中要注意區(qū)分。(4)編寫一個程序,將用戶輸入的任意正整數(shù)逆轉(zhuǎn),例如,輸入1234,輸出4321。 編寫并上機(jī)調(diào)試運(yùn)行能實現(xiàn)以下功能的程序。編寫一個程序,用牛頓迭代法求方程滿足精度e=10-6的一個近似根,并在屏幕上輸出所求近似根。牛頓迭代法求方程近似根的迭代公式為:,其中,是函數(shù)f(x)的導(dǎo)函數(shù)。牛頓迭代法首先任意設(shè)定的一個實數(shù)來作為近似根的迭代初值x0,然后用迭代公式計算下一個近似根x1。如此繼續(xù)迭代計

31、算x2, x3, , xn, 直到,此時值xn即為所求的近似根。(二) 9. 設(shè)計一個計算個人所得稅的程序。 10. 計算兩個自然數(shù)的最大公約數(shù)和最小公倍數(shù)。 11. 輸入一個數(shù)n(2),判定n是否為素數(shù)。 12. 輸出2100范圍內(nèi)的所有素數(shù)。要求:不使用子函數(shù)。 13. 輸出九九乘法口訣表實驗步驟及結(jié)果(要求給出源程序和程序運(yùn)行結(jié)果。另外,根據(jù)實驗內(nèi)容,記錄編輯、編譯、鏈接、調(diào)試程序的操作過程和實驗現(xiàn)象) (一)改錯:(紅色字體為修改部分)2.3-1#include int main()int i,n,s=1;printf(Please enter n:);scanf(%d,n);for(

32、i=1,i=n,i+)s=s*i;printf(%d!=%d,n,s);return 0;#include int main()int i,n,s=1;printf(Please enter n:);scanf(%d,&n);for(i=1;i=n;i+)s=s*i;printf(%d!=%d,n,s);return 0;源程序修改替換:2.3-2(1)#include int main()int i=1,n,s=1;printf(Please enter n:);scanf(%d,&n);while(i=n)s*=i;i+;printf(used the while :%d!=%dn,n,s

33、);printf(Please enter n:);scanf(%d,&n);i=1;s=1;dos*=i;i+;while(i=n);printf(used the do-while :%d!=%dn,n,s);return 0;(2)#include int main()int i,n=1,s,tem=1;printf(Please enter s:);scanf(%d,&s);for(;n+)for(i=1;i=s) break;tem=1;printf(MAX n: %d!=%dn,n,s);return 0; 程序設(shè)計:#include void main()int sala;pri

34、ntf(input your salary:n);scanf(%d,&sala);switch(sala/1000)case 0: printf(your tax is 0%n);break;case 1: printf(your tax is 5%n);break;case 2: printf(your tax is 10%n);break;case 3: printf(your tax is 15%n);break;case 4: printf(your tax is 20%n);break;default: printf(your tax is 25%n);2.3-3.2#include

35、 void main()char c1,c2;while(c1=getchar()!=EOF) while(c1= ) if(c2=getchar()!= ) printf(%c,c1); c1=c2; printf(%c,c1);2.3-3.3#include int c(int j,int i);void main() int i,j,m; for(i=0;i=9;i+) for(m=0;m20-2*i;m+) printf( ); for(j=0;j=i;j+) printf(%-4d,c(j,i); printf(n); int c(int j,int i) if(j=0) retur

36、n 1; return(c(j-1,i)*(i-j+1)/j;2.3-3.4#include void main() long m,res=0; int i,n; printf(input your number:n); scanf(%d,&m); for(i=0;(m=(n=m%10,m/10)=0;i+) res=res*10+n; if(m=0) break; printf(result: %dn,res);2.3-4#include #include #define e 1e-6int c(int j,int i);void main() double x0=1,xk=1;do x0=

37、xk; xk=x0-(3*x0*x0*x0-4*x0*x0-5*x0+13)/(9*x0*x0-8*x0-5); while(fabs(x0-xk)e); printf(%.9lf,xk);(二)題9:#includeint main(void)float a,n,m;printf(Inupt a number:n);scanf(%f,&a);n=a-3500;if(a=0&a=3500)printf(0);else if(n=1500)m=n*0.03;else if(n=4500)m=n*0.1-105;else if(n=9000)m=n*0.2-555;else if(n=35000)

38、m=n*0.25-1005;else if(n=55000)m=n*0.3-2755;else if(n=80000)m=n*0.35-5505;else m=n*0.45-13505;printf(m=%.3f,m);return 0;題10:#includeint main(void)int x,y,max,min,c,d;printf(Input two numbersn);scanf(%d%d,&x,&y);if(x=0|yy)max=x;min=y; else max=y;min=x;while(!(min%x=0&min%y=0)y-;c=y;d=(x*y)/c;printf(c=

39、%d,d=%d,c,d);return 0;題11:#include#includeint main(void)int n,i,r;int k;printf(Input a number:n);scanf(%d,&n);if(n2)i=1;dok=sqrt(n);i+;r=n%i;while(r!=0)&(i=k);if(r)printf(%d is a prime.n,n);elseprintf(%d is not a prime.n,n);return 0;題12:#include#includeint main(void)int n,i,r,k;printf(n=2 is a prime

40、.n);for(n=2;n=100;n+)i=1;dok=sqrt(n);i+;r=n%i;while(r!=0)&(i=k);if(r)printf(n=%d is a prime.n,n);return 0;題13:#includemain(void)int i,j,result;for(i=1;i10;i+)for(j=1;j10;j+)result=i*j;printf(%d*%d=%-3d,i,j,result);printf(n);3.3 實驗小結(jié)1. 在使用標(biāo)準(zhǔn)輸入語句scanf()是其中需要賦值的變量要使用其地址,即使用&來獲取其地址,以存入數(shù)據(jù)。2,while是先進(jìn)行條件判斷

41、,為真就進(jìn)入循環(huán);do-while是先執(zhí)行循環(huán)體一次,在進(jìn)行判斷,并且while條件體后需要添加分號;。3.for循環(huán)是注意判斷條件是)還是=)。4.使用switch語句是記著加上break語句跳出switch,有必要時需加上default。6.double型數(shù)據(jù)輸入輸出要使用“%lf”。7.兩個數(shù)的最小公倍數(shù)就是兩數(shù)之積除以兩數(shù)的最大公約數(shù)。8.九九乘法表,注意“t”和“n”的使用時機(jī)。4 第三次實驗4.1 實驗?zāi)康氖煜ず驼莆蘸瘮?shù)的定義、聲明;函數(shù)調(diào)用與參數(shù)傳遞方法;以及函數(shù)返回值類型的定義和返回值使用。熟悉和掌握不同存儲類型變量的使用。熟悉多文件編譯技術(shù)。4.2 實驗內(nèi)容(一) 源程序改錯

42、下面是計算s=1!+2!+3!+n!的源程序,在這個源程序中存在若干語法和邏輯錯誤。要求在計算機(jī)上對這個例子程序進(jìn)行調(diào)試修改,使之能夠正確完成指定任務(wù)。 源程序修改替換(1)修改上述源程序中的sum_fac函數(shù),使其計算量最?。?)修改上述源程序中的sum_fac函數(shù),計算 跟蹤調(diào)試下面是計算fabonacci數(shù)列前n項和的源程序,現(xiàn)要求單步執(zhí)行該程序,并觀察p,i,sum,n值,即:(1)剛執(zhí)行完scanf(%d,&k);語句時,p,i值是多少?(2)從fabonacci函數(shù)返回后,光條停留在哪個語句上?(3)進(jìn)入fabonacci函數(shù)時,watch窗口顯示的是什么?(4)當(dāng)i=3時,從調(diào)用

43、fabonacci函數(shù)到返回,n值如何變化? 程序設(shè)計編寫并上機(jī)調(diào)試運(yùn)行能實現(xiàn)以下功能的程序。(1)編寫一個程序,讓用戶輸入兩個整數(shù),計算兩個數(shù)的最大公約數(shù)并且輸出之。要求用遞歸函數(shù)實現(xiàn)求最大公約數(shù),同時以單步方式執(zhí)行該程序,觀察其遞歸過程。(2)編寫一個程序,驗證歌德巴赫猜想:一個大于等于4的偶數(shù)都是兩個素數(shù)之和。(3)編寫一個程序,證明對于在符號常量BEGIN和END之間的偶數(shù)這一猜測成立。例如,如果BEGIN為10,END為20,則程序的輸出應(yīng)為:GOLDBACHS CONJECTURE:(二)14. 求n個數(shù)的最大值、最小值和平均值。要求:不使用數(shù)組。15. 依據(jù)下列格里高利公式,計算

44、圓周率。要求最后一項10-6。16. 完全數(shù)是一些特殊的自然數(shù)。它所有的真因子(即除了自身以外的約數(shù))的和恰好等于它本身。試求出11000范圍內(nèi)的所有完全數(shù)。17. 水仙花數(shù)是指一個 3 位數(shù),它的每個位上的數(shù)字的 3 次冪之和等于它本身。例如:13 + 53 + 33 = 153。試求出所有的水仙花數(shù)。18. 一個的數(shù),其七進(jìn)制和九進(jìn)制均為3位數(shù),且3位數(shù)的數(shù)字正好相反。試求出這個數(shù)。19. 求解1313的尾數(shù)三位是多少。求解100!尾數(shù)有多少個0。實驗步驟及結(jié)果(要求給出源程序和程序運(yùn)行結(jié)果。另外,根據(jù)實驗內(nèi)容,記錄編輯、編譯、鏈接、調(diào)試程序的操作過程和實驗現(xiàn)象) (一)1源程序改錯下面是

45、計算s=1!+2!+3!+n!的源程序,在這個源程序中存在若干語法和邏輯錯誤。要求在計算機(jī)上對這個例子程序進(jìn)行調(diào)試修改,使之能夠正確完成指定任務(wù)。源程序:#includevoid main(void) int k; for(k=1;k6;k+) printf(k=%dtthe sum is %ldn,k,sum_fac(k);long sum_fac(int n) long s=0; int i; long fac; for(i=1;i=n;i+) fac*=i; s+=fac; return s;修改后:#includelong sum_fac(int n);void main(void)

46、int n; printf(please input N :n); scanf(%d,&n); printf(the sum is %ldn,sum_fac(n); long sum_fac(int n) long s=0; int i; long fac=1; for(i=1;i=n;i+) fac*=i; s+=fac; return s;2源程序修改替換(1)修改上述源程序中的sum_fac函數(shù),使其計算量最小。long sum_fac(int n) long s=0; int i=1; long fac=1;while(i=n) fac*=i+; s+=fac; return s;(2

47、)修改上述源程序中的sum_fac函數(shù),計算 double sum_fac(int n) double s=0,fac=1; int i=1; double p;while(i=n) fac*=i+; p=1/fac; s+=p; return s;3跟蹤調(diào)試下面是計算fabonacci數(shù)列前n項和的源程序,現(xiàn)要求單步執(zhí)行該程序,并觀察p,i,sum,n值,即:剛執(zhí)行完scanf(%d,&k);語句時,p,i值是多少?0 x28ff10 i=2從fabonacci函數(shù)返回后,光條停留在哪個語句上?printf(i=%dtthe sum is %ldn,i,*p);進(jìn)入fabonacci函數(shù)時,

48、watch窗口顯示的是什么?當(dāng)i=3時,從調(diào)用fabonacci函數(shù)到返回,n值如何變化?從1變到3源程序:#includelong fabonacci(int);void main(void) int i,k; long sum=0,*p= scanf(%d,&k); for(i=1;i=k;i+) sum+=fabonacci(i); printf(i=%dtthe sum is %ldn,i,*p); long fabonacci(int n) if(n=1 | n=2) return 1; else return fabonacci(n-1)+fabonacci(n-2);其中,“ l

49、ong sum=0,*p= ”聲明p為長整型指針并用&sum取出sum的地址對p初始化。*p表示引用p所指的變量(*p即sum)。4程序設(shè)計編寫并上機(jī)調(diào)試運(yùn)行能實現(xiàn)以下功能的程序。(1) 編寫一個程序,讓用戶輸入兩個整數(shù),計算兩個數(shù)的最大公約數(shù)并且輸出之。要求用遞歸函數(shù)實現(xiàn)求最大公約數(shù),同時以單步方式執(zhí)行該程序,觀察其遞歸過程。#include int divisor(int n,int m);void main()int a,b,res;printf(input two integer:n);scanf(%d%d,&a,&b);res=divisor(a,b);printf(The max

50、divisor: %dn,res);int divisor(int n,int m)int tem;if(nm) n=m+n; m=n-m; n=n-m; tem=n%m;if(tem=0) return m;return divisor(m,tem); (2) 編寫一個程序,驗證歌德巴赫猜想:一個大于等于4的偶數(shù)都是兩個素數(shù)之和。#include int main() int m,i,j; printf(input a number:n); scanf(%d,&m); for(i=2,j=m-i;j=2;i+,j=m-i) if(p(j)&p(i) printf(%d=%d+%d,m,i,j

51、); break; return 0; int p(int m) int i; for( i=2;i=4 is the sum of two primes.10=3+712=5+720=3+17源代碼:#include int p(int m);int main() int m,i,j,BEGIN,END; printf(input BEGIN and END :n); scanf(%d%d,&BEGIN,&END); printf(GOLDBACHS CONJECTURE:nEvery even number n=4 is the sum of two primesn); if(BEGIN%

52、2!=0) BEGIN+; for(m=BEGIN;m=2;i+,j=m-i) if(p(j)&p(i) printf(%d=%d+%dn,m,i,j); break; return 0; int p(int m) int i; for( i=2;im;i+) if(m%i=0) return 0; return 1; (二)題14:#includeint main(void)int i=0,n;float max,min,sum,average;printf(Input numbersn);scanf(%d,&n);max=n;min=n;sum=0;while(n!=0)if(maxn)m

53、in=n;i+;sum+=n;scanf(%d,&n);average=sum/i;printf(max=%.gn,max); printf(min=%.gn,min);printf(average=%.gn,average);return 0;題15:#include#includeint main(void)int s;float a,b,n;s=-1;a=0;n=1;for(;fabs(b)=1e-6;n+=2)s=-s;b=s/n;a+=b;a=4*a;printf(%.6fn,a);return 0;題16:#includeint main(void)int n,a,sum,b;n=

54、1;while(n=1000)a=1;sum=0;while(an)b=n%a;if(!b)sum+=a; a=a+1;if(sum=n) printf(sum=%dt,sum);n+;return 0;題17:#includeint main(void)int a,b,c;for(a=1;a=9;a+)for(b=0;b=9;b+) for(c=0;c=9;c+)if(100*a+10*b+c)=a*a*a+b*b*b+c*c*c)printf(%d%d%dn,a,b,c);return 0;題18:#includeint main(void)int a,b,c,x;a=1;b=0;c=1;

55、 while(a=6) while(b=6) while(c=6) if(49*a+7*b+c)=(81*c+9*b+a) x=49*a+7*b+c;printf(x=%dn,x); c+; c=1;b+; b=0;a+; return 0;題19:#includeint main(void)int i,x,y,last=1;printf(Input x and y(x*y)n);scanf(%d*%d,&x,&y);for(i=1;i=y;i+)last=last*x%1000;printf(The last 3 digits of %d*%d is:%dn,x,y,last%1000);r

56、eturn 0;題20:#includeint main(void)int a,count=0;for(a=5;a=100;a+=5)+count;if(!(a%25)+count;printf(%d.n,count);return 0;4.3 實驗小結(jié)1.當(dāng)循環(huán)需要每次累加的時候用for循環(huán)更好,否則用while循環(huán)更好。2.當(dāng)循環(huán)體需要先執(zhí)行一時用do-while比用while更好。3do-while循環(huán)在while之后需要加上分號。4. static變量可以多次運(yùn)行,但是只進(jìn)行一次初始化;并且在退出函數(shù)后變量值仍然不改變。5.extern變量可以可以共享其他文件中的變量。6.regist

57、er變量常用在for循環(huán)的循環(huán)變量,使用寄存器變量可以加快速度,但是寄存器數(shù)量有限,所以是否使用寄存器存儲,取決于具體實現(xiàn),5. 調(diào)試程序時需要細(xì)心。5 第四次實驗5.1實驗?zāi)康模?)掌握文件包含、宏定義、條件編譯、assert宏的使用;(2)練習(xí)帶參數(shù)的宏定義、條件編譯的使用;(3)練習(xí)assert宏的使用;(4)使用集成開發(fā)環(huán)境中的調(diào)試功能:單步執(zhí)行、設(shè)置斷點、觀察變量值。5.2實驗內(nèi)容(一) 源程序改錯下面是用宏來計算平方差和交換兩數(shù)的源程序。在這個源程序中,存在若干語法和邏輯錯誤,要求在計算機(jī)上對這個源程序進(jìn)行調(diào)試修改,使之能夠正確完成計算平方差和交換兩數(shù)的任務(wù)。源程序:#includ

58、e#define SUM a+b#define DIF a-b#define SWAP(a,b) a=b,b=avoid main(void) int b, t; printf(Input two integers a, b:); scanf(%d,%d, &a,&b); printf(nSUM=%dn the difference between square of a and square ofbis:%d,SUM, SUM*DIF); SWAP(a,b); Printf(nNow a=%d,b=%dn,a,b); 源程序修改替換下面是用函數(shù)實現(xiàn)求三個數(shù)中最大數(shù)、計算兩數(shù)之和的源程序。在這

59、個源程序中存在若干語法和邏輯錯誤,要求:(1) 對這個例子程序進(jìn)行調(diào)試修改,使之能夠正確完成指定任務(wù)。(2) 用帶參數(shù)的宏替換函數(shù)max,來實現(xiàn)求最大數(shù)的功能。源程序:void main(void) int a, b, c; float d, e; printf(Enter three integers:); scanf(%d,%d,%d,&a,&b,&c); printf(nthe maximum of them is %dn,max(a,b,c);printf(Enter two floating point numbers:);scanf(%f,%f,&d,&e);printf(nthe

60、 sum of them is %fn,sum(d,e);int max(int x, int y, int z) int t; if (xy) t=x; else t=y; if (tz) t=z; return t;float sum(float x, float y) return x+y; 跟蹤調(diào)試下面程序的功能是利用R計算圓的面積s,以及面積s的整數(shù)部分。現(xiàn)要求:(1) 修改程序,使程序編譯通過且能運(yùn)行。(2) 單步執(zhí)行。進(jìn)入函數(shù)decimal_fraction時,watch窗口中x為何值?在返回mai時, watch窗口中i為何值(3) 排除錯誤,使程序能正確輸出面積s值的整數(shù)部分

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論