1. 程式人生 > >第二次上機實驗

第二次上機實驗

case 全部 else col clas 出現 輸出格式 etc 直接

part1:%d表示輸入輸出格式為整型,在需要以十進制整數輸入或者輸出數據時使用,常與int連用。例:scanf("%d",&a),指的是輸入一個整數賦值給變量a;printf("%d\n",y)指的是按十進制整數輸出y;

%f表示輸入輸出格式為浮點數形式,在需要以浮點數形式輸入或者輸出數據時使用,常與float,double連用。例子與上面的%d相似,不再贅述;

%c表示輸入輸出的形式為字符,在需要輸入或者輸出字符時使用,常與char連用。例子與上述相似,不再贅述;

%e表示輸出的形式為指數形式,在需要輸出的數據以指數形式出現時使用,常與float,double連用。例子與上述相似,不再贅述。

%s表示輸出的形式為字符串,在需要輸出字符串時使用,常與char連用。例子一般char定義一個數組a,數組a中連續存放字符串常量,printf中只需對a輸出即可。

%5d表示以十進制整數形式輸入輸出某個數據,並給予其五個寬度。①,當原數據不足5個寬度時,輸入輸出數據右對齊,左側補零;②,當原數據超過5個寬度時,按原數據輸入或者輸出。

%lf表示double的格式字符,用於格式化輸入輸出。當數據類型為double(雙精度浮點類型)時,必須使用%lf。

%.3f表示小數點後保留三位有效數字(四舍五入),小數後不足三位補0。

%6.2f表示小數點後保留兩位(四舍五入),並給予該數據六個寬度(小數點占一個寬度)。①,當取值後數據大於6個寬度時,按取值後原樣輸出;②,當取值後數據不足六個寬度,則數據右對齊,左邊補空格。

part1:改錯

#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("%lf,%lf\n",x,y); return 0; }

改錯後的代碼(第一個scanf處對a1,a2,a3缺少地址運算符&;最後一個scanf處,由於x為double類型,故應改為%lf)

技術分享圖片

part4:

#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:

#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;
} 

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

part5:

#include<stdio.h>
int main(){
    char anwser;
    printf("請輸入你的答案(A,B,C or D):");
    anwser=getchar();
    if(anwser==65) printf("binggo, you are right~");
    else printf("try again");
    return 0;
}

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

實驗總結與體會:part1部分,這裏一開始是看不懂的,什麽%4d,%.4f之類的,後來上網查了一下,並且驗證之後才得出上面的結果。補充一點的是%s,%5.3s表示去字符串的前三位字符,給與五個寬度。①,數據不足3位時,原樣輸出,給五個寬度,右對齊,補空格;②,若小數點前面的數小於小數點後面的數,則按小數點後的數取數據後原樣輸出。

part3部分,按照例子運行,沒發現什麽異常。

part4部分跟part3部分一樣沒有什麽異常。如果沒有break,那麽從符合這個事件的語句的輸出語句開始一直到結束的輸出語句會全部輸出。

坑:在寫part5的時候,最初我是用switch語句寫的,仿照書本P68頁,例3.23,int anwser,並采用char函數(因為要輸入字符),列出了事件case 65(因為是字符就想用ASCII碼,因為直接case A,會出現報錯,說A第一次被提出,即使前面int A都沒用,也運行不了),改成這樣後,運行倒是成了,但不論輸入什麽,結果都是try again,後來才想起來有個可以定義輸入字符的函數getchar,然後仿照書本P57,例3.16(因為我覺得應該是anwser出了問題,這個例子也蠻符合這個程序要求的)寫出了如上的代碼,判斷A,B,C,D也是采用ASCII碼,直接輸入A無法運行,報錯跟之前一樣,最後運行成功了。

至於其他的問題,晚上接著碼,包括評論

第二次上機實驗