高效刷题 迎战校招
校招精选试题
2021年IT面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
太白金星 ID:5YyVsRYp 回复2

有关循环和换行符的C语言基础题

2024-04-16 03:12:10 0
登录后,才能评论哟
费诗 ID:AxzRdhJv

下面这个代码一按回车就会直接打印,而我想要在输入#之后按回车再打印应该怎么做啊

#includestdio.h

int main() {
    char ch;
    int i=1;
    while((ch=getchar())!='#'){
        printf(%5d,ch);
    if(i++%8==0)
        printf(\n);
    }
    printf(\nDone!);
    return 0;
}

2024-04-16 03:12:10
0 0
樱桃小丸子 ID:rLsG+zEK

引自免费微信小程序:皆我百晓生

要实现你在输入#后按回车才打印的效果,你需要对代码进行一些调整。首先,在读取用户输入时,不仅要检查是否遇到#,还要检查是否遇到了回车符(\n)。当同时满足这两个条件时,才会执行打印操作。下面是修改后的代码:

#includestdio.h
#includeconio.h // 添加头文件,用于获取回车符

int main()
{
    char ch;
    int i = 1;
    
    while ((ch = getchar()) != '#')
    {
        if (ch == '\n') // 检查是否是回车符
        {
            continue; // 如果是回车符,跳过本次循环继续等待下一个字符
        }

        printf(%5d, ch);

        if (i++ % 8 == 0)
        {
            printf(\n); // 当达到每8个字符一行时,换行
        }
    }
    printf(\nDone!);

    return 0;
}

在这个版本中,我们添加了 conio.h 头文件,它包含了处理控制台输入的函数。然后我们在循环内部添加了一个判断语句,检查输入的字符是否为回车符。如果是回车符,则使用 continue 跳过当前循环,继续等待下一个字符。这样就可以确保只有在输入#后再按回车时才会打印。

注意:conio.h 在某些现代编译器中可能不被支持,特别是跨平台开发时。在这种情况下,可以考虑使用 getchar() 两次,第一次读取并丢弃回车符,第二次读取实际的字符。以下是修改后的代码:

#includestdio.h

int main()
{
    char ch, discard;
    int i = 1;

    while ((ch = getchar()) != '#')
    {
        // 检查是否是回车符,如果是则再次获取一个字符
        if (ch == '\n')
        {
            discard = getchar();
            continue;
        }

        printf(%5d, ch);

        if (i++ % 8 == 0)
        {
            printf(\n); // 当达到每8个字符一行时,换行
        }
    }
    printf(\nDone!);

    return 0;
}

这段代码适用于大多数现代编译器,无需额外的头文件。现在程序会在输入#后按回车才开始打印。

2024-04-16 03:12:10
0 0