先上代碼:
#include<stdio.h>
void main()
{
//定義五個變量,語文、英語、數學,總分,平均分
float chinese,english,maths,total,average;
printf("請輸入語文成績\n");
a:
scanf("%f",&chinese);
if(chinese<0 || chinese>100)
{
printf("輸入不合法,請重新輸入\n");
goto a;
}
else
printf("請輸入英語成績:\n");
b:
scanf("%f",&english);
if(english<0 || english>100)
{
printf("輸入不合法,請重新輸入\n");
goto b;
}
else
printf("請輸入數學成績\n");
c:
scanf("%f",&maths);
if(maths<0 ||maths>100)
{
printf("輸入不合法,請重新輸入\n");
goto c;
}
else
total=chinese+english+maths;
average=total/3;
printf("學生的總分為%.2f,平均分為%.2f",total,average);
}
我運行這個程序的時候,如果按正常套路來,是沒問題的,但是我在輸入成績時,輸入帶有符號的內容,比如輸入括號裡面的內容時(2-1), (21、1),就會出錯,請教高手指點一下,這程序應該怎麼改啊?
寫錯了,不好意思
scanf("%*[^\n]");少了一個符號
你看下,還是能輸入符號啊,還能改進嗎,我再給你加分。
清空輸入緩沖區的數據!比如你有時候輸入數據時,多輸入了一些不相關字符,這些多余的數據就會保留在輸入緩沖區中,但是你並不想用它,所以就要清除掉。
scanf("%*[^\n]");意思是清除掉輸入緩沖區中不是‘\n’的字符,就是讀取多余的數據丟棄。
scanf("%*c");是清除一個字符,這裡主要是清除上面沒清除的‘\n’
每次輸入數據時,結尾都會按下一個回車符