A. c語言二維數組輸入錯誤後怎麼報錯重新輸入
數據輸入錯誤,有兩種情況:
1 輸入的數據格式不正確,比如要求輸入整型,但是輸入了字元型。
這種情況,可以通過scanf的返回值進行判斷,scanf的返回值是正確輸入的變數個數。當返回值和要輸入的變數個數不同時,則表示出錯,要求重新輸入。
2 輸入的數據不在合法范圍內。
比如要求輸入正數,但輸入了負數。這時需要判斷輸入的值是否合法。
以輸入兩個整數,要求范圍在0~100之間的代碼可以寫作
int a,b,r;
while(1)//死循環,不得到正確輸入不退出。
{
r = scanf("%d%d",&a,&b);
if(r == 2 && (a>=0 && a <= 100) && (b>=0 && b<=100)) break;//輸入正確,退出循環。
printf("輸入不正確,請重新輸入\n");
fflush(stdin);//清空輸入,這一步是必須的,不然出錯的輸入可能影響下次輸入。
}
B. C語言怎麼糾正錯誤輸入
我只能想到兩種解決辦法:
改變接收類型,從int改為char,再在scanf後面加一句fflush(stdin); 清除輸入的多餘字元
改變接收類型,從int改為char[],利用atoi函數將字元串轉為數字。(缺點:轉化失敗是返回0)
C. C語言怎麼實現輸錯了 重新輸入
可以設置一個while循環在其體內輸入數據,經判斷輸入正確則跳出循環,否則提示重新輸入,直到輸入正確。舉例代碼如下:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
intmain(void){
intm[12]={31,28,31,30,31,30,31,31,30,31,30,31},year,month;
while(1){//這個循環就是解決輸入錯誤的
printf("Pleaseentertheyear&month... ");
fflush(stdin);
if(scanf("%d%d",&year,&month)&&year>0&&month>0&&month<13)
break;
printf("Error,redo:");
}
m[1]+=year%4==0&&year%100!=0||year%400==0;
printf("%d/%dis%ddays. ",month,year,m[month-1]);
return0;
}
D. c語言中數據輸入錯誤了如何提示輸入錯誤並實現要求重新輸入
cin>>sth;
while(!check(sth))
{
//check
函數檢查輸入值,如果滿足就不需要在輸入,這是就返回1或者true
cout<<"enter
again,
because
it
is
invalidate"
cin>>sth;
}