C 矩形从数字开始,内部数字高而外部数字低,某些数字有问题
我有一个练习需要提交。用户应该输入两个数字,一个是高度,一个是宽度,输出应该是一个矩形,外部数字低,内部数字高。 所以我写了它,但它在一些数字上不起作用,例如9和3,但在大多数情况下它起作用。 我做了两个变量,它们等于用户输入的数字,这个数据下降,另外两个变量只是循环的指示器,它们没有意义 如果有人有不同的方向如何做,我很乐意听到,只是在循环 例如: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
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开始的人,考虑距离计算出的距离在打印区域之外的未打印的障碍。)