为什么这个for循环从一半开始而不是打印掉所有东西?

时间:2014-11-04 13:19:16

标签: c

我正在学习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的数字,即使我滚动我找不到从100到204的数字。我正在使用Code::Blocks (version 13.12)。任何人都能弄清楚这段代码有什么问题吗?谢谢:)

5 个答案:

答案 0 :(得分:4)

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

使用fopen()和fprintf()将数字打印到文件中,以便全部检查。

答案 1 :(得分:3)

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

假设您使用的是Linux,请运行您的可执行文件,如

  

./ a.out> test1.txt的

然后使用vi

打开并检查新创建的文件
  

vim test1.txt

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

答案 2 :(得分:2)

您可以通过按顺序打印数字而不用新行确认来使自己更容易一些。这将消除滚动问题:

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

答案 3 :(得分:2)

尝试在printf()中添加空格,而不是像

那样添加换行符'\n'
printf("%d " , counter) ;

答案 4 :(得分:1)

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