只有单线输出而不是C中的多行(if / else和for combination)

时间:2016-05-19 04:33:52

标签: 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( "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;
}

我的输入是

3 
B
c
D

我收到的输出是

BattleShip

1 个答案:

答案 0 :(得分:2)

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]); } 可能会解决问题。

strokeStart