[英]Filling two dimensional array C
#include <stdio.h>
int main()
{
//Variables
int x=0,y=0;
int my_data[7][7];
for (x=0;x<9;x++) {
printf("Enter rows:");
scanf("%i",&x);
// printf("%i\n",my_data[x][y]);
}
for(y=0;y<9;y++) {
printf("Enter columns: ");
scanf("%i", &y);
//printf("%i\n",my_data[x][y]);
}
for(y=0;y<9;y++) {
printf("%i\n",my_data[0][y]);
}
return 0; //Return process complete.
}
我做错了什么? 当我输入1,2,3,4,5,6,7,8; 1,2,3,4,5,6,7,8我回来了:
3612392
2686632
1966142592
3604480
0
1966142601
1825884643
4
3612396
马上有几个问题:
int my_data[8][8]
; #define FOO 8
而不是一遍又一遍地使用数字作为数组的大小 for (x=0;x<8;x++)
。 (再次,请参见我关于使用定义的常量作为大小的注释) 您可以使用一个嵌套在另一个循环中的循环:
#define SIZE 8
for (i = 0; i < SIZE; i++) {
for (j = 0; j < SIZE; j++) {
printf("(%d,%d): ", i+1, j+1);
scanf("%d", &value);
array[i][j] = value;
}
}
for (x=0;x<9;x++) {
printf("Enter rows:");
scanf("%i",&x);
// printf("%i\n",my_data[x][y]);
}
这里发生的是您更改x
的值。 您不会在阵列上保存任何内容。
对于y
同样
另外,您应该从0
到6
(含)进行迭代
尝试
int i;
for(i = 0 ; i < 7 ; i++)
{
scanf("%d" , &my_data[0][x]);
}
要么 :
int row , col;
for (row=0; row<7; row++)
{
for (col=0; col<7; col++)
{
scanf("%d" , &ticTacToeBoard[row][col]);
}
}
您看到的是数组在声明时所具有的值。 这样做的原因是,当您在C
声明变量而不对其进行初始化时,如您的情况,您的程序仅使用足够的内存将数据存储到内存中,但没有将该内存设置为0
,因此可以看到内存来自以前的用法。
int my_data[7][7];
是7 x 7的数组。 使用int my_data[8][8];
8 x 8。
my_data
是一个数组,它的空间为49 int
,而不是64!
在for循环中,您要使用scanf
及其地址来更改循环控制变量本身!
我想你要:
#include <stdio.h>
#define ROWS 8
#define COLUMNS 8
int main(void) {
int my_data[ROWS][COLUMNS];
int rows[ROWS];
int cols[COLUMNS];
size_t i, row, col;
/* input rows */
printf("Enter rows: ");
fflush(stdout);
for (i = 0; i < ROWS; i++) scanf("%d", &rows[i]);
/* input columns */
printf("Enter cols: ");
fflush(stdout);
for (i = 0; i < COLUMNS; i++) scanf("%d", &cols[i]);
/* calculate sums */
for (row = 0; row < ROWS; row++) {
for (col = 0; col < COLUMNS; col++) {
my_data[row][col] = rows[row] + cols[col];
}
}
/* print results */
for (row = 0; row < ROWS; row++) {
for (col = 0; col < COLUMNS; col++) {
printf("%d ", my_data[row][col]);
}
puts("");
}
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.