C case switch语句未在整个循环中运行
试图在kattis.com上解决一个名为“Bela”的问题,这需要一些字符比较,但是当我运行代码时,scanf()函数在循环的最后几次迭代中没有被调用 这是我的密码:C case switch语句未在整个循环中运行,c,for-loop,char,switch-statement,C,For Loop,Char,Switch Statement,试图在kattis.com上解决一个名为“Bela”的问题,这需要一些字符比较,但是当我运行代码时,scanf()函数在循环的最后几次迭代中没有被调用 这是我的密码: #include <stdio.h> int main( void ) {` char dom; int n; scanf("%d %c", &n, &dom); n*=4; int sum = 0; for (int i = 0; i <
#include <stdio.h>
int main( void ) {`
char dom;
int n;
scanf("%d %c", &n, &dom);
n*=4;
int sum = 0;
for (int i = 0; i < n; i++) {
char num;
char suit;
scanf("%c%c", &num, &suit);
switch (num) {
case 'A':
sum += 11;
break;
case 'K':
sum += 4;
break;
case 'Q':
sum += 3;
break;
case 'J':
if (suit == dom) { sum +=20;}
else { sum += 2;}
break;
case 'T':
sum+=10;
break;
case '9':
if (suit == dom){sum+=14;}
break;
case '8':
break;
case '7':
break;
default:
continue;
}
}
printf("%d", sum);
return 0;
}
为什么for循环没有完全执行?我的代码有没有内在的错误,switch case语句没有计算“TD”、“AD”、“JH”
为什么for循环没有完全执行
添加printf(“\n输入:”)代码>在第二次扫描之前检查它。循环完全执行,但scanf捕获空间
所以
加
在第二次扫描之前或将第二次扫描更改为
scanf(" %c%c", &num, &suit);
^
这些语句是忽略空格(“”,'\n',…)
您做了什么来调查/调试这个问题?您是如何得出切换语句是问题的结论的?您是否尝试通过再次打印或在调试器中检查输入的值来准确测试输入的值?如果你这样做,你很可能会发现一个换行字符正在进入那里。然后你可以开始考虑为什么。我打赌<代码> SCANF(“%c%c”,& num,and诉讼);留下num
包含'\n'
(只是一个预感…)
while((ch=getchar()!='\n')&&ch!=EOF);
scanf(" %c%c", &num, &suit);
^