版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、,C語言實(shí)驗(yàn),第二課,作業(yè)1,按“體指數(shù)BMI值”對身材進(jìn)行劃分: 體指數(shù)t = w / h2 (體重w單位為公斤,身高h(yuǎn)單位為米)當(dāng)t < 18時,為偏低體重;當(dāng)18 ≤ t < 25時,為正常體重;當(dāng)25 < t < 27時,為偏重體重;當(dāng)t ≥ 27時,為肥胖。編程從鍵盤輸入你的身高h(yuǎn)和體重w,根據(jù)給定公式計算體指數(shù)t,然后判斷你的身材屬于何種類型??捎?種方法編程:算法1:
2、用在if子句中嵌入if 語句的形式編程 算法2:用在else子句中嵌入if 語句的形式編程 算法3:用switch語句的形式編程,作業(yè)2,打印九九乘法表,作業(yè)3,譯密碼。為使電文保密,往往按一定規(guī)律將其轉(zhuǎn)換成密碼,收報人再按約定的規(guī)律將其譯回原文。如,按以下規(guī)律將電文變成密碼:將字母A變成字母E,a變成e,即變成其后的第四個字母,W變成A,X變成B,Y變成C,Z變成D。非字母不變。提示:首先提供兩個選擇編碼還是解碼。然后從
3、鍵盤讀取需加密或解密的文字,直到遇到回車為止,需提交的作業(yè),猜數(shù)字的小游戲!?。?猜數(shù)游戲,需求分析電腦隨機(jī)想一個數(shù),四位每一位的取值均在0-9之間。要求首位可以是0。要求四位數(shù)各不相同。用戶從鍵盤輸入一個數(shù),系統(tǒng)進(jìn)行判斷用戶輸入的數(shù)可以直接連寫0863,也可用空格分隔如果輸入的數(shù)數(shù)字正確,位置也正確,則記為A。如果輸入的數(shù)數(shù)字正確,位置不正確,則記為B。判斷的結(jié)果以*A*B顯示。允許用戶多次輸入,直至猜對或大于十次
4、為止,電腦來想,電腦生成隨機(jī)數(shù)的函數(shù)#include 中的rand( )函數(shù)為了每次運(yùn)行生成不同的隨機(jī)數(shù)序列,使用srand(time(NULL))設(shè)置隨機(jī)數(shù)種子每一位取值都在0-9之間a=rand()%10;首位可以為0不能用一個四位的十進(jìn)制整數(shù)來表示。只能用四個一位的十進(jìn)制數(shù)的來表示。四個數(shù)各不相同,do {b=rand()%10;} while(b==a);,b=rand()%10;while(b==a
5、) b=rand()%10;,這里不能有;,我們來猜,用戶輸入的數(shù)可以連寫,也可用空格回車或Tab分隔例如0836或者0 8 6 3均可最好不要強(qiáng)迫用戶每次只輸入 1個數(shù)字 ,或者強(qiáng)迫用戶以逗號分隔輸入。 必須的情況下也應(yīng)在scanf前使用printf語句給出足夠的提示信息。常見的scanf("%d%d%d%d",&guess1,&guess2,&guess3,&
6、amp;guess4);scanf("%d,%d,%d,%d",&guess1,&guess2,&guess3,&guess4);scanf("%d%1s%d%1s%d%1s%d%1s",&e,&f,&g,&h);實(shí)際上我們只需要使用下面這條語句即可scanf("%1d%1d%1d%1d",&gue
7、ss1,&guess2,&guess3,&guess4);,電腦判斷,如果輸入的數(shù)數(shù)字正確,位置也正確,則記為A。如果輸入的數(shù)數(shù)字正確,位置不正確,則記為B。判斷的結(jié)果以*A*B顯示。,if(num1==a) num_of_A++;if(num1==b) num_of_B++;if(num1==c) num_of_B++;if(num1==d) num_of_B++;,if(num1==
8、a) num_of_A++;else if(num1==b) num_of_B++;else if(num1==c) num_of_B++;else if(num1==d) num_of_B++;,if (num1==a) num_of_A++; else if(num1== b|| num1== c||num1== d) num_of_B ++;,,,else if (num1=b||c||d)
9、num_of_B++;,多次猜測,允許用戶多次輸入,直至猜對或大于十次為止使用循環(huán)num_of_A!=4count<10 while(count<10)&&(num_of_A!=4) while((count<10)&&(num_of_A!=4))當(dāng)跳出循環(huán)時,需要判斷是由于何種原因跳出這僅僅是一種解決方案。 while(count<10)循環(huán)中,如果猜正確了就使用
10、break提前跳出循環(huán)也可以達(dá)到一樣的效果。,其他問題,1.良好的代碼可讀性,注釋和縮進(jìn)2.變量的命名規(guī)則3.調(diào)試閱讀編譯錯誤提示雙擊可對編譯錯誤進(jìn)行定位使用printf語句增加額外的輸出,便于查找錯誤大家一起來抓蟲!4.測試,密碼機(jī),選擇加密或解密使用變量flag 1表示加密,2表示解密從鍵盤讀入flag的值從鍵盤讀取明文(用于加密)或密文(用于解密)一串字符進(jìn)行轉(zhuǎn)換字符數(shù)組或getchar( )函數(shù)判斷是否
11、字母,是則進(jìn)行轉(zhuǎn)換(c>='a'&&c='A'&&c<='Z')注意加密時w,x,y,z轉(zhuǎn)換成a,b,c,d;解密時也有類似問題輸出加密或解密后的結(jié)果putchar( )是否繼續(xù)工作?,密碼機(jī)程序的注意問題,選擇加密或解密時,如果用戶輸入的值既不是1也不是2的處理getchar( )函數(shù)的特殊性:會把輸入結(jié)束后的回車當(dāng)成getchar
12、()的輸入。scanf("%d",&flag);putchar(getchar( )+4); 如何解決?,程序示例,if (flag==1) /*用于加密*/{printf("please enter your plaintext and end with enter:\n");c=getchar();while (c!='\n') {
13、 if((c>='a'&&c='A'&&c='w'&&c='W'&&c<='Z'))putchar(c+4-26);else putchar(c); /*非字符直接輸出*/c=getchar();}p
14、utchar('\n');},程序?qū)嵗?else if (flag==2){printf("please enter your crypttext and end with enter:\n");for (c=getchar();c!='\n';c=getchar())if((c>='e'&&c='E'&a
15、mp;&c='a'&&c='a'&&c<'E'))putchar(c-4+26);else putchar(c);putchar('\n');},關(guān)于代碼風(fēng)格問題,縮進(jìn)(indent)—保證代碼整潔、層次清晰的主要手段,int isprime(int n){int k,i;k=sqrt((do
16、uble)n); for (i=2;i<=k;i++){if(n%i==0) return 0;}return 1;},#includemain(){int i;for (i=2;i<100;i++){if(isprime(i))printf("%d\t",i); }},關(guān)于代碼風(fēng)格問題,良好風(fēng)格的程序應(yīng)嚴(yán)格采用梯形層次對應(yīng)好各層次,int isprime(int n){
17、int k, i; k = sqrt((double)n); for (i=2; i<=k; i++) { if (n % i == 0) return 0; } return 1;},#include main(){ int i; for (i=2; i<100; i++) { if
18、(isprime(i)) printf("%d\t",i); }},,程序調(diào)試,程序中常見的出錯原因,編譯錯誤指在編譯過程中發(fā)現(xiàn)的錯誤,通常屬于語法錯誤,即編寫的語句不符合C語言的語法規(guī)則。Undefined symbol ‘xxx’ 標(biāo)識符xxx未定義Expression syntax error 表達(dá)式語法錯誤Too few parameter in call
19、 函數(shù)調(diào)用時的實(shí)參少于函數(shù)的形參,程序中常見的出錯原因,運(yùn)行錯誤指在程序運(yùn)行時發(fā)生的錯誤往往是由于語義上的錯誤造成的,即語句雖然合乎語法,但要求計算機(jī)去做不該做或做不到的事情。例如當(dāng)用0做除數(shù)時,程序中常見的出錯原因,邏輯錯誤程序中有邏輯錯時,不影響程序運(yùn)行并得到運(yùn)行結(jié)果,只是運(yùn)行結(jié)果不正確。比較隱蔽,出錯后不易查找。累加求和運(yùn)算時,累加和變量忘記了賦初值;累乘運(yùn)算時,累乘變量初值賦值為0;函數(shù)聲明時的返回值數(shù)據(jù)類型與實(shí)
20、際返回的數(shù)據(jù)類型不一致,導(dǎo)致自動類型轉(zhuǎn)換數(shù)組下標(biāo)越界(即超出了定義的范圍);程序中存在死循環(huán);,調(diào)試的基本方法,細(xì)心+耐心注釋掉一些代碼減少有關(guān)的代碼區(qū)域,調(diào)試無誤后再將它們?nèi)∠⑨?,即采用分而治之的策略將問題局部化 利用printf語句觀看屏幕輸出結(jié)果利用調(diào)試工具逐條語句跟蹤,常見錯誤,關(guān)系運(yùn)算符== 錯寫成賦值運(yùn)算符=if (a = b) printf("yes"); /*運(yùn)行結(jié)果錯誤*/Wa
21、rning:Possibly incorrect assignment in function mainif (a == b) printf("yes"); /*正確*/= 表示賦值操作== 表示比較是否相等的操作,常見錯誤,while后面有分號while (n < 100);{ …… n++;}循環(huán)體為空語句,導(dǎo)致死循環(huán)for后的表達(dá)式2省略for (n=1; ;n++)
22、 /*死循環(huán)*/,常見錯誤,判斷字符是大寫字符或者小寫字符('a' ='a'&&ch='A'&&ch= '0' && ch <= '9' /*正確*/,常見錯誤,數(shù)據(jù)類型由高向低賦值時,進(jìn)行類型轉(zhuǎn)換后導(dǎo)致信息丟失double a, b;int sum;sum = a + b;warni
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代碼整潔之道
- 《我很整潔》
- 我們愛整潔教案--【教學(xué)參考】
- 《我們愛整潔》教學(xué)設(shè)計
- 干凈整潔的學(xué)習(xí)環(huán)境
- 提高病房整潔度度品管圈
- 廚師的整潔 他人的健康
- 睢周堂鎮(zhèn)美麗鄉(xiāng)村整潔村鎮(zhèn)
- 整潔綠化工程項目招標(biāo)文件
- 如何讓你亂糟糟的書桌保持整潔
- 整潔為形象增美 有序?yàn)獒t(yī)療提效
- 打造整潔校園的工作計劃范文
- 保證合保證合同和exoe保證方式
- 提升小面額紙幣整潔度的難點(diǎn)及對策
- 托福高分范文:房間整潔的學(xué)生更容易成功
- f5021故障代碼代碼
- 丁宅鄉(xiāng)整潔田園美麗農(nóng)業(yè)工程
- 丁宅鄉(xiāng)整潔田園美麗農(nóng)業(yè)工程
- 村容整潔及綠色村莊工作總結(jié)范文
- 流通人民幣整潔度測算研究
評論
0/150
提交評論