2~~

int n,i,j;//i行数
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=i(i-1)/2+1;j<=i(i-1)/2+i;j++)//整数除法向零靠近,变小了,+1
printf("%4d",j); //即 i*(i-1)/2+1 + i-1 + 1
printf("\n");
}
return 0;

W2:

int num = 1;
// 3. 外层循环:(第i行)
for (int i = 1; i <= n; i++) // 4. 内层循环:每行输出i个数字
{
for (int j = 1; j <= i; j++)
{
printf("%4d", num);
num++; // 6. 数字递增,准备下一个数字
}
printf("\n");
}

?:怎么把数字连续不间断输出?
前 i-1行的数字总数是等差数列和:1+2+...+(i-1) = i(i-1)/2。
因此,第i行的起始数字为i
(i-1)/2 +1,后续数字依次递增。
主要是开头第一个数,
收获:每个数字按4个位置输出,c语言中 %4d可以输出一个数,占据四个位置,右对齐
bug:在内层for循环//整数除法向零靠近,变小了,+1,即 i*(i-1)/2+1 + i-1 + 1

posted @ 2025-06-27 19:44  ervgiu28hg34y827  阅读(5)  评论(0)    收藏  举报