pepsi02
pepsi02
采纳率100%
2021-03-09 07:38

C语言,菜鸟驿站,比较简单的小问题。

#include<stdio.h>
void chline(char, int, int);
int main(void)
{
    int rows, column;
    char ch;
    while (scanf("%c %d %d",&ch,&rows,&column) != 'q')
    {
        if (ch == '\n')
            continue;
         chline(ch, rows, column);
        
    }
    return 0;
}
void chline(char ch1, int a, int b)
{
    int rows, column;
    
    for (rows = 0; rows< a; rows++)
    {
        for (column= 0; column < b; column++)
            putchar(ch1);
        printf("\n");
    }

}

输入”! 2 3 ”。打印正确,输入” q q q ”为什么不退出呢。好奇怪的代码,我咋打出来的。我也迷糊,求指教~~~

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • qq_40344524 书山客 1月前

    while (scanf("%c %d %d",&ch,&rows,&column) != 'q'),循环判定条件不明确,同时输入三个,无法判断通过执行对哪一个的判断来结束循环

    点赞 1 评论 复制链接分享
  • cson20193212002 Basesson 1月前

    scanf的返回值是正确接收值的个数或者-1(EOF)

    scanf("%c %d %d",&ch,&rows,&column)这条语句最大返回3,比如“! 1 2”,就是返回3,而"q q q",返回的是1,只有第一个q是正确接收的。

    而q的ascii码是113,所以程序会一直在while里。

    点赞 1 评论 复制链接分享
  • cpp_learner cpp_learner 1月前

    注意看,你输入的后面两个参数是int类型的,当你输入char字符类型时,就会发生类型错误,然后报错。

    你应该写一个输入退出的判定。

    点赞 1 评论 复制链接分享