c - C 中只有单行输出而不是多行输出(if/else 和组合)

标签 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

最佳答案

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]);
}

关于c - C 中只有单行输出而不是多行输出(if/else 和组合),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37314008/

相关文章:

c++ - 关于 C 中的指针

当客户端断开连接时,C 服务器停止响应

c - 在最小堆中插入节点优先考虑左子节点

jquery - 如果为 null,则使用数组中的另一个图像

jquery - 分组或连接由循环创建的 jquery 对象,因此仅使用appendTo 一次

windows - FOR/F 循环中的虚假 'system\cmd.exe'

c - 在 gcc 的内联 asm 中使用 printf 函数

if-statement - Haskell 中 Lambda 函数内部的守卫(If-Else)

c++ - `a?b:c` 的操作数可以有不同的类型吗?最好的选择是什么?

c - 在 C 中子方法内使用循环的奇怪结果