[英]C - if/else statement
我對if / else語句相當稱職,這是一個非常古老的任務,我最終完成了部分工作。 但是我仍然想確切地知道為什么我的代碼不起作用。
我希望用戶輸入姓名,身高和性別。 然后,我的代碼將顯示一個完整的句子,上面寫着“姓名高X厘米,是男性”或“姓名高X厘米,是女性”。
當我輸入姓名並輸入時,它會立即跳過,同時顯示身高和性別。 無論我在此之后輸入什么,它都將結束程序。
輸入名稱:傑克輸入身高(厘米):180性別(男/女):電腦$
我已經在這段代碼中玩了一段時間了,但是我已經被卡住了一段時間了。 任何幫助將不勝感激。 這是我的代碼:
#include<stdio.h>
int main() {
char name[30];
char sex;
float height;
printf("Input name: ");
scanf("%s", name);
fflush(stdin);
printf("Input height in cm: ");
scanf("%f", &height);
fflush(stdin);
printf("sex(M/F): ");
scanf("%c", &sex);
if (sex == 'M')
{
printf("%s is %f cm tall and male", name, height);
}
else if (sex == 'F')
{
printf("%s is %f cm tall and female", name, height);
}
printf("\n");
return 0;
}
從我可以看到它僅跳過性的部分 - 這是很可悲的是誠實的:-))。
它會立即跳過,同時顯示身高和性別
輸入名稱:傑克輸入身高(厘米):180性別(男/女):電腦$
您可以嘗試以下方法:
scanf(" %c", &sex);
^
該空格使scanf
在讀取字符之前先吃掉空白。
fflush(stdin)
是一個非常糟糕的主意(未定義的行為)。 您應該將此調用替換為其他函數調用,例如:
static void
clean_stdin(void)
{
int c;
do {
c = getchar();
} while (c != '\n' && c != EOF);
}
有了它,似乎工作。
您在第9行缺少了一個&符:
scanf("%s", name);
應該是:
scanf("%s", &name);
也許這有幫助
您也可以嘗試
printf("sex(M/F): ");
scanf("%s", &sex);
要從標准輸入中讀取單個字符,您必須使用getchar()而不是scanf(“%c”,&c)或將sex的變量類型更改為char [2]並使用scanf(“%s”,sex)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.