老师喊交的作业,不过我已经扩展到N个了
#include<stdio.h>
#include<stdlib.h>
int main()
{
int N;
//要打印的菱形的大小:3 5 7 9 ......
int Fstar=1,Lstar=1;
//记录星数,初始化为1
int Fspace,Lspace;
//记录空格
int _Max;
//记录最大行,_Max=(N+1)/2
int _count=1;
//记录计数行,初始化为1
printf("输入要打印菱形的大小[>=3&&<=79的奇数]:
");
scanf("%d",&N);
_Max=(N+1)/2;
Fspace=(N-1)/2;
if(N<=0||N%2==0||N>79)
{
if(N>79)
{
printf("超出窗口,不能正常打印菱形!\n");
exit(0);
}
else
{
printf("不能打印菱形!\n");
exit(0);
}
}
else
{
/*
*****************打印菱形*********************************/
for(int i=0;i<N;i++)
{
if(_count<=_Max) //打印_Max以前的行
{
int temp1=Lspace=Fspace;
//临时存放空格
int temp2=Lstar=Fstar;
//临时存放星数
Lspace++;
//随时设置_Max行以后的空格
Lstar-=2;
//随时设置_Max行以后的星数
for(;Fspace!=0;Fspace--)
{
printf(" ");
}
for(;Fstar!=0;Fstar--)
{
printf("*");
}
printf("\n");
Fspace=temp1-1;
//更新空格
Fstar=temp2+2;
///更新星数
_count++;
//更新行数
}
else
//打印_Max以后的行
{
int temp1=Lspace;
int temp2=Lstar;
for(;Lspace!=0;Lspace--)
{
printf(" ");
}
for(;Lstar!=0;Lstar--)
{
printf("*");
}
printf("\n");
Lspace=temp1+1;
//更新空格
Lstar=temp2-2;
//更新星数
_count++;
//更新行数
}
}
}
return 0;
}