天天看點

輸入輸出格式錯誤

#include<stdio.h>

int main(int argc, const char *argv[])

{

double fuheight,moheight,height1,height2,height3;

char sex,exerse,health;

printf("the fuheight:\n");

printf ("the moheight:\n");

printf("the sex:\n");

printf("the exerse:\n");

printf("the health:\n");

scanf("%lf,%lf,%c,%c,%c",&fuheight,&moheight,&sex,&exerse,&health);

錯誤解釋:一開始寫成:scanf("%f,%f",&a,&b);

                                           sex=getchar();

                                           exerse=getchar();

                                           health=getchar();

那麼在輸入時,輸入完a,b要先輸入enter鍵,表示這一行程式輸入結束,才可以進入下行的輸入

如果輸成a,b,sex,exerse,,,,,的形式就是錯誤的

避免錯誤的方式,直接将輸入寫成一行形式,可以直接使用scanf,輸入數字和字元都可以

   if(sex==0)

錯誤:變量sex記憶體儲的是我們通過鍵盤輸入的一個字元,字元0的ascii碼值沒辦法與數值0直接進行比較,是以,這個時候應該與字元0進行比較

是以,應該注意的是:

當遇到這樣的情況:

 需要判斷條件是否成立

如果我們想要輸入的是數值,那麼從int開始,一路定義成數值

1)int sex,health;

輸入也是數值

scanf("%d,%d",sex,health)

判斷語句也是數值與數值的比較

if(sex==1)

因為此時sex輸入的數值,一開始定義的也是數值,是以可以與數值1進行比較

2)如果我們想輸入字元,那麼從char開始,一路定義成字元

char sex,health

那麼從鍵盤擷取的也是以字元的形式儲存在sex中

scanf("%c,%c",,)

此時可以讓sex與a比較

if(sex=='a')

但注意要加上單引号,才表示字元,如果不帶字元,表示變量,計算機無法識别

而你的做法,先是将sex定義成字元型變量,此時你就應該輸入的是字元,但是你輸入了一個不那麼正常的字元1,此時字元1帶着它的ASCII,然後輸入的是1,是以這個1應該帶上單引号,也表示字元。如果1不加單引号,表示的是一個數值。a不加單引号表示的是一個變量,如果表示字元,必須加上單引号。

應該從一開始就确定你要用字元還是數字進行比較,然後

{

height1=(fuheight+moheight)*0.54;

}

else

{

height1=(fuheight*0.923+moheight)/2;

}

if(exerse==1)

{

height2=height1*1.02;

}

else

{

height2=height1;

}

if(health==2)

{

height3=height2*1.015;

}

else

{

height3=height2;

}

printf("the height of the child   is:%lf",height3);

return 0;

}

注:如果else後面的内容沒有做什麼具體的内容,可以隻用if,不用else後面的内容,表示如果滿足if的條件,則執行,如果不滿足,則由原程式直接跳轉到下一步。程式執行結果仍不改變。