#include <stdio.h>
int main() {
int m, n = 1, k;
scanf_s("%d", &m);
k = m;
while (k > 0) {
int num = m; // 重置num为当前行的起始数字
n = 1; // 重置n为1,表示每行从m开始递减
while (n <= k) {
printf("%d", num);
if (n < k) {
printf(" "); // 在数字之间输出空格,不包括最后一个数字
}
num--; // 递减数字
n++;
}
printf("\n"); // 换行到下一行
k--; // 递减行数
}
return 0;
}
【以下回答由 GPT 生成】
#include <stdio.h>
int main() {
int n, m;
scanf("%d", &m);
int k = m;
while (k) {
n = m; // 在内层循环开始前,将n重新赋值为m
while (n >= 1) {
printf("%d", n);
n -= 1;
}
printf("\n");
k -= 1;
m -= 1;
}
return 0;
}
解释:
在原来的代码中,内层循环的条件是k >= n
,这会导致内层循环只执行一次,因为k
不会改变。
通过将n
重新赋值为m
,使得内层循环每次都会从m
开始,输出m
到1的数字。
同时,将对n
的递增移动到内层循环之前,以便在内层循环开始时将n
重置为m
。
这样就能够得到所需的输出形式。
【相关推荐】
仅供参考,谢谢!
#include<stdio.h>
int main(void)
{
int m, n, i, j;
scanf("%d", &n);
i = m = n;
while (n)
{
i = m;
j = n;
while (j--)
printf("%d", i--);
puts("");
n--;
}
return 0;
}