C 我试图构建一个2*2数组,但我的程序需要5个输入。为什么?
我无法将输入语句中遗漏的地方归零。我构建它是为了获取四个值作为输入,但它又多了一个值 操纵数组项以检查是否存储了第五个值。基本的东西C 我试图构建一个2*2数组,但我的程序需要5个输入。为什么?,c,for-loop,C,For Loop,我无法将输入语句中遗漏的地方归零。我构建它是为了获取四个值作为输入,但它又多了一个值 操纵数组项以检查是否存储了第五个值。基本的东西 #include <stdio.h> int main() { int i,j,a[2][2]; for(i=1;i<=2;i++) { for(j=1;j<=2;j++) scanf("%d\t",&a[i][j]); } printf("\n%d\t%d\n%d\t
#include <stdio.h>
int main()
{
int i,j,a[2][2];
for(i=1;i<=2;i++)
{
for(j=1;j<=2;j++)
scanf("%d\t",&a[i][j]);
}
printf("\n%d\t%d\n%d\t%d", a[1][1],a[1][2],a[2][1],a[2][2]);
}
#包括
int main()
{
int i,j,a[2][2];
对于(i=1;i你已经声明了这一点
int a[2][2];
它有四个项目,a[0][0]
,a[0][1]
,a[1][0]
和a[1][1]
但是,您从1
开始编制索引,然后上升到2
,因此,您会越界,这是一种未定义的行为。
任何事情都有可能发生
更改您的循环,即:
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
// as you were
for(i=0;i您已经声明了这一点
int a[2][2];
它有四个项目,a[0][0]
,a[0][1]
,a[1][0]
和a[1][1]
但是,您从1
开始编制索引,然后上升到2
,因此,您会越界,这是一种未定义的行为。
任何事情都有可能发生
更改您的循环,即:
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
// as you were
用于(i=0;i#包括
int main()
{
int i,j,a[2][2];
对于(i=0;i#包括
int main()
{
int i,j,a[2][2];
对于(i=0;i)当您声明一个包含两个条目的数组时,如a[2]
,唯一有效的索引是0和1。但是循环和printf使用索引1和2。一个解决方案是将数组变大int a[3][3]
。在C中,数组从0开始,而不是从1开始,因此声明的数组a[2][2]
包含a[0][0]
到a[1][1]
到a[1][2]
和a[2][1]
和a[2][2]
不存在。您的数组有4个元素:a[0][0]
、a[0][1]
、a[1][0]和a[1][1]
。谢谢你的建议……但它似乎不是这样的。这是我们在for循环中定义的,因为我能够获得预期的结果。当我打印时,a[0][0]…a[1][1],除了a[1][1]之外的所有值都有零。请阅读。当您声明一个包含两个条目的数组时,如a[2]
,唯一有效的索引是0和1。但是循环和printf使用索引1和2。一个解决方案是将数组变大inta[3][3]
。在C中,数组从0开始,而不是从1开始,因此声明的数组a[2][2]
包含a[0][0]
直到a[1][1]
a[1][2][1]
和a[2][2]
不存在。您的数组有4个元素:a[0][0]
、a[0][1]
、a[1][0]
和a[1][1]
。谢谢您的建议……但它似乎不是那样工作的。这是我们在for循环中定义的,因为我能够获得预期的结果。打印时,[0][0]…a[1][1],除a[1][1]之外的所有值都有零。请阅读。非常感谢。该选项卡有一些“\t”麻烦。我还有一个q。当我在同一个程序(int I,j,m,n,a[2][2],b[2][2]中用“\t”多加一个矩阵时,表示b[0][0]中的第一个值出现在a[1][1]之后输入的第五个值。然后它存储在哪里?(我应该指定代码吗?)非常感谢..该选项卡给一些'\t'带来了麻烦。我还有一个问题。当我在同一个程序(int i,j,m,n,a[2][2],b[2][2]中用'\t'表示b[2][2]再添加一个矩阵时,在a[1][1]之后输入的第五个值作为b[0][0]中的第一个值出现。那么它存储在哪里?(我应该指定代码吗?)感谢您的帮助。当我尝试使用我的原始程序时,我的意思是(i=1;i当您尝试使用原始程序时?您是否对printf
语句进行了排序?如果您有核心转储,您可以将其加载到调试器中,以查看哪里出了问题。请集中精力确保您没有尝试访问[2]a
中的
-尽管是其中一个索引。感谢您的帮助。当我尝试使用我的原始程序时,我的意思是(i=1;i当您尝试使用原始程序执行何操作时?您是否对printf
语句进行了排序?如果您有一个核心转储,您可以将其加载到调试器中,以查看哪里出了问题。请集中精力确保您不会尝试访问a
中的[2]
-以获取这两个索引。