實驗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>
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 

 

以上就是本次實驗報告的全部內容 ( ̄∇ ̄) 呼~終於寫完了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM