首先审题:菱形由空格和“*”组成,难点:1.找到排列规律。2.代码实现。
先看上半部分:第一行空格为5 第一行*为1
第二行空格为4 第二行*为3
第三行空格为3 第三行*为5
。。。
第六行空格为0 第六行*号为11
规律: 空格=n-i(i>=1) *=2*i-1(i>=1)
所以上半部分的代码实现为
同理可得:
下半部分的行数为n-1;
所以: 第一行空格为1 第一行*为9
第二行空格为2 第二行*为7
。。。
第n行空格为==n 第n行*==2*(n-1-i+1)
最后代码:
#include<stdio.h>
int main(void) {
int n; //上半部分行数
scanf("%d", &n);
//上半部分:
for (int i = 1; i <= n; i++) { //行数做循环条件
//1、打印空格
for (int j = 0; j < n - i; j++) {
printf(" ");
}
//2、打印*号
for (int j = 0; j < 2*i-1; j++) {
printf("*");
}
//3、没打印完一排换行
printf("\n");
}
//下半部分:
for (int i = 1; i <= n - 1; i++) {
for (int j = 0; j < i; j++) {
printf(" ");
}
for (int j = 0; j < 2*(n-1-i)+1; j++) {
printf("*");
}
printf("\n");
}
return 0;
}