C 矩形从数字开始,内部数字高而外部数字低,某些数字有问题

C 矩形从数字开始,内部数字高而外部数字低,某些数字有问题,c,rectangles,C,Rectangles,我有一个练习需要提交。用户应该输入两个数字,一个是高度,一个是宽度,输出应该是一个矩形,外部数字低,内部数字高。 所以我写了它,但它在一些数字上不起作用,例如9和3,但在大多数情况下它起作用。 我做了两个变量,它们等于用户输入的数字,这个数据下降,另外两个变量只是循环的指示器,它们没有意义 如果有人有不同的方向如何做,我很乐意听到,只是在循环 例如: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 1 1 2 3 3 3 3 3 2 1 1 2 3 3 3 3 3 2 1 1

我有一个练习需要提交。用户应该输入两个数字,一个是高度,一个是宽度,输出应该是一个矩形,外部数字低,内部数字高。 所以我写了它,但它在一些数字上不起作用,例如9和3,但在大多数情况下它起作用。 我做了两个变量,它们等于用户输入的数字,这个数据下降,另外两个变量只是循环的指示器,它们没有意义 如果有人有不同的方向如何做,我很乐意听到,只是在循环

例如:

1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 1
1 2 3 3 3 3 3 2 1
1 2 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1
谢谢

#include <stdio.h>

int main() {
    int row, col, u, d;

    scanf("%d", &row);
    scanf("%d", &col);

    int row_1, col_1;

    for (u = 1, row_1 = row; u <= row; u++, row_1--) {
        for (d = 1, col_1 = col; d <= col; d++, col_1--) {
            if (col_1 < u  && row_1 > col_1)
                printf("%d", col_1);
            else if (u > d && row_1 >= d)
                printf("%d", d);
            else if(row_1 > u)
                printf("%d", u);
            else
                printf("%d", row_1);
        }
        printf("\n");
    }
    return 0;
}
#包括
int main(){
int row、col、u、d;
scanf(“%d”行和第行);
scanf(“%d”列和列);
int row_1,col_1;
对于(u=1,第1行=row;u d&&row\u 1>=d)
printf(“%d”,d);
否则如果(第1行>第1行)
printf(“%d”,u);
其他的
printf(“%d”,第1行);
}
printf(“\n”);
}
返回0;
}

我将从学习描述问题开始。例如:

1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 1
1 2 3 3 3 3 3 2 1
1 2 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1
  • 用户输入要打印的行数和列数(每个大概1–9)
  • 对于每个位置,从1开始打印到矩形最近边的距离
上述描述很容易产生如下解决方案:

for (int row = 1; row <= num_rows; ++row) {
    int y_distance = distance_to_edge(row, num_rows);
    for (int col = 1; col <= num_cols; ++col) {
        int x_distance = distance_to_edge(col, num_cols);
        printf("%d", x_distance < y_distance ? x_distance : y_distance);
    }
    putchar('\n');
}

用于(In行=1;行,这意味着外部数字是低的,内部数字是高的?你能举一个例子吗?也可以考虑更详细地描述你的变量:现在,当<代码>行和<代码> COLL/COD>不是当前行和列时,很难读懂它,但是,相同的数目,我不知道什么是<代码>
后缀的意思应该是,更不用说
u
d
。通过正确的命名,也更容易发现逻辑中的任何错误。我更正了您所说的,我可以确认发布的代码在实现函数
distance\u to\u edge
后有效。(对于那些感觉距离不能从1开始的人,考虑距离计算出的距离在打印区域之外的未打印的障碍。)