#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的條件,則執行,如果不滿足,則由原程式直接跳轉到下一步。程式執行結果仍不改變。