使用的do while循环如何提供用户提示?

用户名

我制作了一个简单的程序,用#表示一个半三角形,一切正常,唯一的问题是我的while循环不起作用无法提示用户快速帮助?

#include<stdio.h>

int main() {
    int n;

    do { 
        printf("enter a non negitive number less than equal to 23");
        scanf("%d\n",&n);

        for(int i=0;i<n;i++)
        {  
            for(int j=0;j<n+1;j++)
            {  
                if(j <= n-(i+2) )
                    printf(" ");
                else
                    printf("#");
            }
            printf("\n");
        }  
    }     
    while(n < 23);

    printf("thanks for using my program");

    return 0;
}
cdhowie

如评论中所述,您的问题是,即使您输入的数字超过23,它也会打印输出。(我重复此操作是因为该信息本身不存在于问题中。)

这是因为条件是在循环结束求值的do ... while如果要在读取数字后立即退出,则需要在读取输入后立即测试条件。

尝试将打印和读取逻辑封装在一个函数中;这将使它更容易在while循环中用作条件

int prompt_and_read(int * output) {
    printf("enter a non negitive number less than equal to 23: ");
    fflush(stdout);
    return scanf("%d\n", output);
}

然后,您可以执行以下操作:

while (prompt_and_read(&n) && n < 23) {
    ....
}

这是多方面的改进:

  • 它刷新输出以确保显示提示。printf()在写换行符之前,可能不会刷新输出。
  • 如果循环读取的数字为23或更大,则循环将立即终止。
  • 因为您没有检查的返回值scanf(),如果输入在读取数字23或更大之前结束,则循环将无限继续。scanf()如果无法读取任何输入,则通过终止循环来测试修复结果

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用javascript中的while循环重新提示用户输入

如何解决此do-while循环,以便控制台程序在自动关闭之前提示用户?

如何使用户退出while循环

如何使用while循环,do循环从1到用户输入的数字求和?

如何用do-while循环来吸引用户?

如何要求用户“再次播放”并使用简单的是或否问题重新运行do while循环?

如何使用“Do While”循环遍历列表

如何使用用户输入双打关闭while循环

如何使用用户输入中断 while 循环

在c中使用do while循环从用户那里获取输入

如何在csh shell命令提示符中使用while循环?

如果我的 scanf 变量是一个浮点数并且用户输入了一个字符,我如何提示他们输入一个数字?假设 scanf 在 do while 循环中

当用户输入“退出”一词时,如何使用 Java 中的扫描器退出 do-while 循环?

如何使用用户输入让While循环计数而不是无限循环?

如何使用while循环

如何使用while循环

如何使用Do-While循环来构造程序

如何在 do-while 循环中使用 getline?

如何在do / while循环中正确使用函数?

如何使用 Powershell 创建适当的 do-while 循环

编辑程序以使用Java中用户输入的do While / While循环

使用while或do while循环从用户输入创建文件夹

如何用用户输入的字符串结束do while循环?

当程序被用户成功终止时,如何退出do-while循环

使用 while 或 do while 退出循环

如何使用Java自动回答用户提示?

如何使用递归循环代码(当用户输入无效输入时,它将再次提示他们)?

使用用户输入迭代While循环

用户输入使用while循环存储数据