C中只有单行输出,而不是多行输出(if/else和for组合)
尝试运行此程序时,仅显示单行输出,而不是多行输出C中只有单行输出,而不是多行输出(if/else和for组合),c,if-statement,for-loop,output,C,If Statement,For Loop,Output,尝试运行此程序时,仅显示单行输出,而不是多行输出 #include <stdio.h> int main() { int t,i,a; scanf("%d",&t); char n[t]; for(i=0;i<t;i++){ scanf("%c",&n[i]); } for(i=0;i<t;i++){ if ((n[i]=='b')||(n[i]=='B')) {printf
#include <stdio.h>
int main()
{
int t,i,a;
scanf("%d",&t);
char n[t];
for(i=0;i<t;i++){
scanf("%c",&n[i]);
}
for(i=0;i<t;i++){
if ((n[i]=='b')||(n[i]=='B')) {printf( "BattleShip\n" );}
else if ((n[i]=='c')||(n[i]=='C')) {printf( "Cruiser\n" );}
else if ((n[i]=='d')||(n[i]=='D')) {printf( "Destroyer\n" );}
else if ((n[i]=='f')||(n[i]=='F')) {printf( "Frigate\n" );}
}
return 0;
}
我收到的输出是这样的
BattleShip
scanf(“%c”和&n[i])
可以读'\n'
,所以n[0]
是'\n'
在'3'
之后,n[1]
是'B'
,n[2]
是\n
在'B'
之后。添加getchar()
以读取“\n”
可能会解决此问题
for(i=0;i<t;i++){
getchar(); // <--- read additional '\m'
scanf("%c",&n[i]);
}
for(i=0;iscanf(“%c”,&n[i])
可以读取'\n'
,因此n[0]
是'\n'
在'3'
之后,n[1]
是'B'
,n[2]
是\n
在'B'
之后添加getchar getchar可以解决这个问题
for(i=0;i<t;i++){
getchar(); // <--- read additional '\m'
scanf("%c",&n[i]);
}
for(i=0;我尝试在调试器中单步执行代码。这将提供出色的洞察力。input3Bcd
或scanf(“%c”、&n[i]);
-->scanf(“%c”、&n[i]);
尝试在调试器中单步执行代码。这将提供出色的洞察力。input3Bcd
或scanf(“%c”、&n[i]))
-->scanf(“%c”和&n[i]);
正确的解决方案是将%c”
替换为%c”
。这样,不管有多少个空白字符。您只需获得非空白字符。@user3386109谢谢,您的评论有效正确的解决方案是将%c
替换为%c“
。这样,不管有多少个空白字符。您只需获得非空白字符即可。@user3386109谢谢,您的评论有效