我是編程和這個網站的新手,如果之前有人問過這個問題,我很抱歉。我最近開始從在線資源中學習 C。我在 freecodecamp.org 的 YouTube 頻道上觀看 C 的教程,在視頻的輸入部分,我嘗試輸入視頻中顯示的許多資料型別。程式跳過輸入的成績部分。我不知道為什么會這樣。
這是我所做的代碼-:
#include <stdio.h>
int main()
{
char name[25];
printf("Enter your name : ");
scanf("%s", name);
printf("\nYour name is : %s\n", name);
char grade;
printf("\nEnter your grade : ");
scanf("%c", &grade);
printf("\nYour grade is : %c", grade);
int age;
printf("\n\nEnter your age : ");
scanf("%d", &age);
printf("\nYou are %d years old.", age);
double gpa;
printf("\n\nEnter your gpa : ");
scanf("%lf", &gpa); /* lf is used in input and f in output */
printf("\nYour gpa is : %f\n", gpa);
return 0;
}
當我運行程式時,它會跳過成績部分并且不將成績作為輸入。我試圖通過將等級輸入放在代碼序列的頂部來調整它,然后它就起作用了。但是當我輸入另一個名稱的輸入序列時,它又回到了同樣的問題。
這是輸出-:
輸出
我不知道為什么會這樣。如果有人可以在這里幫助我,我會很高興。
謝謝。
我嘗試了上述方法,結果就是我所展示的。
注意 - :當我將代碼中的等級序列移到頂部時,它可以作業。我不知道為什么會這樣,因為我可能并不總是先輸入成績。
uj5u.com熱心網友回復:
讀取您的姓名時scanf會將其\n留在輸入緩沖區中。
如果您嘗試通過以下方式閱讀成績
scanf("%c", &grade);
您將使用它\n而不是讀取新輸入。
為避免這種情況,請使用
scanf(" %c", &grade);
(注意前面的空格%c)。該空間將導致scanf跳過任何空格,然后要求新的輸入。
uj5u.com熱心網友回復:
連續寫兩次scan f
printf("\nEnter your grade : ");
scanf("%c", &grade);
scanf("%c", &grade);
printf("\nYour grade is : %c", grade);
基本上,當您按 Enter 時,它會被拾取為可變等級,因為 enter 或 new line 也是一個字符。
uj5u.com熱心網友回復:
您正在嘗試使用 char 和 char[]。所以當我們需要基于char接受多個輸入時,應該使用fflush(stdin); 在掃描輸入之前。這將幫助您分別接受所有輸入。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/455492.html
標籤:C
上一篇:有范圍限制的投射型別
