编写程序输出图案。输入一个数值,输出 2n-1 行的指定字符,组成菱形、
梯形、三角形图案。其中菱形每行中间对齐,梯形后 n-1 行的每行内容相同,
三角形后 n-1 行依次递减。图形符号以及中间的分割符都可以设置。比如图
形符号为、#、$等;分割符为 1 个空格、2 个空格、制表符等。
比如输入:2,*,空格
打印菱形代码,参考一下:
#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");
}
}