簡體   English   中英

C-if / else語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM