【问题标题】:Why this for loop starts from half and not prints out every thing?为什么这个for循环从一半开始而不是打印出所有东西?
【发布时间】:2014-11-04 13:19:15
【问题描述】:

我正在学习C,我写了一个C程序,要求用户输入一个起始号和结束号,它会打印出从起始号到结束号的数字。例如,如果用户输入 5 作为起始编号,输入 10 作为结束编号,则输出 5 6 7 8 9 10。这是代码:-

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int start ;
    int end ;
    int counter ;

    // Asking the starting number
    printf("Enter the starting number : ") ;
    scanf("%d" , &start) ;

    // Asking the last number
    printf("Enter the last number : ") ;
    scanf("%d" , &end) ;

    for (counter = start ; counter <= end ; counter++)
    {
        printf("%d\n" , counter) ;
    }
    return 0;
}

上面的代码非常适合小间隙数(如 5 到 10 、 1000 到 1025),但是每当我输入大间隙数(如 100 到 500 )时,它会打印出从 205 到 500 开始的数字,即使我滚动up 我找不到从 100 到 204 的数字。我正在使用 Code::Blocks (version 13.12) 。任何人都可以弄清楚这段代码有什么问题吗?谢谢:)

【问题讨论】:

  • 这段代码没有错。实际上,您获得的完整输出不适合窗口并被删除。在此处查看输出:ideone.com/rentSf
  • 那一定是滚动的限制。您可以最多滚动到“x”行。如果要查看输出,请将输出重定向到文件。
  • 完美无误!见 - ideone.com/cwyk74,你没有正确检查输出!
  • @NicolusBuck:当终端窗口出现时,就在你面前。右键单击控制台顶部栏,选择属性->布局选项卡。然后设置Screen Buffer Size: Height = 500,就是这样。点击OK。现在输入100 作为起始值,500 作为结束值。向上滚动以查看所有值 :-)

标签: c


【解决方案1】:

命令行显示的历史有限。您正在打印大量数字,旧行被删除。

使用 fopen() 和 fprintf() 将您的数字打印到一个文件中,这样您就可以检查它们。

【讨论】:

【解决方案2】:

正如大家所提到的,您的命令行历史已超出其限制,因此,您无法回滚到起点。所以,你错过了完整的输出。

假设你在 linux 上,像这样运行你的可执行文件

./a.out > test1.txt

然后使用vi打开并检查新创建的文件

vim test1.txt

希望你能得到完整的 o/p。

【讨论】:

  • 他已经提到他正在使用一个IDE:Code::Blocks。
  • @hacks 。对。我忽略了那部分。 :-(
  • 对不起,我在 Windows 8.1 上而不是在 linux 上,但我喜欢 Ubuntu :)
  • @ NicolusBuck 是的。那么你需要使用一个文件来编写 o/p,正如@2501 提到的那样。
【解决方案3】:

您可以通过按顺序打印数字而不用换行符来确认,从而使自己更轻松一些。这将消除滚动问题:

for (counter = start ; counter <= end ; counter++)
{
    printf(" %d" , counter) ;
}
printf ("\n");

【讨论】:

    【解决方案4】:

    尝试在 printf() 中添加一个空格,而不是像 '\n' 这样的换行符

    printf("%d " , counter) ;
    

    【讨论】:

      【解决方案5】:

      您的程序将打印整个序列,只是您看不到它。 尝试将输出写入文件,然后您将能够看到整个输出。 发生这种情况是因为控制台的容量有限,否则您的代码将运行得非常好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-15
        • 1970-01-01
        • 1970-01-01
        • 2018-08-07
        • 1970-01-01
        • 2013-04-06
        • 2019-05-18
        相关资源
        最近更新 更多