求解for循环的应用

img

如有帮助,望点击我回答右上角【采纳】按钮支持一下。
c++实现效果图:
img

#include <iostream>
using namespace std;
int main() {
int n, i, j;
cout << "Input a number:" << endl;
cin >> n;
i = n - 1;
j = 1;
while (i >= 0 && j <= 2 * n - 1)
{
    int w = i;
    int t = j;
    for (i = w; i > 0; i--)
        cout << ' ';
    for (j = 1; j <= 2 * t - 1; j++)
        cout << '*';
    for (i = w; i > 0; i--)
        cout << ' ';
    i = w;
    j = t;
    i--; j++;
    cout << endl;
}
i = 1;
j = n - 1;
while (i >= 0 && j >= 1)
{
    int w = i;
    int t = j;
    for (i = w; i > 0; i--)
        cout << ' ';
    for (j = 1; j <= 2 * t - 1; j++)
        cout << '*';
    for (i = w; i > 0; i--)
        cout << ' ';
    i = w;
    j = t;
    i++; j--;
    cout << endl;
    }
cout << endl;
return 0;
}

img


#include <stdio.h>

/*
    打印菱形
       *
      ***
     *****     
    *******
     *****
      ***
       *
    分析
    1.菱形一定是奇数行
    2.每一行的字符数是相等(星号+空格),等于总行数
    3.计算上面一半的星号的出现规律
        第n行星号个数=n*2-1 
        第n行的空格个数=(总行数-(n*2-1) )/2,每行只要打印左边空格
*/ 
void main(){
    int line; //菱形的总行数
    int mid;//菱形上半部分的行数
    int star;//每行的星号数
    int space;//每行的空格数 
    int i,j;
    printf("请输入菱形的行数(奇数):");
    scanf("%d",&line);
    mid = line/2+1;//上半部分的总行数
    for(i=1;i<=mid;i++){
        star = 2*i-1; //第i行星号个数 
        space = (line-star)/2;//第i行星号左边的空格数 
        //打印空格 
        for(j=1;j<=space;j++){
            printf(" ");
        }
        //打印星号
        for(j=1;j<=star;j++){
            printf("*");
        }  
        //换行
        printf("\n");
    }
    //打印下半部分 
    for(i=mid-1;i>=1;i--){
        star = 2*i-1; //第i行星号个数 
        space = (line-star)/2;//第i行星号左边的空格数 
        //打印空格 
        for(j=1;j<=space;j++){
            printf(" ");
        }
        //打印星号
        for(j=1;j<=star;j++){
            printf("*");
        }  
        //换行
        printf("\n");
    }     
     
}
 
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,j;
    for(i=0;i<5;i++)
    {
        for(j=0;j<4-i;j++)
        {
            printf(" ");
        }
        for(j=0;j<i*2+1;j++)
            printf("*");

        printf("\n");
    }
    for(i=0;i<4;i++)
    {
        for(j=0;j<=i;j++)
            printf(" ");
        for(j=(3-i)*2;j>=0;j--)
            printf("*");
        printf("\n");
    }
    return 0;
}