我正在学习上课。我已经完成了所有工作,但是我的环路并不能很好地工作,我应该怎么做才能解决它?
在第4个for循环内部,第一个循环(a)从9开始,第二个循环(b)从3开始。为什么?
#include <stdio.h>
#include <conio.h>
int main () {
int i,j,a,b;
for(a=0; a<=10; a++){
for(b=0; b<=10; b++){
for(i=0; i<=3; i++){
for(j=0; j<=3; j++){
printf("a: %d -- b: %d -- i: %d -- j: %d \n",a,b,i,j);
}//--j for--
}//--i for--
}// --b for--
}// --a for--
getch ();
return 0;
}
答案 0 :(得分:2)
你的程序很好,但它很快打印出1936行输出,所以你只能看到最后25行并向后滚动,你无法回到输出的开头,因为Windows终端似乎非常有限反向滚动功能,可能是150行。
您可以尝试在Windows设置页面中增加反向滚动功能(我多年没有使用Windows,我不知道该怎么做,也不知道是否可以这样做。)
还有其他方法可以说服自己代码没问题:
将输出重定向到文件并加载该文件:打开终端窗口并在终端中键入myprogram > output.txt
。由于getch()
函数末尾的main
,您同意需要按键盘。事实上,你可以完全删除这一行。正如manetsus所提到的,可以在第一个freopen("output.txt", "w", stdout);
循环之前调用for
来强制重定向。
通过more
管道输出。再次打开终端窗口并键入myprogram | less
。拨打getch()
也会适得其反。
将getch()
移动到第二个循环的末尾(就在}// --b for--
之前)。该程序一次将产生16行并等待密钥。
答案 1 :(得分:1)
您正在控制台中看到输出,并且每个控制台都提供有限的缓冲区内存。
因此,先前的输出已生成,但它们会在您显示的安慰中被截断。
您可以通过添加以下行作为main()函数的第一行,在名为output.txt
的文件中获取完整输出:
freopen("output.txt","w",stdout);
或者,从linux控制台,您可以编写以下命令,如@BLUEPIXY在评论中所述:
./a.out > out.txt