输入整数n,输出以下图形

例如输入5,输出下面这些
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15


#include<stdio.h>
int main()
{
    int n,k=0;
    scanf("%d",&n);
    for (int i=0;i<n;i++)//这个循环就说明将会有n行输出
    {
        for (int j=0;j<=i;j++){//这个循环规定n行就输出n个数字
            k++;
            printf("%d ",k);//%d后面还有一个空格
        }
        printf("\n");//输出一行之后就换行
    }
}

用这个代码就可以解决问题了,记得采纳哦!

分析一下:输入5,打印了5行。
如果输入n就是打印n行,第i行输入i个数,而每一行的第一个数,都是上一行最后一个数,加1。那么我就可以设置一个中间变量,记录上一行的最后一个数。
代码如下:

#include <stdio.h>
int main()
{
    
    int n;
    scanf("%d",&n);
    int temp = 0;//中间变量 
    for(int i = 1;i<=n;i++)
    {
        for(int j = 1;j<=i;j++)
        {
            printf("%d ",j+temp);
            if(j==i)
            {
                temp = j+temp;
                printf("\n"); 
            }
        }
    }
    return 0;
 } 

效果图

img

双循环就可以了
int k = 1;
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
for(int j=0;j<=i;j++)
printf("%d ",k++);
printf("\n");
}


#pragma GCC optimize(2)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;
int n;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    int cnt = 1;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= i; j++) {
            cout<<cnt<<" ";
            cnt++;
        }
        cout<<endl;
    }
    return 0;
}