C語言程序設(shè)計實驗教案.doc
高級語言程序設(shè)計實驗指導(dǎo)書 實驗一 順序結(jié)構(gòu)程序設(shè)計一、實驗?zāi)康募耙?. 掌握C語言中使用最多的一種語句賦值語句的使用方法。2. 掌握各種類型數(shù)據(jù)的輸入輸出的方法,能正確使用各種格式轉(zhuǎn)換符。二、實驗學(xué)時4學(xué)時三、實驗任務(wù)1.以下程序多處有錯。要按下面指定的形式輸入數(shù)據(jù)和輸出數(shù)據(jù)時,請對該程序做相應(yīng)的修改。#include void main ( ) double a,b,c,s,v; printf(input a,b,c:n); scanf(%d%d%d,a,b,c);s=a*b;v=a*b*c;printf(%d %d %d,a,b,c);printf(s=%fn,s,v=%dn,v);當程序執(zhí)行時,屏幕的顯示和要求輸入形式如下:input a,b,c:1.0 2.0 3.0 此處的1.0 2.0 3.0是用戶輸入的數(shù)據(jù)a=1.000000 b=2.000000,c=3.000000 此處是要求的輸出格式s=2.000000,v=6.000000相關(guān)知識: 檢查程序錯誤時應(yīng)注意幾點:a)有時程序中一個錯誤會引發(fā)一系列錯誤信息,工作中不應(yīng)被這種情況所迷惑,改正了一些錯誤后應(yīng)及時對源程序重新進行編譯;b)如果修改錯誤時增刪了行,或是一個行里有多個錯誤,更正前面錯誤時增刪了字符,就可能導(dǎo)致系統(tǒng)對錯誤定位不準,此時應(yīng)該重新編譯;c)系統(tǒng)給出的警告信息一般都說明程序中有問題,因為系統(tǒng)發(fā)現(xiàn)了可疑情況。對于警告信息同樣要逐個仔細分析。除非明確認定不是問題,否則絕不能簡單地認為不是錯誤而不予理睬。實際上,很多警告都是因為程序中確實有嚴重的隱含錯誤。d) 在連接中發(fā)現(xiàn)新錯誤也需要仔細檢查和修改程序。連接時發(fā)現(xiàn)的錯誤一般是由于函數(shù)名或外部變量名字寫錯,或者一些函數(shù)、外部變量沒有定義引起的。系統(tǒng)不能對連接錯誤給以自動定位,只能提供有關(guān)的名字信息等。對于這類問題,可以借助編輯器的字符串查找命令進行定位。 正確調(diào)用scanf函數(shù)和printf函數(shù)構(gòu)成輸入和輸出語句。2.有以下程序 #include void main() char c1,c2; int n1,n2; c1=getchar();c2=getchar();n1=c1-0;n2= n1*10+(c2-0); printf(%dn,n2);程序運行時輸入:12,執(zhí)行后輸出結(jié)果是什么?相關(guān)知識:getchar()函數(shù)用來輸入兩個字符分別賦給變量c1和c2;n1=c1-0相當于n1=1 -0,字符1的ASCII碼值比0大一,所以n1中的值為1,c2-0相當于2 -0;把字符串轉(zhuǎn)換為多位數(shù)的算法。3.若有以下程序#include void main() int i,j; int x,y; scanf(i=%d,j=%d,&i,&j); scanf(%d%d,&x,&y); printf(i=%d,j=%dn,i,j); printf(%4d%4dn,x,y);要求給i賦值為10,j賦值為20,則應(yīng)該怎樣從鍵盤輸入數(shù)字?相關(guān)知識:在調(diào)用scanf()函數(shù)時在格式串中若包含有格式描述符之外的字符時,則要求在輸入數(shù)據(jù)時在對應(yīng)的位置上輸入完全匹配的字符;scanf()函數(shù)只包含格式描述符時可用跳格鍵Tab、空格和回車分隔數(shù)據(jù);在調(diào)用printf ()函數(shù)時在格式串中若包含有格式描述符之外的字符時,則在輸出數(shù)據(jù)時在對應(yīng)的位置上輸出完全匹配的字符,%d之類的格式符位置輸出對應(yīng)輸出項的值;故輸出時要注意插入適當?shù)姆歉袷椒员銋^(qū)分各個輸出結(jié)果。4. 計算定期存款本利之和設(shè)銀行定期存款的年利率rate為2.25%,并已知存款期為n年,存款本金為capital元,試編程計算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本金capital均由鍵盤輸入。四、實驗重點、難點1. 符數(shù)據(jù)輸入輸出函數(shù)2. 格式輸入輸出函數(shù)五、操作要點按Alt+R可進入Run菜單, 其中Run:運行由Project/Project name項指定的文件名或當前編輯區(qū)的文件。如果對上次編譯后的源代碼未做過修改, 則直接運行到下一個斷點(沒有斷點則運行到結(jié)束)。否則先進行編譯、連接后才運行, 其熱鍵為Ctrl+F9。User screen:顯示程序運行時在屏幕上顯示的結(jié)果。其熱鍵為Alt+F5。六、注意事項1. 輸入輸出的數(shù)據(jù)類型與所用格式說明符不一致2. 輸入變量時忘記使用地址符號實驗二 邏輯結(jié)構(gòu)程序設(shè)計一、實驗?zāi)康募耙?. 了解C語言表示邏輯量的方法(以0代表“假”,以非代表“真” )。2. 學(xué)會正確使用邏輯運算符和邏輯表達。3. 熟練掌握if語句和switch語句.4. 學(xué)習(xí)調(diào)試程序。二、實驗學(xué)時6學(xué)時三、實驗任務(wù)1 源程序中包含有一些錯誤,調(diào)試下列程序,使之具有如下功能:輸入a、b、c三個整數(shù),求最小值。# include “stdio.h” void main( )int a,b,c;scanf(%d%d%d,a,b,c);if(ab)&(ac)if(bc)printf(min=%dn,b);else printf(min=%dn,c);if(ab)&(ac)printf(min=%dn,a);再次運行程序,輸入為“2,1,3”,程序輸出卻是“min=2”。用單步執(zhí)行的方法,馬上發(fā)現(xiàn)變量a、b、c的值是不對的,原因是程序要求輸入數(shù)據(jù)的分隔符是空格(還允許使用回車或鍵)。改正輸入數(shù)據(jù)的分隔方式后,程序沒有輸出,還是用單步執(zhí)行的方法,監(jiān)視程序的執(zhí)行過程,發(fā)現(xiàn)程序中條件設(shè)計有誤,經(jīng)過改正的程序如下: # include “stdio.h” void main() int a,b,c; scanf(%d%d%d,&a,&b,&c); if(ab)&(ac) printf(min=%dn,a) else if(ba)&(bc) printf(min=%dn,b); else if(ca)&(cb) printf(min=%dn,c); else printf(No find minimumn); 上述程序是按在三個數(shù)中僅有一個最小值時才稱其為最小值進行設(shè)計的。另外,注意程序的書寫格式,一定要采用縮進格式,即不同層次(分支)的語句左起的空格不同,這樣可以有效地提高程序的可讀性。相關(guān)知識:類似abc表達式的表示方法;if語句的嵌套;調(diào)試工具的使用。求最值的簡單算法。2.參考上一題,編寫一個C程序,求a、b、c、d四個數(shù)中的最大者。編程點撥:多定義一個變量,并一開始令變量max=a;if(maxb) max=b;其余多個數(shù)據(jù)中求最值依此類推。3.輸入4個整數(shù),要求按由小到大順序輸出。得到正確結(jié)果后,修改程序使之按由大到小順序輸出。相關(guān)知識:輸入函數(shù)scanf()的使用;簡單的排序算法;通過中間變量t交換a和b值的方法:t=a; a=b; b=t;。4.根據(jù)以下函數(shù)關(guān)系,對輸入的每個x值,計算出相應(yīng)的y值。當x取其他值時#include #include void main() float x,y; scanf(%f,&x); if ( ) y= ; else if( )y= ; else printf(x=%f,y=%f,x,y); 相關(guān)知識點:if語句的嵌套;數(shù)學(xué)函數(shù)的調(diào)用方式。5模仿第4題,寫程序?qū)崿F(xiàn)以下函數(shù): 用scanf函數(shù)輸入x的值,求y值。運行程序,輸入x的值(分別為x1、1x10、x10三種情況),檢查輸出的y值是否正確。相關(guān)知識:用if的嵌套實現(xiàn)分段函數(shù);比較運算符的正確使用;算術(shù)運算符*的正確使用。6.閱讀分析以下程序的功能。#include void main( )int choice;int value;printf(Convert:n); /* 顯示菜單 */printf( 1:decimal to hexadecimaln );printf( 2:hexadecimal to decimaln );printf( 3:decimal to octaln ); printf( 4:octal to decimaln);printf(enter your choice: );scanf(%d,&choice);switch (choice) case 1: /* 選中1時處理 */printf(enter decimal value:);scanf(%d,&value);printf(%d in hexadecimal is:%xn,value,value);break;case 2: /* 選中2時處理 */printf(enter hexadecimal value:);scanf(%x,&value);printf(%x in decimal is:%dn,value,value);break;case 3: /* 選中3時處理 */printf(enter decimal value:);scanf(%d,&value);printf(%d in octal is:%on,value,value);break;case 4: /* 選中4時處理 */printf(enter octal value:);scanf(%o,&value);printf(%o in decimal is:%dn,value,value);break; 相關(guān)知識:用switch語句實現(xiàn)菜單的方法;數(shù)制轉(zhuǎn)換的方法。7. 模仿第6題,要求對輸入的數(shù)字17轉(zhuǎn)換成文字星期幾,對其它數(shù)字不轉(zhuǎn)換。例如,輸入5時,程序應(yīng)該輸出Friday。 編輯、調(diào)試和運行該程序,然后輸入4。其輸出結(jié)果是什么?為什么是這樣的結(jié)果? 該程序有哪些錯誤?如何修改?相關(guān)知識:switch語句的正確使用;break在switch語句中的作用。四、實驗重點、難點1. 表達式2. 選擇型程序設(shè)計語句3. 邏輯表達式五、操作要點按Alt+C可進入Compile菜單, Build all:重新編譯項目里的所有文件, 并進行裝配生成.EXE文件。該命令不作過時檢查。六、注意事項1. 誤把“=”作為關(guān)系運算符“等于”2. 沒有注意大寫字母和小寫字母代表不同的標識符3. 當一個復(fù)合語句中使用多層括號時,常出現(xiàn)大括號不配對的現(xiàn)象。實驗三 循環(huán)控制一、實驗?zāi)康募耙?. 熟悉掌握用語句,語句和語句實現(xiàn)循環(huán)的方法。2. 掌握在程序設(shè)計中用循環(huán)的方法實現(xiàn)一些常用算法(如窮舉、迭代、遞推等)。二、實驗學(xué)時6學(xué)時三、實驗任務(wù)1. 下面程序求1+100,填空,實現(xiàn)該功能。#include void main()int s,i;s=0; /* 第5行 */for( )s=s+i;printf(1+.+100=%dn,s);思考:(1)第5行能不能去掉?其作用是什么?(2)不用for語句,用while語句改寫該程序,實現(xiàn)同樣的功能。2. 比較下列兩個程序。(驗證)#include void main() int i,n,sum=0;scanf(%d,&i);n=i;while(i=10) sum+=i;i+;printf(%d+.+10=%d,n,sum);#include void main() int i,n,sum=0;scanf(%d,&i);n=i;do sum+=i;i+; while(i=10);printf(%d+.+10=%d,n,sum);分別運行這兩題,若輸入7,這兩個程序的結(jié)果分別是多少?若輸入12,這兩個程序的結(jié)果又分別是多少?比較為什么會有這樣的區(qū)別?3. 預(yù)習(xí)下面程序,若輸入12345,分析輸出結(jié)果是多少?上機驗證。#include void main( ) long data; scanf(%ld,&data); while(data) printf(%ld,data%10); data=data/10; 4. 下面程序?qū)崿F(xiàn)求Fibonacci數(shù)列的前n個數(shù)。(驗證、調(diào)試)運行程序,寫出運行結(jié)果;采用單步跟蹤技術(shù)運行該程序,觀察一下變量的變化。#include void main( ) long int f1, f2; int i,n; printf(Input n:); /* 第5行 */ scanf(%d,&n); /* 第6行 */f1=f2=1;for(i=1;in;i+) printf(%ldt%ldn,f1,f2); /* 第9行 */f1=f1+f2;f2=f2+f1; 思考:(1)f1、f2這兩個變量為什么定義為long int 型?(2)第5行和第6行的相互作用,你會用這種方式來實現(xiàn)輸入嗎?(3)注意第9行的輸出“%ld”中的“1”是字母“L”的小寫形式,不是數(shù)字1。5. 預(yù)習(xí)下面程序,寫出預(yù)習(xí)結(jié)果并上機驗證。(驗證)#include void main( ) int i,j,x;for(i=0,x=0;i2;i+) x+;for(j=0;j3;j+) if(j%2) continue;x+;x+; printf(x=%dn, x); 思考:用一句話概括if(j%2)語句的作用。相關(guān)知識:嵌套for循環(huán)的執(zhí)行過程及continue語句的作用。6.下面程序輸入一批考試分數(shù),用-1作為結(jié)束標志,若輸入大于100分,則提示重新輸入,然后計算最高分、最低分與平均分。請調(diào)試、檢查程序中的錯誤,并改正之。#include void main( ) int mark; int n=0 ; sum=0 ; int max=100 ; min=0 ; for ( ; ; ) ; scanf(%d, &mark); if ( mark 100 ) printf( Mark 100 , Please reinput n ); break; if ( mark=-1) break; n + ; sum=sum + mark ; if( mark max ) max = mark ; if( mark min ) min = mark ; sum=sum/ n ; printf(max =%d , min = %d, aver = %d n, max , min , sum); 提示:該程序有很多錯誤,下面給出某些錯誤的說明。當求一批數(shù)中的最大值時,若已知一批數(shù)的最小值,則將這個最小值作為最大值的初始值;當求最小值時,情況相反,即若已知這批數(shù)的最大值,則將這個最大值作為最小值的初始值。本例中求一批分數(shù)的最高分,則最高分的初始值應(yīng)該設(shè)為0,然后在程序循環(huán)中逐漸地升高,直至求出最高分;本例中還要求這批分數(shù)的最低分,則最低分的初始值設(shè)為100,然后在程序循環(huán)中逐漸地降低,直至求出最小值。實現(xiàn)“若輸入大于100分,則提示重新輸入”功能的語句有錯;實現(xiàn)“用-1作為結(jié)束標志”功能的語句有錯。思考:(1)“一批數(shù)據(jù)”是幾個數(shù)據(jù)?輸入的數(shù)據(jù)如何結(jié)束?程序中哪一行是實現(xiàn)結(jié)束這個要求的,寫出該語句。(2)程序中哪個語句是實現(xiàn)”若輸入大于100分,則提示重新輸入”這個要求的,寫出該語句。(3)寫出您的測試數(shù)據(jù)及運行結(jié)果,注意輸入的數(shù)據(jù)序列中最后一個應(yīng)是-1。7.編程:輸入20個190的整數(shù),分類統(tǒng)計130、3160、6190的數(shù)各有多少個? 編程點撥:(1) count1計130的個數(shù),count2計3160的個數(shù),count3計6190的個數(shù)。(2) 用for循環(huán)20次實現(xiàn)該程序的功能:輸入一個整數(shù)x,判斷該數(shù)所在的范圍,若x是130,則count1加1;若x是3160,則count2加1;若x是6190,則count3加1。 (3) 最后,輸出統(tǒng)計的結(jié)果。#include void main( ) int count1=0,count2=0,count3=0;int i,x;printf(“Please input 20 numbers:”);for(i=0;i20;i+) scanf(“%d”,&x); /*補充完成程序*/* 輸出統(tǒng)計結(jié)果 */補充完成該程序。8.編程:素數(shù)是除了1和其本身以外,不能被其他自然數(shù)整除的自然數(shù)。從鍵盤輸入一個數(shù),判斷該數(shù)是不是素數(shù)? 編程點撥:a) 輸入這個數(shù)x。b) 用for循環(huán)2x-1,用2x-1的每一個數(shù)去除x,若有一個數(shù)整除x,則說明x不是素數(shù);否則,x就是素數(shù)。c) 最后,將判斷結(jié)果輸出。#include void main( ) int i, x;printf(Enter one natural integer: );scanf(%d ,&x);for(i=2;ix-1;i+) /*補充完成該程序*/思考:其實,只需要判斷2之間的整數(shù)能否整除x就可以判斷x是否為素數(shù),此時,如何修改程序?9.編程:顯示所有的水仙花數(shù)。謂水仙花數(shù),是指一個3位數(shù),其各位數(shù)字立方和等于該數(shù)字本身。例,153是水仙花數(shù),因為153=13+53+33 。有兩種解題思路,選擇其中之一編程實現(xiàn): (1) 利用三重循環(huán),將這三個數(shù)通過一定的運算符連接成一個3位數(shù),然后判斷是否是水仙花數(shù)。for(i=1;i=9;i+) for(j=0;j=9;j+)for(k=0;k=9;k+) 注意,因水仙花是一個三位數(shù),百位i是從1開始,不能從0開始,十位j和個數(shù)位k可以從0開始。(2) 利用一個循環(huán),對100999范圍內(nèi)的每個3位數(shù)逐位分離后進行判斷。for(i=100;i999;i+) a=i/100; b=(i-a*100)/10; c=i%10;*10.編程:輸出下列圖形。 分析:這是由星號構(gòu)成的5行5列的三角形圖形。每一行的星號數(shù)量為:1、3、5、7、9。考慮兩點,一是每一行上星號的生成規(guī)則,二是每一行第一個星號字符的輸出位置。每一行的星號與行號有關(guān),即2*i+1,其中i是行號;每一行的輸出位置比上一行少一個空格,可以這樣實現(xiàn):for(j=1;j=40-i;j+) printf(“%c”, ),其中i是行號。四、實驗重點、難點1. 循環(huán)語句2. 循環(huán)的嵌套3. break和continue語句五、操作要點Run菜單中Go to cursor::調(diào)試程序時使用, 選擇該項可使程序運行到光標所在行。光標所在行必須為一條可執(zhí)行語句, 否則提示錯誤。其熱鍵為F4。Trace into:在執(zhí)行一條調(diào)用其它用戶定義的子函數(shù)時, 若用Trace into項, 則執(zhí)行長條將跟蹤到該子函數(shù)內(nèi)部去執(zhí)行, 其熱鍵為F7。六、注意事項1. 對應(yīng)該有花
編號:42380173
類型:共享資源
大?。?span id="0cp2ewb" class="font-tahoma">220.50KB
格式:DOC
上傳時間:2023-08-29
20
積分
積分
- 關(guān) 鍵 詞:
- 語言程序設(shè)計 實驗 教案
- 資源描述:
-
《高級語言程序設(shè)計》 實驗指導(dǎo)書 實驗一 順序結(jié)構(gòu)程序設(shè)計 一、實驗?zāi)康募耙? 1. 掌握C語言中使用最多的一種語句——賦值語句的使用方法。 2. 掌握各種類型數(shù)據(jù)的輸入輸出的方法,能正確使用各種格式轉(zhuǎn)換符。 二、實驗學(xué)時 4學(xué)時 三、實驗任務(wù) 1.以下程序多處有錯。要按下面指定的形式輸入數(shù)據(jù)和輸出數(shù)據(jù)時,請對該程序做相應(yīng)的修改。 #include
void main ( ) { double a,b,c,s,v; printf(input a,b,c:\n); scanf("%d%d%d",a,b,c); s=a*b; v=a*b*c; printf("%d %d %d",a,b,c); printf("s=%f\n",s,"v=%d\n",v); } 當程序執(zhí)行時,屏幕的顯示和要求輸入形式如下: input a,b,c:1.0 2.0 3.0 à此處的1.0 2.0 3.0是用戶輸入的數(shù)據(jù) a=1.000000 b=2.000000,c=3.000000 à此處是要求的輸出格式 s=2.000000,v=6.000000 相關(guān)知識:① 檢查程序錯誤時應(yīng)注意幾點: a)有時程序中一個錯誤會引發(fā)一系列錯誤信息,工作中不應(yīng)被這種情況所迷惑,改正了一些錯誤后應(yīng)及時對源程序重新進行編譯; b)如果修改錯誤時增刪了行,或是一個行里有多個錯誤,更正前面錯誤時增刪了字符,就可能導(dǎo)致系統(tǒng)對錯誤定位不準,此時應(yīng)該重新編譯; c)系統(tǒng)給出的警告信息一般都說明程序中有問題,因為系統(tǒng)發(fā)現(xiàn)了可疑情況。對于警告信息同樣要逐個仔細分析。除非明確認定不是問題,否則絕不能簡單地認為不是錯誤而不予理睬。實際上,很多警告都是因為程序中確實有嚴重的隱含錯誤。 d) 在連接中發(fā)現(xiàn)新錯誤也需要仔細檢查和修改程序。連接時發(fā)現(xiàn)的錯誤一般是由于函數(shù)名或外部變量名字寫錯,或者一些函數(shù)、外部變量沒有定義引起的。系統(tǒng)不能對連接錯誤給以自動定位,只能提供有關(guān)的名字信息等。對于這類問題,可以借助編輯器的字符串查找命令進行定位。 ② 正確調(diào)用scanf函數(shù)和printf函數(shù)構(gòu)成輸入和輸出語句。 2.有以下程序 #include void main() { char c1,c2; int n1,n2; c1=getchar(); c2=getchar(); n1=c1-'0';n2= n1*10+(c2-'0'); printf("%d\n",n2); } 程序運行時輸入:12<回車>,執(zhí)行后輸出結(jié)果是什么? 相關(guān)知識:①getchar()函數(shù)用來輸入兩個字符分別賦給變量c1和c2; ②n1=c1-'0'相當于n1='1' -'0',字符1的ASCII碼值比0大一,所以n1中的值為1,c2-'0'相當于'2' -'0'; ③把字符串轉(zhuǎn)換為多位數(shù)的算法。 3.若有以下程序 #include void main() { int i,j; int x,y; scanf("i=%d,j=%d",&i,&j); scanf("%d%d",&x,&y); printf("i=%d,j=%d\n",i,j); printf("%4d%4d\n",x,y); } 要求給i賦值為10,j賦值為20,則應(yīng)該怎樣從鍵盤輸入數(shù)字? 相關(guān)知識:①在調(diào)用scanf()函數(shù)時在格式串中若包含有格式描述符之外的字符時,則要求在輸入數(shù)據(jù)時在對應(yīng)的位置上輸入完全匹配的字符; ②scanf()函數(shù)只包含格式描述符時可用跳格鍵Tab、空格和回車分隔數(shù)據(jù); ③在調(diào)用printf ()函數(shù)時在格式串中若包含有格式描述符之外的字符時,則在輸出數(shù)據(jù)時在對應(yīng)的位置上輸出完全匹配的字符,%d之類的格式符位置輸出對應(yīng)輸出項的值;故輸出時要注意插入適當?shù)姆歉袷椒员銋^(qū)分各個輸出結(jié)果。 4. 計算定期存款本利之和 設(shè)銀行定期存款的年利率rate為2.25%,并已知存款期為n年,存款本金為capital元,試編程計算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本金capital均由鍵盤輸入。 四、實驗重點、難點 1. 符數(shù)據(jù)輸入輸出函數(shù) 2. 格式輸入輸出函數(shù) 五、操作要點 按Alt+R可進入Run菜單, 其中Run:運行由Project/Project name項指定的文件名或當前編輯區(qū)的文件。如果對上次編譯后的源代碼未做過修改, 則直接運行到下一個斷點(沒有斷點則運行到結(jié)束)。否則先進行編譯、連接后才運行, 其熱鍵為Ctrl+F9。User screen:顯示程序運行時在屏幕上顯示的結(jié)果。其熱鍵為Alt+F5。 六、注意事項 1. 輸入輸出的數(shù)據(jù)類型與所用格式說明符不一致 2. 輸入變量時忘記使用地址符號 實驗二 邏輯結(jié)構(gòu)程序設(shè)計 一、實驗?zāi)康募耙? 1. 了解C語言表示邏輯量的方法(以0代表“假”,以非代表“真” )。 2. 學(xué)會正確使用邏輯運算符和邏輯表達。 3. 熟練掌握if語句和switch語句. 4. 學(xué)習(xí)調(diào)試程序。 二、實驗學(xué)時 6學(xué)時 三、實驗任務(wù) 1 源程序中包含有一些錯誤,調(diào)試下列程序,使之具有如下功能:輸入a、b、c三個整數(shù),求最小值。 # include “stdio.h” void main( ) ???????????{?int a,b,c; ?????????????scanf("%d%d%d",a,b,c); ?????????????if((a>b)&&(a>c)) ???????????????if(b 鍵)。改正輸入數(shù)據(jù)的分隔方式后,程序沒有輸出,還是用單步執(zhí)行的方法,監(jiān)視程序的執(zhí)行過程,發(fā)現(xiàn)程序中條件設(shè)計有誤,經(jīng)過改正的程序如下: ??? # include “stdio.h” void main() ??? { int a,b,c; ????? scanf("%d%d%d",&a,&b,&c); ????? if((a void main( ) { int choice; int value; printf("Convert:\n"); /* 顯示菜單 */ printf(" 1:decimal to hexadecimal\n "); printf(" 2:hexadecimal to decimal\n "); printf(" 3:decimal to octal\n "); printf(" 4:octal to decimal\n"); printf("enter your choice: "); scanf("%d",&choice); switch (choice) { case 1: /* 選中1時處理 */ printf("enter decimal value:"); scanf("%d",&value); printf("%d in hexadecimal is:%x\n",value,value); break; case 2: /* 選中2時處理 */ printf("enter hexadecimal value:"); scanf("%x",&value); printf("%x in decimal is:%d\n",value,value); break; case 3: /* 選中3時處理 */ printf("enter decimal value:"); scanf("%d",&value); printf("%d in octal is:%o\n",value,value); break; case 4: /* 選中4時處理 */ printf("enter octal value:"); scanf("%o",&value); printf("%o in decimal is:%d\n",value,value); break; } } 相關(guān)知識:①用switch語句實現(xiàn)菜單的方法;②數(shù)制轉(zhuǎn)換的方法。 7. 模仿第6題,要求對輸入的數(shù)字1~7轉(zhuǎn)換成文字星期幾,對其它數(shù)字不轉(zhuǎn)換。例如,輸入5時,程序應(yīng)該輸出Friday。 ① 編輯、調(diào)試和運行該程序,然后輸入4。其輸出結(jié)果是什么?為什么是這樣的結(jié)果? ② 該程序有哪些錯誤?如何修改? 相關(guān)知識:①switch語句的正確使用;②break在switch語句中的作用。 四、實驗重點、難點 1. 表達式 2. 選擇型程序設(shè)計語句 3. 邏輯表達式 五、操作要點 按Alt+C可進入Compile菜單, Build all:重新編譯項目里的所有文件, 并進行裝配生成.EXE文件。該命令不作過時檢查?。 六、注意事項 1. 誤把“=”作為關(guān)系運算符“等于” 2. 沒有注意大寫字母和小寫字母代表不同的標識符 3. 當一個復(fù)合語句中使用多層括號時,常出現(xiàn)大括號不配對的現(xiàn)象。 實驗三 循環(huán)控制 一、實驗?zāi)康募耙? 1. 熟悉掌握用語句,語句和語句實現(xiàn)循環(huán)的方法。 2. 掌握在程序設(shè)計中用循環(huán)的方法實現(xiàn)一些常用算法(如窮舉、迭代、遞推等)。 二、實驗學(xué)時 6學(xué)時 三、實驗任務(wù) 1. 下面程序求1+…+100,填空,實現(xiàn)該功能。 #include void main() { int s,i; s=0; /* 第5行 */ for( ) s=s+i; printf("1+...+100=%d\n",s); } 思考:(1)第5行能不能去掉?其作用是什么? (2)不用for語句,用while語句改寫該程序,實現(xiàn)同樣的功能。 2. 比較下列兩個程序。(驗證) #include void main() { int i,n,sum=0; scanf("%d",&i); n=i; while(i<=10) { sum+=i; i++; } printf("%d+...+10=%d",n,sum); } #include void main() { int i,n,sum=0; scanf("%d",&i); n=i; do { sum+=i; i++; } while(i<=10); printf("%d+...+10=%d",n,sum); } 分別運行這兩題,若輸入7,這兩個程序的結(jié)果分別是多少?若輸入12,這兩個程序的結(jié)果又分別是多少?比較為什么會有這樣的區(qū)別? 3. 預(yù)習(xí)下面程序,若輸入12345,分析輸出結(jié)果是多少?上機驗證。 #include void main( ) { long data; scanf("%ld",&data); while(data) { printf("%ld,",data%10); data=data/10; } } 4. 下面程序?qū)崿F(xiàn)求Fibonacci數(shù)列的前n個數(shù)。(驗證、調(diào)試) 運行程序,寫出運行結(jié)果;采用單步跟蹤技術(shù)運行該程序,觀察一下變量的變化。 #include void main( ) { long int f1, f2; int i,n; printf("Input n:"); /* 第5行 */ scanf("%d",&n); /* 第6行 */ f1=f2=1; for(i=1;i void main( ) { int i,j,x; for(i=0,x=0;i<2;i++) { x++; for(j=0;j<3;j++) { if(j%2) continue; x++; } x++; } printf("x=%d\n", x); } 思考:用一句話概括if(j%2)語句的作用。 相關(guān)知識:嵌套for循環(huán)的執(zhí)行過程及continue語句的作用。 6.下面程序輸入一批考試分數(shù),用-1作為結(jié)束標志,若輸入大于100分,則提示重新輸入,然后計算最高分、最低分與平均分。請調(diào)試、檢查程序中的錯誤,并改正之。 #include void main( ) { int mark; int n=0 ; sum=0 ; int max=100 ; min=0 ; for ( ; ; ) ; { scanf("%d", &mark); if ( mark > 100 ) { printf(" Mark > 100 , Please reinput \n "); break; } if ( mark=-1) break; n ++ ; sum=sum + mark ; if( mark > max ) max = mark ; if( mark < min ) min = mark ; } sum=sum/ n ; printf("max =%d , min = %d, aver = %d \n", max , min , sum); } 提示:該程序有很多錯誤,下面給出某些錯誤的說明。當求一批數(shù)中的最大值時,若已知一批數(shù)的最小值,則將這個最小值作為最大值的初始值;當求最小值時,情況相反,即若已知這批數(shù)的最大值,則將這個最大值作為最小值的初始值。本例中求一批分數(shù)的最高分,則最高分的初始值應(yīng)該設(shè)為0,然后在程序循環(huán)中逐漸地升高,直至求出最高分;本例中還要求這批分數(shù)的最低分,則最低分的初始值設(shè)為100,然后在程序循環(huán)中逐漸地降低,直至求出最小值。實現(xiàn)“若輸入大于100分,則提示重新輸入”功能的語句有錯;實現(xiàn)“用-1作為結(jié)束標志”功能的語句有錯。 思考:(1)“一批數(shù)據(jù)”是幾個數(shù)據(jù)?輸入的數(shù)據(jù)如何結(jié)束?程序中哪一行是實現(xiàn)結(jié)束這個要求的,寫出該語句。 (2)程序中哪個語句是實現(xiàn)”若輸入大于100分,則提示重新輸入”這個要求的,寫出該語句。 (3)寫出您的測試數(shù)據(jù)及運行結(jié)果,注意輸入的數(shù)據(jù)序列中最后一個應(yīng)是-1。 7.編程:輸入20個1~90的整數(shù),分類統(tǒng)計1~30、31~60、61~90的數(shù)各有多少個? 編程點撥: (1) count1計1~30的個數(shù),count2計31~60的個數(shù),count3計61~90的個數(shù)。 (2) 用for循環(huán)20次實現(xiàn)該程序的功能:輸入一個整數(shù)x,判斷該數(shù)所在的范圍,若x是1~30,則count1加1;若x是31~60,則count2加1;若x是61~90,則count3加1。 (3) 最后,輸出統(tǒng)計的結(jié)果。 #include void main( ) { int count1=0,count2=0,count3=0; int i,x; printf(“Please input 20 numbers:”); for(i=0;i<20;i++) { scanf(“%d”,&x); ……… /*補充完成程序*/ } /* 輸出統(tǒng)計結(jié)果 */ …………… } 補充完成該程序。 8.編程:素數(shù)是除了1和其本身以外,不能被其他自然數(shù)整除的自然數(shù)。從鍵盤輸入一個數(shù),判斷該數(shù)是不是素數(shù)? 編程點撥: a) 輸入這個數(shù)x。 b) 用for循環(huán)2~x-1,用2~x-1的每一個數(shù)去除x,若有一個數(shù)整除x,則說明x不是素數(shù);否則,x就是素數(shù)。 c) 最后,將判斷結(jié)果輸出。 #include void main( ) { int i, x; printf("Enter one natural integer: "); scanf("%d ",&x); for(i=2;i 展開閱讀全文匯文網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請勿作他用。關(guān)于本文