當前位置:編程學習大全網 - 編程軟體 - C語言編程問題~

C語言編程問題~

#include<stdio.h>

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 語句還是不要用為好。。。,還有妳的程序在輸出錯誤後提示“繼續輸入”,然後就任意鍵結束了,—,—!

考慮後感覺初步容錯是必要的,稍微修改了下,歡迎大家繼續批評指正

  • 上一篇:編程規劃
  • 下一篇:SAS硬盤是什麽?
  • copyright 2024編程學習大全網