一、if語句的應用學習
二、switch/case語句的應用spa
三、switch/case語句嵌套if語句的應用code
四、switch/case語句的嵌套應用blog
五、分析程序數學
姓名:徐溢璠 實驗地點:教學樓514教室 實驗時間:2019年4月3日it
掌握C語言邏輯運算和關係運算的規則;io
學會正確地使用關係表達式和邏輯表達式;class
掌握if-else語句的使用方法。效率
掌握算術運算符和運算規則 ;變量
掌握switch/case語句的使用方法
學會正確的使用關係表達式和邏輯表達式;
掌握switch/case 語句語法和使用方法。注意switch語句的控制流程,在switch語句中的break語句的用法;
switch/case結構與if/else嵌套結構之間的轉換。
四、switch/case語句的嵌套應用
switch/case結構的嵌套使用。
break語句與continue語句的用法。
運行下列程序,分析輸出的結果,並寫入實驗報告中。
運行下列程序,分析錯誤的緣由,請修改程序,使其輸出正確的結果,並寫入實驗報告,掌握C語言表達式與數學表達式的區別。
一、實驗練習:4.3.1 if語句的應用
讀入3個分別表示箱子長、寬、高的整數值,判斷並輸出該箱子是正方體仍是長方體。
#include<stdio.h> int main() { int l,w,h; printf("請輸入箱子的長、寬、高:\n"); scanf("%d%d%d",&l,&w,&h); if((l==w)&&(w==h)&&(l==h)) printf("該箱子是正方體。\n"); else printf("該箱子是長方體。\n"); }
問題:第一次輸出的答案始終是「該箱子是正方體「。
解決辦法:將」if((l=w)&&(w=h)&&(l=h))「改成「if((l==w)&&(w==h)&&(l==h))」
緣由:一個「=」 叫 「賦值」,兩個「==」叫 「恆等於"。
編一程序實現以下功能:商店有打印紙(18元/本)、墨盒(132元/盒)、光盤(4.5元/片)出售,商店進行優惠酬賓活動。具體作法以下:顧客購買商品的總額達到100元,優惠5%;達到200元以上,優惠6%;達到300元以上,優惠7%;達到了400元以上,優惠8%;達到1000元以上,優惠10%。根據不一樣的購買量,打印應付款。
#include<stdio.h> main() { int a,b,c,n; float sum; printf("請輸入打印紙、墨盒、光盤的數量:\n"); scanf("%d%d%d",&a,&b,&c); sum=18*a+132*b+4.5*c; n=sum/100; switch(n) { case 0:printf("總價:%.2f\n",sum);break; case 1:printf("總價:%.2f\n",sum*0.95);break; case 2:printf("總價:%.2f\n",sum*0.94);break; case 3:printf("總價:%.2f\n",sum*0.93);break; case 4:printf("總價:%.2f\n",sum*0.92);break; case 5: case 6: default:printf("總價:%.2f\n",sum*0.90);break; } }
問題:剛開始沒法輸出正確結果。
解決方法:老師提示switch中變量設爲sum/100。以後輸出結果正確。
#include<stdio.h> int main() { int year,month,days; printf("please enter year and month:\n"); scanf("%d%d",&year,&month); switch(month) { case 2:if(year%400 == 0 || (year %4 == 0 && year %100 != 0)) days=29; else days=28; break; 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; } printf("%d年%d月有%d天",year,month,days); }
問題:並不知道「是否爲閏年的判斷式怎樣表達。
解決辦法:上網查找資料,「year%400 == 0 || (year %4 == 0 && year %100 != 0」爲閏年的表達方法。
四、實驗4.3.4:switch/case語句的嵌套應用
編寫一個自動售貨機的程序。該程序應具備如下功能:二級菜單,一級菜單是商品類型的選擇;二級菜單是具體商品的選擇(商品價格和品種能夠自擬)。顧客選擇商品類型,輸入購買數量。 自動售貨機根據選擇的商品類型與數量,計算並顯示所選商品總金額。
#include<stdio.h> int main() { int x,n,y; float sum=0.0; printf("請選擇:1.日用品 2.文具 3.食品\n"); scanf("%d",&x); switch(x) { case 1:printf("請選擇:1.牙刷(3.5元/支) 2.牙膏(6.2元/支) 3.肥皂(2元/塊) 4.毛巾(8.6元/條)\n"); scanf("%d",&y); printf("數量?"); scanf("%d",&n); switch(y) { case 1:sum=3.5*n;break; case 2:sum=6.2*n;break; case 3:sum=2.0*n;break; case 4:sum=8.6*n;break; } break; case 2:printf("請選擇:1.筆(3.0元/支) 2.筆記本(1.2元/支) 3.文件夾(12元/塊) 4.文具盒(8.6元/條)\n"); scanf("%d",&y); printf("數量?"); scanf("%d",&n); switch(y) { case 1:sum=3.0*n;break; case 2:sum=1.2*n;break; case 3:sum=12*n;break; case 4:sum=8.6*n;break; } break; case 3:printf("請選擇:1.白糖(3.6元/支) 2.鹽(1.0元/支) 3.餅(2元/塊) 4.方便麪(3.6元/條)\n"); scanf("%d",&y); printf("數量?"); scanf("%d",&n); switch(y) { case 1:sum=3.6*n;break; case 2:sum=1.0*n;break; case 3:sum=2.0*n;break; case 4:sum=3.6*n;break; } break; } printf("總計:%.2f元\n",sum); }
這道題目代碼不難,並無太大問題。
五、實驗練習 4.3.5 分析程序
運行下列程序,分析輸出的結果,並寫入實驗報告中。
#include<stdio.h> int main() { double x=1000/3.0; double y=x-333.0; double z=3*y-1.0; printf("x=%lf\n",x); printf("y=%lf\n",y); printf("z=%lf\n",z); if(z==0) printf("z==0.\n"); else printf("z不等於0.\n"); }
運行下列程序,分析錯誤的緣由,請修改程序,使其輸出正確的結果,並寫入實驗報告,掌握C語言表達式與數學表達式的區別。
#include<stdio.h> int main() { int num=20; if(num>5&&num<10) printf("%d in range (5,10)!\n",num); else printf("%d out of range (5,10)!\n",num); }
問題:原代碼之因此錯誤,是由於沒有分清C語言表達式與數學表達式的區別。
解決辦法:將「5<num<10"改爲"num>5&&num<10"。
一、表示或者條件的語句用雙豎線。
二、一個「=」 叫 「賦值」,兩個「==」叫 「恆等於"。
三、在結束後必定要有break,不然沒法終止程序。
四、「!=」表示否認,閏年的判斷式能夠是「year%400 == 0 || (year %4 == 0 && year %100 != 0」。之後遇到相似問題能夠觸類旁通。
五、C語言語法中不能夠像數學那樣連續不等式,C語言只有是與否的關係。如不能將"num>5&&num<10"寫成「5<num<10"。
一、分支結構語句中嵌套代碼要有層次,這樣有利於出錯後尋找錯誤。
二、要學習用最簡單的方法寫出最有效的代碼,儘可能不要長篇大論。
三、對C語言的基本語句還不夠了解,如「!="表示否認,我並無第一時間想到。
四、看到問題時,不能馬上動手,要先理清思路。
五、對使用間斷點尋找代碼錯誤緣由不太熟練,每次都是一行行看過去,效率不高。