分析:
最长的部分为13个*,将整个图案拆分成两部分——上三角、下三角,分别利用for循环实现。
代码:
方法一:
#include <stdio.h>
#include <stdlib.h>
int main(){
int j;
int i;
int k;
for (i=0; i < 7; i++){
for (j=0; j <6 - i; j++)
printf(" ");
for (k=0; k <= 2 * i; k++)
printf("*");
printf("\n");
}
for (i = 0; i < 6; i++){
for (j = 0; j <= i; j++)
printf(" ");
for (k = 0; k <= 10 - 2 * i; k++)
printf("*");
printf("\n");
}
system("pause");
return 0;
}
方法二:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void Print(int i,int j){
for (int a = 0; a < i; a++)
printf(" ");
for (int b = 0; b < j; b++)
printf("*");
printf("\n");
}
void LingXing(int n){
//打印菱形
//设最宽的一行为第n行,则
//第一行有n-1个空格,1个*
//第二行有n-2个空格,3个*
//第三行有n-3个空格,5个*
// ......
//即:第i行有n-i个空格,2*i-1个*
//将菱形分为上中下两个部分
int i = 1;
for (i; i < n; i++){
Print(n - i, 2 *i -1);//上
}
Print(0 , 2 *n - 1);//中
i -= 1;
for (i; i > 0; i--){
Print(n - i, 2 * i - 1);//下
}
}
int main(){
int n;
printf("请输入一个奇数:\n");
scanf("%d", &n);
LingXing(n);
system("pause");
return 0;
}
运行结果: