int main()
{
int s=0,flag=0,i;
char c;
for(i=0;i<3;i++)//3張牌,讀入壹個字符就進行判斷
{
scanf("%c",&c);
if(c-' ')//讀入的是空格,跳過,,後面的else i--回復i值,保證讀到3張牌
{
if(c=='A')//讀入'A',按1分計算,並用flag做標記,最後看s值決定是否以11分計算
s+=1,flag++;
else if(c=='J'||c=='Q'||c=='K')//讀入"JQK",10分
s+=10;
else if(c=='1')//讀入'1',
{
scanf("%c",&c);//繼續讀入,可能讀到空格或者0,以此判斷是10還是1
if(c=='0')
s+=10;
else
s+=1;
}
else if(c>'1'&&c<='9')//讀入2——9
s+=(c-'0');
else
{
printf("輸入錯誤,請重新輸入:\n");
while(scanf("%c",&c),c-'\n');//讀取 錯誤輸入 的後面部分
i=-1;s=0; flag=0;
}
}
else
i--;
}
if(s<12&&flag>0)//決定'A'的分值
s+=10;
printf("%d\n\n",s);
return 0;
}
44733 0799
我沒有考慮容錯,謝謝 AdrianLY 指出問題。但對於初學者來說容錯要求似乎高了。而且既然考慮容錯就應該全面,比如 1 2 111 , 11 2 3這些情況,如果真考慮起來可能超出他們能力範圍
goto 語句還是不要用為好。。。,還有妳的程序在輸出錯誤後提示“繼續輸入”,然後就任意鍵結束了,—,—!
考慮後感覺初步容錯是必要的,稍微修改了下,歡迎大家繼續批評指正