将最后一列递增 1 的 For 循环模式

For-loop pattern that increments the last column by 1

我正在尝试制作一个 for-loop 程序,它每行打印相同的数字或整数,除了最后一列递增 1。

示例:

     1 1 1 1 1 2

     2 2 2 2 2 3

     3 3 3 3 3 4

     4 4 4 4 4 5

     5 5 5 5 5 6

     6 6 6 6 6 7

这是我的代码

int main(){
int num,value;
scanf("%d", &num);

for(int i=1; i<=num; i++){
    for(int j=i; j < i+num; j++){
        value = i;
        printf("%d ", value);
    }

    printf("\n");
}

return 0;

我也试过这样做

int num,value;
scanf("%d", &num);

for(int i=1; i<=num; i++){
    for(int j = i; j < i+num; j++){
        value = i;
        if(value < j){
            value+=1;
        }
        printf("%d ", value);
    }

    printf("\n");
}

return 0;

然而,我得到了这个结果

   1 2 2 2 2 2

   2 3 3 3 3 3

   3 4 4 4 4 4

   4 5 5 5 5 5

   5 5 5 5 5 6

   6 6 6 6 6 7

我不明白你是如何获得这两个额外的列的,但是要获得递增 1 的最后一列,你可以简单地使用它。

for(int i=1; i<=num; i++){
    for(int j = i; j < i+num; j++){
        if(j==(i+num)-1)
            printf("%d ",i+1);
        else
            printf("%d ", i);
    }

    printf("\n");
}

这是我所做的。我没有在第一个 for 循环中更新 i。相反,我正在检查我是否已到达第二个 for 循环中的最后一列,然后将 i 更新为 i++。

#include <stdio.h>

int main(){

    int num, value;

    scanf("%d", &num);

    for (int i=1; i<num; ) {
    
        for (int j=i; j<(num+i); j++) {
            if (j == (num+i-1)) {
                i++;
                printf("%d", i);
                break;
            }
        
            printf("%d", i);
        }
    
        printf("\n");
    }

    return 0;

}