在C语言中打印一个二维数组

16

如何在C语言中使用scanf进行用户输入时,用for循环打印名为grid[][]的2D数组?

假设用户输入3 5,则输出为:

.....
.....
.....

这是我迄今为止编写的代码(我是新手):

#include <stdio.h>

#define MAX 10

int main()
{
    int grid[MAX][MAX];
    int row, col;
    int i,j;

    printf("Please enter your grid size: ");
    scanf("%d %d", &row, &col);

    for (i=0; i<MAX; i++)
        for //i gave up here


}

这只是我任务的一小部分:

Enter number of rows and columns followed by list of words (hit enter twice to end list): 10 15
quick
brown
fox
jumped
over
lazy
dog

00  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
01  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
02  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
03  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
04  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
05  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
06  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
07  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
08  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
09  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 
    0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 
  0. quick
  1. brown
  2. fox
  3. jumped
  4. over
  5. lazy
  6. dog

代码中允许并应包含的函数:字符串函数 - strlen()、strcpy()、strcat()、strchr()、strcmp()、strstr()

必须使用二维数组

必须使用fgets获取单词。输出必须与确切格式匹配。


2
这是明天的作业吗? - Anthony Forloney
1
你是否有自己编写的代码却无法运行?请向我们展示你尝试过的内容,以便我们看到你的困境所在。 - John Kugelman
我添加了我的代码,但我不认为它有什么区别。 - wello horld
2
是的,它表明您已经自己做出了一些努力! - Cam
你需要先填充网格吗?如果是这样,用什么来填充呢?还是说网格已经被填充好了,只需要打印其中的一部分?或者两者都需要结合使用吗?仅仅为了打印一个点阵图案而使用二维数组有些奇怪。 - NomeN
显示剩余2条评论
3个回答

19
这有帮助吗?
#include <stdio.h>

#define MAX 10

int main()
{
    char grid[MAX][MAX];
    int i,j,row,col;

    printf("Please enter your grid size: ");
    scanf("%d %d", &row, &col);


    for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            grid[i][j] = '.';
            printf("%c ", grid[i][j]);
        }
        printf("\n");
    }

    return 0;
}

是的,你基本上说到了点子上。谢谢!现在是时候列出那个可怕的单词列表了... - wello horld
2
@你好世界,请尝试从你的教科书中做一些小练习,或者在网上找一个绝对初学者教程并完成那些练习。这是最好的学习方法。额外提示,谷歌是你的朋友!例如,关于fgets和代码示例的好页面是:http://www.cplusplus.com/reference/clibrary/cstdio/fgets/。 - NomeN

0
...
for(int i=0;i<3;i++){ //Rows
for(int j=0;j<5;j++){ //Cols
 printf("%<...>\t",var);
}
printf("\n");
}
...

考虑到 <...> 将是 d、e、f、s、c 等数据类型... X)


0
首先,您需要输入两个数字num_rows和num_columns,可以使用argc和argv。接着使用for循环打印点。
int j=0;
int k=0;
for (k=0;k<num_columns;k++){
   for (j=0;j<num_rows;j++){
       printf(".");
   }
 printf("\n");
 }

你稍后需要用其他字符替换这个点。


给出的两个答案很好,但它们没有使用二维数组网格...? - wello horld
然而,它们确实展示了如何设置嵌套循环以便您可以遍历网格。我们不能在良心上直接给出答案。 - Michael Dorgan
真的吗?:( 我还有很多问题要问...这只是我的作业的一小部分。 - wello horld
我们希望引导您朝正确的方向前进,而不仅是直接回答您的任务 :) 如果可能的话,请在原始帖子中包含问题。 - shuttle87

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接