8说了,奋斗 2018-10-30 13:54 采纳率: 0%
浏览 643

关于 scanf 和 getchar 的while循环问题

初学萌新 求指教 !!!
错误程序:
#include
void display(char cr, int lines, int width);//打印字符的函数
int main(void)
{
int ch; //待打印字符
int rows, cols; //行数 列数
printf("Enter a character and two integers :\n");

scanf(" %c", &ch);  

while (ch != '\n')
{
if(scanf("%d%d", &rows, &cols)!=2)
break;

    display(ch, rows, cols);

    printf("Enter another character and two integers :\n");
    printf("Enter a newline to quit .\n");

    while (getchar() != '\n')//跳过前面多余的的输入
        continue;

    scanf("%c", &ch);   /*遇到的问题???*/
    //这里如果输入 回车换行符 ch赋值为 \n  为什么程序不退出循环呢?
    //如果用getchar() 简化所有的scanf()输入换行符 就能退出; 
}
printf("Bye !");
return 0;

}
void display(char cr, int lines, int width)//字符成 行 列 打印
{
int row, col;
for (row = 1; row <= lines; row++) {
for (col = 1; col <= width; col++)
putchar(cr);
putchar('\n');
}
}
正确程序:
下面是改过的函数
#include
void display(char cr, int lines, int width);
int main(void)
{
int ch;//待打印字符
int rows, cols;//行数 列数

printf("Enter a character and two integers :\n");

while ((ch=getchar())  != '\n')                       //改
{
    if(scanf("%d%d", &rows, &cols)!=2)
        break;

    display(ch, rows, cols);
    while (getchar() != '\n')
        continue;
    printf("Enter another character and two integers :\n");
    printf("Enter a newline to quit .\n");

//输入换行符即可退出
}
printf("Bye !");
return 0;

}
void display(char cr, int lines, int width)
{
int row, col;
for (row = 1; row <= lines; row++) {
for (col = 1; col <= width; col++)
putchar(cr);
putchar('\n');
}
}
初学萌新 求指教 !!!
感谢耐心看完 感谢

  • 写回答

2条回答 默认 最新

  • sizeofname 2022-01-06 21:35
    关注

    楼主后来有弄懂吗?同问!

    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况