使用用户输入在C语言中开发二维阵列?
我正在练习数组,我对这个问题有点困惑,它只打印输入的一个数字,而不是用户输入的不同数字的混合,我到底做错了什么使用用户输入在C语言中开发二维阵列?,c,C,我正在练习数组,我对这个问题有点困惑,它只打印输入的一个数字,而不是用户输入的不同数字的混合,我到底做错了什么 #include <stdio.h> int main () { int a; int b; int i; int j; printf(" Please enter a value for the first array"); scanf(" %d", &a); printf(" Please
#include <stdio.h>
int main ()
{
int a;
int b;
int i;
int j;
printf(" Please enter a value for the first array");
scanf(" %d", &a);
printf(" Please enter a value for the second array");
scanf(" %d", &b);
double array[a][b];
for( i = 0; i< a; i++)
{
for( j=0; j< b; j++)
{
printf(" enter values or the arrays\n");
scanf(" %lg", &array[a][b]);
}
}
for( i = 0; i< a; i++)
{
for( j=0; j< b; j++)
{
printf("%lg", array[a][b]);
}
printf("\n");
}
return 0;
}
#包括
int main()
{
INTA;
int b;
int i;
int j;
printf(“请为第一个数组输入一个值”);
scanf(“%d”和“&a”);
printf(“请为第二个数组输入一个值”);
scanf(“%d”和“b”);
双数组[a][b];
对于(i=0;i
更改为
scanf(“%lg”和数组[i][j])代码>
反而
scanf(“%lg”和数组[a][b])代码>
同样适用于pritntf
。它应该
printf("%lg", array[i][j]);
改变
到
和变化
printf("%lg", array[a][b]);
到
因为a
和b
在循环内没有改变。这里a和b是二维数组中的行/列数。
array[0][0]
表示第一行第一列单元格,array[0][1]
表示第一行第二列单元格,依此类推,array[a][b]
表示a+1行b+1列单元格。在循环中,不断更改i和j的值,但a和b始终相同。然而,每次您输入或输出数组[a][b]
。因此,您会不断地一遍又一遍地覆盖和读取同一元素。相反,使用循环中正在更改的变量,即i和j
而不是:
scanf(" %lg", &array[a][b]);
printf(" %lg", array[a][b]);
使用:
数组下标在声明中的含义与在其他代码中的含义不同。在声明中,括号内的整数告诉编译器要分配多少内存;在其他代码中,它告诉编译器要取消引用数组的哪个元素
因此,您需要在scanf()调用中使用正在运行的索引,因此请替换
scanf(" %lg", &array[a][b]);
与
注意,代码如下
int foo[count];
foo[count] = 7;
始终是一个错误,因为您正在为count
元素分配空间,这些元素使用从0
到count-1
的索引进行访问。访问foo[count]
会在分配之后操纵内存,可能会在内存中的该位置上重击重要数据。出现这种错误后,可能会发生任何情况。它会打印相同的值,因为for循环错误:
for( i = 0; i< a; i++) {
for( j=0; j< b; j++){
printf(" enter values or the arrays\n");
scanf(" %lg", &array[a][b]);
}
}
(i=0;i{
对于(j=0;j
在每个循环中,将值保存在相同的数组位置。只需将&Array[a][b]更改为&Array[i][j],如下所示:
for( i = 0; i< a; i++) {
for( j=0; j< b; j++) {
printf(" enter values or the arrays\n");
scanf(" %lg", &array[i][j]);
}
}
(i=0;i
对于(j=0;j
对所有for循环执行相同的操作。希望这对你有所帮助我想知道为什么人们看到了答案,却仍然想回答正确的答案same@nightshade查看回复发布时间并检查谁提前发布。我知道。。。这就是为什么我没有在别人的评论。。。我知道你先写了,5分钟后又有人来写同样的东西@杰耶什
scanf(" %lg", &array[a][b]);
scanf(" %lg", &array[i][j]);
int foo[count];
foo[count] = 7;
for( i = 0; i< a; i++) {
for( j=0; j< b; j++){
printf(" enter values or the arrays\n");
scanf(" %lg", &array[a][b]);
}
}
for( i = 0; i< a; i++) {
for( j=0; j< b; j++) {
printf(" enter values or the arrays\n");
scanf(" %lg", &array[i][j]);
}
}