我正在尝试打印出我的程序的2D数组,但是输出中途开始(在数据包18处,它不会打印出“数据包18:”。但之后它会将其余部分正确打印到最后发生了什么?因为我已经将计数器j初始化为0,我不明白为什么它从18开始而不显示文本。我做错了什么?
int i;
int j;
int s[7][50];
i = 0;
for (j = 0; j < 50; j++)
{
printf("Packet %d:\n", j + 1);
for (i = 0; i < 7; i++)
{
printf("Value of line %d: %d", i + 1, s[i][j]);
printf("\n");
}
printf("\n");
}
答案 0 :(得分:4)
如果你在控制台窗口中运行它,并依靠控制台窗口的回滚来查看程序的输出,那么最有可能发生的是程序的输出对于回滚历史来说太长了。
尝试将输出重定向到文件。如果您在Windows,Linux或MacOS X下的命令提示符下运行它,您可以这样做:
myprogram > file.txt
(如果您使用的是Linux或MacOS X,则可能需要说./myprogram > file.txt
。)
如果你在文本编辑器中检查file.txt
,我认为你会看到你的程序的完整输出。
答案 1 :(得分:2)
此代码包含一些初始化,并产生我期望的输出:
#include <stdio.h>
int main(void)
{
int i;
int j;
int s[7][50];
for (i = 0; i < 7; i++)
{
for (j = 0; j < 50; j++)
s[i][j] = 100 * (i + 1) + j + 1;
}
for (j = 0; j < 50; j++)
{
printf("Packet %d:\n", j + 1);
for (i = 0; i < 7; i++)
{
printf("Value of line %d: %d", i + 1, s[i][j]);
printf("\n");
}
printf("\n");
}
return 0;
}
部分示例输出:
Packet 1:
Value of line 1: 101
Value of line 2: 201
Value of line 3: 301
Value of line 4: 401
Value of line 5: 501
Value of line 6: 601
Value of line 7: 701
Packet 2:
Value of line 1: 102
Value of line 2: 202
Value of line 3: 302
Value of line 4: 402
Value of line 5: 502
Value of line 6: 602
Value of line 7: 702
Packet 3:
Value of line 1: 103
Value of line 2: 203
Value of line 3: 303
Value of line 4: 403
Value of line 5: 503
Value of line 6: 603
Value of line 7: 703
Packet 4:
Value of line 1: 104
Value of line 2: 204
Value of line 3: 304
Value of line 4: 404
Value of line 5: 504
Value of line 6: 604
Value of line 7: 704
...
Packet 47:
Value of line 1: 147
Value of line 2: 247
Value of line 3: 347
Value of line 4: 447
Value of line 5: 547
Value of line 6: 647
Value of line 7: 747
Packet 48:
Value of line 1: 148
Value of line 2: 248
Value of line 3: 348
Value of line 4: 448
Value of line 5: 548
Value of line 6: 648
Value of line 7: 748
Packet 49:
Value of line 1: 149
Value of line 2: 249
Value of line 3: 349
Value of line 4: 449
Value of line 5: 549
Value of line 6: 649
Value of line 7: 749
Packet 50:
Value of line 1: 150
Value of line 2: 250
Value of line 3: 350
Value of line 4: 450
Value of line 5: 550
Value of line 6: 650
Value of line 7: 750
答案 2 :(得分:0)
每一件事情都是对的,唯一的问题就是错误地将你的for()
循环置于错误的位置,或者你现在根据你的程序对2d阵列不太了解
int s[7][50];
平均7行50列。完整的图片是七个一维阵列,每个阵列有五十个元素。现在要打印其数据,代码是
1 int i,j;
2 for(i=0;i<7;i++)
3 for(j=0;j<50;j++)
4 printf("s[%d][%d]=%d \n",i,j,s[i][j]);
第1行:声明两个局部变量
第2行:这里我们首先逐个迭代第0个数组及其50个元素
我们从第3行得到的。
第3行:现在,对于每个1d数组,我们使用第二个for
循环来表示每个元素
第4行:printf
函数很简单,也可以打印值及其位置。
如果你能看到这个图表,那就没关系了。