1. 程式人生 > >實驗2 格式化輸入輸出和分支語句

實驗2 格式化輸入輸出和分支語句

多次 本質 size print 休息 並且 才會 就是 課程表

實驗結論

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>
int
main() { 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 格式化輸入輸出和分支語句