【问题标题】:Why is my 2D array only printing out one value?为什么我的二维数组只打印出一个值?
【发布时间】:2014-04-03 23:34:29
【问题描述】:

我正在制作一个单词搜索程序,并且处于起步阶段。在用户输入进入单词搜索的单词之前,我试图让用户输入大小为“+”的网格。当我运行程序时,它只打印出一个'+'。为什么它只打印一个值以及如何调整我的代码以使每个值都表示为“+”?我是一名编程初学者,所以任何建议都会有所帮助..谢谢。

#include<stdio.h>

void printmatrix(char matrix[][20],int);

int main(void)
{
   char matrix[20][20]= {{'+'}};
   int x=1;

       printf("How large would you like the puzzle to be (between 10 and 20):\n");

   scanf("%d",&x);

   printmatrix(matrix,x);

   return 0;

}

/********************************************

 Function Name: Printmatrix...this function prints out an empty matrix of the grid size the user asked for

 Inputs: Variables x and y...the row and column variables the user inputted

 Outputs: Empty matrix filled with '+' thats the size the user asked for

********************************************/

void printmatrix(char matrix[][20],int x)
{
   int i,j;

   printf("Empty Puzzle:\n");

   for (i=0;i<x;i++)
   {
      for (j=0;j<x;j++)
      {
          printf("%c", matrix[i][j]);
      }
      printf("\n");
   }

}

【问题讨论】:

    标签: c arrays 2d


    【解决方案1】:

    由于您使用 char 数组,您可以使用 memset 将数组的值设置为相同的值。

    memset( matrix , '+' , sizeof( matrix ) ) ;
    

    你编码

    char matrix[20][20]= {{'+'}};
    

    只会做

    matrix[0][0] = '+' ;
    

    并且数组的其余部分将被设置为 0。

    【讨论】:

      【解决方案2】:

      您可能想要编写嵌套循环来将矩阵chars 初始化为“+”:

      char matrix[20][20];
      int i;
      int j;
      
      /* Fill matrix with '+' */
      for (i = 0; i < 20; i++) {
          for (j = 0; j < 20; j++) {
              matrix[i][j] = '+';
          }
      }
      

      【讨论】:

      • 我之前已经这样做了,但是在程序的后面步骤中,如果有意义的话,我必须使用该矩阵中的特定值来插入单词
      猜你喜欢
      • 1970-01-01
      • 2022-01-13
      • 2014-03-25
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      相关资源
      最近更新 更多