實驗2 格式化輸入輸出和分支語句
實驗結論
PART 1 格式化輸出函數printf()和格式化輸入函數scanf()
(1)在c程序開發環境下輸入並運行程序,觀察運行結果,程序源碼如下↓
/* 《C語言程序設計教程學習指導》p118 實驗內容(1) 這是一個常用格式控制符使用示例 運行程序,結合運行結果,對照每一行printf()中的格式控制符,理解和鞏固其功能和用法 */ #include <stdio.h> int main() { int x=1234; float f=123.456; double m=123.456; char ch=‘a‘; char a[]="Hello, world!"; // 定義一個數組a,數組中連續存放了字符串常量hello,world! int y=3, z=4; printf("%d %d\n", y, z); printf("y=%d, z=%d\n", y,z); printf("%8d,%2d\n", x,x); printf("%f, %8f, %8.1f, %0.2f, %.2e\n",f,f,f,f,f); printf("%lf\n",m); printf("%3c\n", ch); printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a); return 0; }
運行結果↓
以下是上述格式化輸出符號的具體含義↓
(2)在c程序開發環境下輸入程序,查找並修改錯誤。改正後↓
/* 《C語言程序設計教程學習指導》p119 實驗內容(2) 這是一個格式化輸入輸出函數及格式符使用練習 找出兩處錯誤,修改並運行程序 為a1,a2,a3,c1,c2,c3,x,y輸入數據,使得: a1=1,a2=2,a3=3,c1=‘a‘,c2=‘b‘,c3=‘c‘, x=1.5, y=2.5 */ #include <stdio.h> intmain() { double x,y; char c1,c2,c3; int a1,a2,a3; scanf("%d%d%d",&a1,&a2,&a3); printf("%d,%d,%d\n",a1,a2,a3); scanf("%c%c%c",&c1,&c2,&c3); printf("%c%c%c\n",c1,c2,c3); scanf("%lf,%lf",&x,&y); printf("%f,%lf\n",x,y); return 0; }
運行結果↓
這個訓練就是在強調double類型數據的輸入必須要是%lf
PATRT 4 :switch語句體驗練習
編程示例 輸入1,2,3...的不同整數,顯示不同信息。
以下是有break語句的程序源碼↓
/* switch語句使用示例 輸入1,2,3...的不同整數,顯示不同提示信息 */ #include <stdio.h> int main() { int level; printf("輸入現在狀態等級(1-5): "); scanf("%d",&level); switch(level) { case 1: printf("high翻了:)\n"); break; case 2: printf("low爆了:(\n"); break; default: printf("一言難盡,無法概括。。。\n"); } return 0; }
運行結果↓
現在刪去break語句,程序源碼如下↓
/* switch語句使用示例 輸入1,2,3...的不同整數,顯示不同提示信息 */ #include <stdio.h> int main() { int level; printf("輸入現在狀態等級(1-5): "); scanf("%d",&level); switch(level) { case 1: printf("high翻了:)\n"); case 2: printf("low爆了:(\n"); default: printf("一言難盡,無法概括。。。\n"); } return 0; }
運行結果↓
從運行結果可以看出:
在沒有去掉break之前,當輸入語句與case匹配到並執行相應語句之後會在break語句就結束switch語句
而在去掉break之後,在匹配到對應的case語句後會一直將剩余case、default都運行完畢才會結束switch語句,
並且在首次匹配到case並執行相關語句後若無break則不會在判斷case是否符合,而是直接將剩余進行到底。
PART 5 :簡單編程小練習
編程模擬用戶做選擇題的情況:要求用戶從鍵盤輸入一個答案選項(A,B,C,D之一),
如果用戶答案是‘A‘,則輸出提示信息"Binggo, you are right~",否則,輸出提示信息"try again~"。程序源碼如下:
/*編程模擬用戶做選擇題的情況:要求用戶從鍵盤輸入一個答案選項(A,B,C,D之一),
如果用戶答案是‘A‘,則輸出提示信息"Binggo, you are right~",否則,輸出提示信息"try again~"。 */ #include <stdio.h> int main() { char Answer; printf("請輸入你的答案(A、B、C or D):"); scanf("%c/n",&Answer); switch(Answer) { case ‘A‘: printf("Binggo, you are right~\n"); break; default: printf("try again~\n"); } return 0; }
運行結果↓
PART 6 :拓展練習
這是一個簡易的日程課表查詢的一段代碼,程序源碼如下↓
/*簡易的課程表查詢*/ #include <stdio.h> int main() { char Week ; printf("日程表查詢(1、2、3、4、5、6、7):\n"); scanf("%c/n",&Week); switch(Week) { case ‘1‘: printf(" 1-2節:高數課\n 3-4節課:概統課\n 5-6節:體育課\n 周一 真的好多課_(:_」∠)_加油!!\n"); break; case ‘2‘:printf(" 1-2節:計算機實驗課\n 3-4節:英語課\n 5-6節:大物課\n 9-10節:通修課\n 又是忙碌的一天? ????堅持堅持!!\n"); break; case ‘3‘:printf (" 1-2節:C語言課(雙周)/概統課(單周)\n 3-4節:高數課\n 空閑的下午↖(^ω^)↗可以休息休息啦 \n"); break; case ‘4‘:printf (" 1-2節課:大物課\n 3-4節:大探課\n 5-6節:近代史課\n 9-10節課:通修課\n 超級無敵滿課日,再堅持一下,(?‾? ?? ‾??)馬上就到周末啦,加油!\n"); break ; case ‘5‘:printf (" 1-2節課:高數課\n 3-4節課:C語言課\n 7-8節:英語課(雙周)\n 終於熬到最後一天了(●°u°●)? 」明天就可以出去耍了!"); break ; case ‘6‘: case ‘7‘:printf (" 周!末!周!末!Enjoy a happy weekend ? •?•? ☆?\n"); break ; default: printf(" uhhnn… 出錯啦(///▽///)\n"); } return 0; }
運行結果↓
實驗總結與體會
PART 1 格式化輸出函數printf()和格式化輸入函數scanf()
這個是從網上找的一些輸出控制符
(原網址→ http://c.biancheng.net/view/159.html 還是之前C語言中文網裏邊的內容,會更加詳細)
PART 2 單個字符輸出函數函數putchar()和單個字符輸入函數getchar()
PART 3 if語句體驗練習
PART 4 switch語句體驗練習
由於這份實驗報告是在後來上課結束之後寫完的,所以對於這一部分的問題老師已經都將註意事項講解過了
而且這些內容也是規則性較強,本質是從不知道到知道的過程,實驗前的材料上也將內容表述得很清晰,剩下的就是掌握與熟練的工作了
PART 5 簡單編程練習
這一部分的編寫可以應用到 if語句和switch語句,兩種都可以選出來,我選擇了switch是覺得自己對這種語句還不是很熟悉,多練習一下。
PART6 拓展練習
我目前沒有想到一些好玩兒的有趣的程序,就先簡單的敲出了一個日程課表查詢的程序,其實這個程序是很不完備的,像單雙周我也只是簡單的標註在後面沒有
加入單雙周判斷從而顯示不同結果這樣的程序,並且每次運行也只局限於查一天的內容,在後期會查一些函數可以讓這個程序循環多次進行,對其進行改進的。
體會:
首先我的編程軟件幫了我挺大忙的,漏掉“;”等等一類邏輯問題就會像下面一樣出現提示,讓我改正。
感覺這次踩的最大的坑就是在編寫PART6的時候每一個case都是一個個敲上去的,忘記了 “contral c v ”…到寫完了才發現¯\_(ツ)_/¯
還有就是在printf裏面的內容,如果想要輸入轉義字符一定要寫對,我程序裏的所有換行在第一遍全都把斜線方向搞錯了,而這又不是邏輯錯誤,
是在最後運行的時候才發現,然後一要一個個改真的覺得又氣又好笑 :-I
以上就是本次實驗報告的全部內容 ( ̄∇ ̄) 呼~終於寫完了
實驗2 格式化輸入輸出和分支語句