填充二维数组C.

时间:2011-03-02 00:24:06

标签: 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. 声明一个8X8整数数组my_data
  2. 提示用户填写8X8数组my_data
  3. 的数据
  4. 打印每行所有元素的总和
  5. 打印8X8数组中所有元素的总和
  6. 打印8x8数组对角线中所有元素的总和。
  7. 我做错了什么?当我输入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
    

5 个答案:

答案 0 :(得分:4)

马上就有几个问题:

  • 数组为7x7,您希望它为int my_data[8][8];
  • 不要反复使用数组大小​​的数字,而是定义常量#define FOO 8
  • 循环没有正确限制,应该是for (x=0;x<8;x++)。 (再次,请参阅我对大小使用定义常量的说明)
  • 您没有将值保存到数组中,而是将其保存到迭代器变量中。
  • 使用两个单独的for循环,您将无法填充整个表,重新考虑此结构,因为您可能必须使用嵌套循环。

答案 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;
}