问题描述
- 为什么我在一个c程序末尾加入一段代码后前面的代码输出内容没了?加代码 后 前 程序如下
-
代码有点长,我只想知道加代码后变化的原因
#include"stdio.h"
static int k = 0;
int h[120][5] = { 0 };
int t, g, n, m, i=5, j=1, c;
void output(int b[5])
{
int p;
for (p = 0; p <= 4; p++)
{
printf("%d ", b[p]);
h[4 * (j - 1) + 6 - i][p] = b[p];
}k++; printf("n");
}
int main(void)
{
int a[5] = { 1, 2, 3, 4, 5 };for (j = 1; j <= 30; j++) { for (i = 5; i >= 2; i--) { switch (i) { case 5: t = a[4], a[4] = a[0], a[0] = t, g = a[3], a[3] = a[1], a[1] = g; output(a);; break; case 4: t = a[0], a[0] = a[3], a[3] = t, g = a[2], a[2] = a[1], a[1] = g; output(a); break; case 3: t = a[2], a[2] = a[0], a[0] = t; output(a); break; case 2: t = a[0], a[0] = a[1], a[1] = t; output(a); break; default: printf("wrong!!!!!!!n"); break; } } } printf("%dn", k); for (n = 0; n <= 118; n++) { for (m = n + 1; m <= 119; m++) { if (h[n][0] == h[m][0] && h[n][1] == h[m][1] && h[n][2] == h[m][2] && h[n][3] == h[m][3] && h[n][4] == h[m][4]) { printf("n=%d,m=%dn", n, m); printf("%d,%d,%d,%d,%dn", h[n][0], h[n][1], h[n][2], h[n][3], h[n][4]); } } }
}
#include"stdio.h"
static int k = 0;
int h[120][5] = { 0 };
int t, g, n, m, i=5, j=1, c;
void output(int b[5])
{
int p;
for (p = 0; p <= 4; p++)
{
printf("%d ", b[p]);
h[4 * (j - 1) + 6 - i][p] = b[p];
}k++; printf("n");
}
int main(void)
{
int a[5] = { 1, 2, 3, 4, 5 };for (j = 1; j <= 30; j++) { for (i = 5; i >= 2; i--) { switch (i) { case 5: t = a[4], a[4] = a[0], a[0] = t, g = a[3], a[3] = a[1], a[1] = g; output(a);; break; case 4: t = a[0], a[0] = a[3], a[3] = t, g = a[2], a[2] = a[1], a[1] = g; output(a); break; case 3: t = a[2], a[2] = a[0], a[0] = t; output(a); break; case 2: t = a[0], a[0] = a[1], a[1] = t; output(a); break; default: printf("wrong!!!!!!!n"); break; } } } printf("%dn", k);
}
解决方案
如果你用的是Windows,在控制台窗口,点左上角的图标,菜单里面点属性。把缓冲区的大小设置大一些就可以了。
解决方案二:
75 3 5 1 2 4
76 5 3 1 2 4
77 4 2 1 3 5
78 3 1 2 4 5
79 2 1 3 4 5
80 1 2 3 4 5
81 5 4 3 2 1
82 2 3 4 5 1
83 4 3 2 5 1
84 3 4 2 5 1
85 1 5 2 4 3
86 4 2 5 1 3
87 5 2 4 1 3
88 2 5 4 1 3
89 3 1 4 5 2
90 5 4 1 3 2
91 1 4 5 3 2
92 4 1 5 3 2
93 2 3 5 1 4
94 1 5 3 2 4
95 3 5 1 2 4
96 5 3 1 2 4
97 4 2 1 3 5
......
.....
.....
689 2,5,4,1,3
690 n=89,m=109
691 3,1,4,5,2
692 n=90,m=110
693 5,4,1,3,2
694 n=91,m=111
695 1,4,5,3,2
696 n=92,m=112
697 4,1,5,3,2
698 n=93,m=113
699 2,3,5,1,4
700 n=94,m=114
701 1,5,3,2,4
702 n=95,m=115
703 3,5,1,2,4
704 n=96,m=116
705 5,3,1,2,4
706 n=97,m=117
707 4,2,1,3,5
708 n=98,m=118
709 3,1,2,4,5
710 n=99,m=119
711 2,1,3,4,5
已经达到711行输出,前面哪几十行早就被刷下去啦!
建议你使用sleep()输出一行睡眠一会,你就见到你没加代码前的结果啦!
或者使用流从定向到一个文本中,查看文本就明白啦!
希望能帮到你!
解决方案三:
是命令行窗口的缓冲区太小了吧?你可以改一下命令行窗口的缓冲区大小,像我是把它改成1000行的,打开命令行窗口的属性改一下就好了,希望对你有用。
时间: 2025-01-01 14:45:49