#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
答案 0 :(得分:4)
马上就有几个问题:
int my_data[8][8]
; #define FOO 8
for (x=0;x<8;x++)
。 (再次,请参阅我对大小使用定义常量的说明)答案 1 :(得分:2)
你可以使用一个嵌套在另一个循环中的循环:
#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;
}
}
答案 2 :(得分:1)
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
因此,看看内存的内容来自以前的用法。
答案 3 :(得分:0)
int my_data[7][7];
是一个7 x 7阵列。使用int my_data[8][8];
表示8 x 8。
答案 4 :(得分:-1)
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;
}