【发布时间】:2016-02-01 15:43:31
【问题描述】:
我正在为我正在参加的 C 编程课程完成一项实验室作业。我在本地 Cygwin 目录中编写了代码,使用 gcc 编译它,生成的可执行文件完全按照我想要的方式运行,没有任何错误。
当我将我的代码复制到我学校的 UNIX 服务器并使用 gcc 编译它时,我没有收到任何错误,但是当我尝试运行它时,什么也没有发生。
我尝试做gcc 2darray.c -Wall -pedantic,这就是返回的内容:
2darray.c: In function 'main':
2darray.c:5:3: warning: missing braces around initializer [-Wmissing-braces]
2darray.c:5:3: warning: (near initialization for 'M[0]') [-Wmissing-braces]
2darray.c:5:24: warning: C++ style comments are not allowed in ISO C90 [enabled by default]
2darray.c:5:24: warning: (this will be reported only once per input file) [enabled by default]
这些错误提到了一些关于初始化数组M 的内容,但我认为初始化它的方式没有任何问题。这是我要编译的代码:
#include <stdio.h>
int main(void)
{
int M[10][10] = {0}; // creating a 10x10 array and initializing it to 0
int i, j; // loop variables
int sum[10] = {0}; // creating an array to hold the sums of each column of 2d array M
for (i = 1; i < 10; i++) // assigning values to array M as specified in directions
{
for (j = i - 1; j < i; j++)
{
M[i][j] = -i;
M[i][j+1] = i;
M[i][j+2] = -i;
}
}
for (i = 0; i < 10; i++) // printing array M
{
for(j = 0; j < 10; j++)
{
printf("%3d", M[i][j]);
}
printf("\n");
}
printf("\n");
for (i = 0; i < 10; i++) // calculating sum of each column
{
for (j = 0; j < 10; j++)
{
sum[i] = M[j][i] + sum[i];
}
printf("%3d", sum[i]); // printing array sum
}
return 0;
}
我尝试在变量声明和第一个 for 循环之间插入 printf 语句并打印语句,所以我的循环中可能出现问题?
如果相关,以下是我的 Cygwin 目录中的输出以及我学校的 UNIX 目录中的输出:
0 0 0 0 0 0 0 0 0 0
-1 1 -1 0 0 0 0 0 0 0
0 -2 2 -2 0 0 0 0 0 0
0 0 -3 3 -3 0 0 0 0 0
0 0 0 -4 4 -4 0 0 0 0
0 0 0 0 -5 5 -5 0 0 0
0 0 0 0 0 -6 6 -6 0 0
0 0 0 0 0 0 -7 7 -7 0
0 0 0 0 0 0 0 -8 8 -8
0 0 0 0 0 0 0 0 -9 9
-1 -1 -2 -3 -4 -5 -6 -7 -8 1
【问题讨论】:
-
尝试将
int M[10][10] = {0};更改为int M[10][10] = {{0}}; -
我只是尝试修复警告。我仍在尝试了解您的问题。您可以更好地解释“可执行文件不起作用”的含义。
-
并使用选项
-std=c99 -
“不起作用”不是问题描述。
-
M[i][j+2] = -i;: 当i : 9时,越界。
标签: c gcc multidimensional-array