Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言编程中的嵌套循环_C - Fatal编程技术网

C语言编程中的嵌套循环

C语言编程中的嵌套循环,c,C,我对C编程中的嵌套循环有一些问题 我试着这样打印列表: | |0|1|2|3|4|5|6|7|8|9| |0| | | | | | | | | | | |1| | | | | | | | | | | |2| | | | | | | | | | | |3| | | | | | | | | | | |4| | | | | | | | | | | |5| | | | | | | | | | | |6| | | | | | | | | | | |7| | | | | | | | | |

我对C编程中的嵌套循环有一些问题 我试着这样打印列表:

 | |0|1|2|3|4|5|6|7|8|9|
 |0| | | | | | | | | | |
 |1| | | | | | | | | | |
 |2| | | | | | | | | | |
 |3| | | | | | | | | | |
 |4| | | | | | | | | | |
 |5| | | | | | | | | | |
 |6| | | | | | | | | | |
 |7| | | | | | | | | | |
 |8| | | | | | | | | | |
 |9| | | | | | | | | | |
但当我键入代码并显示时,出现了一些问题:

| |0|1|2|3|4|5|6|7|8|9|
|0|0|0|0|0|0|0|0|0|0|0|
|1|0|1|1|1|1|1|1|1|1|1|
|2|0|2|2|2|2|2|2|2|2|2|
|3|0|3|3|3|3|3|3|3|3|3|
|4|0|4|4|4|4|4|4|4|4|4|
|5|0|5|5|5|5|5|5|5|5|5|
|6|0|6|6|6|6|6|6|6|6|6|
|7|0|7|7|7|7|7|7|7|7|7|
|8|0|8|8|8|8|8|8|8|8|8|
|9|0|9|9|9|9|9|9|9|9|9|
这是我的代码:

void displayBoard(Cell board[BOARD_HEIGHT][BOARD_WIDTH], Player * player)
{
    int i, j;
    printf("| ");
    for (j = 0; j < BOARD_WIDTH; j++)
    {
        printf("|%d",j);
    }

    printf("|\n");

    for (i = 0; i < BOARD_HEIGHT; i++)
    {
        for (j = 0; j < BOARD_WIDTH; j++)
        {
            printf("|%d",i);
            if (j == 0)
            {
                printf("|%d",j);
            }
        }
        printf("|\n");
    }
    printf("\n");
}
void显示板(单元板[板高][板宽],播放器*播放器)
{
int i,j;
printf(“|”);
对于(j=0;j

有人可以帮你解决这个问题:只有一行一列,另一行是空的。

你应该这样编码:

void displayBoard(Cell board[BOARD_HEIGHT][BOARD_WIDTH], Player * player)
{
     int i, j;
    printf("| ");
    for (j = 0; j < BOARD_WIDTH; j++)
    {
        printf("|%d",j);
    }

    printf("|\n");

    for (i = 0; i < BOARD_HEIGHT; i++)
    {
        for (j = 0; j < BOARD_WIDTH; j++)
        {
            if (j == 0)
            {
                printf("|%d",i);
            }
            printf("| ");
        }
        printf("|\n");
    }
    printf("\n");
}
  • j==0时的数字打印与空白打印之间应反向:

    if (j == 0)
    {
        printf("|%d",i); //you want to print i here, not j
    }
    printf("| "); //put the blank printing after the number
    

  • 在内环的主体中,任何一点都不能打印空格。而是打印
    i
    的值,即列号

            printf("|%d",i);
            if (j == 0)
            {
                printf("|%d",j);
            }
    
    相反,仅在第一次迭代时打印
    i
    ,每次打印空格:

            if (j == 0) {
                printf("|%d",i);
            }
            printf("| ");
    
    输出:

    | |0|1|2|3|4|5|6|7|8|
    |0| | | | | | | | | |
    |1| | | | | | | | | |
    |2| | | | | | | | | |
    |3| | | | | | | | | |
    |4| | | | | | | | | |
    |5| | | | | | | | | |
    |6| | | | | | | | | |
    |7| | | | | | | | | |
    |8| | | | | | | | | |
    

    正确完成此操作的关键是将重复逻辑(空白单元格)封闭在循环中,同时将专用逻辑限制在循环外:

    void displayBoard(int height, int width)
    {
        int i, j;
    
        printf("| ");
        for (j = 0; j < width; j++) {
            printf("|%d", j);
        }
        printf("|\n");
    
        for (i = 0; i < height; i++) {
            printf("|%d", i);
            for (j = 0; j < width; j++) {
                printf("| ");
            }
            printf("|\n");
        }
    }
    
    void显示板(内部高度,内部宽度)
    {
    int i,j;
    printf(“|”);
    对于(j=0;j

    看,妈妈!否
    如果需要空白或数组数据,则在每行打印数字i。您还需要避免每行打印一个零,这是您编码的内容。以下是已更正的代码部分:

    for (i = 0; i < BOARD_HEIGHT; i++)
        {
            for (j = 0; j < BOARD_WIDTH; j++)
            {
    
                if (j == 0)
                {
                    printf("|%d",i);
                }
                printf("| "); ///or printf("|%d",board[i][j]) if you are after  stored data
    
            }
            printf("|\n");
        }
    
    for(i=0;i
    希望这有帮助。

    试试这个:

    #define BOARD_HEIGHT 10
    #define BOARD_WIDTH  10
    
    void displayBoard()
    {
        int i, j;
    
        printf("| ");
        for (j = 0; j < BOARD_WIDTH; j++)
        {
            printf("|%d", j);
        }
        printf("|\n");
    
        for (i = 0; i < BOARD_HEIGHT; i++)
        {
            printf("|%d", i);
            for (j = 1; j < BOARD_WIDTH; j++)
            {
                printf("| ");
            }
            printf("| |\n");
        }
    }
    
    #定义电路板高度10
    #定义电路板宽度10
    无效显示板()
    {
    int i,j;
    printf(“|”);
    对于(j=0;j

    顺便说一句,不需要向这个函数传递任何参数。

    为什么
    printf(“|%d”,i)内部循环?可能
    printf(“|%d”,i);如果(j==0)
    -->
    如果(j==0)printf(“|%d”,i)看起来像是
    printf(“|%d”,i)
    应该在
    for(j)
    循环之外完成。哦!!!!!我会解决的。但是,它不能同时处理一行和一列
    #define BOARD_HEIGHT 10
    #define BOARD_WIDTH  10
    
    void displayBoard()
    {
        int i, j;
    
        printf("| ");
        for (j = 0; j < BOARD_WIDTH; j++)
        {
            printf("|%d", j);
        }
        printf("|\n");
    
        for (i = 0; i < BOARD_HEIGHT; i++)
        {
            printf("|%d", i);
            for (j = 1; j < BOARD_WIDTH; j++)
            {
                printf("| ");
            }
            printf("| |\n");
        }
    }