关于输出较长 行数较多的结果不能全部显示 屏幕缓存区问题

这是我自己根据书上的思路自己编写的具体代码 求2000-2500的闰年
原本没有这一句: else printf("%d不是闰年 ",a);
一切正常,但是当加了这一句,点击允许,直接显示如图不是从2000开始的,而是2205,这是为什么如果不加《
else printf("%d不是闰年 ",a);》,是一切正常的。

具体代码:
#include<stdio.h>
int main (void)
{
int a=2000;

while(a<=2500)
{
if(
a%4==0&&a%100!=0
||

a%100==0&&a%400==0
)
printf("闰年是%d ",a);
else
printf("%d不是闰年 ",a);
a++;
}
return 0;

}

运行后为什么是从2205开始的呢?前面的2000至2204呢?
个人没从代码找出问题啊

这是因为 屏幕缓存不够了,要设置大一点

————————————————————————————————————————————————————————————————

应急办法 有个应急的办法就是在头文件中加个 #include<Windows.h>

然后在main函数中添加下面这一段

SMALL_RECT winPon={0,0,200,100}; /*初始化大小*/

HANDLE con=GetStdHandle(STD_OUTPUT_HANDLE); COORD buf={200,700}; /*缓冲区宽度和长度,700就是那个高度的缓冲,这样就够用了应该*/ SetConsoleWindowInfo(con,1,&winPon);

SetConsoleScreenBufferSize(con,buf);

或者在弹出的显示框上右键 默认值  布局  把高度改为500以上,如果不够继续增加

最后成果

正常从2000开始了

原文地址:https://www.cnblogs.com/taoyuan7788/p/3185112.html