鄙人大一新生,pta上有一题要求用输入数以下最大的数量的“”打出漏斗形。如:
5个
1空格3个*
2空格1个*
1空格3个*
5个*
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int a,b,c,countj,flag=0;
cin>>a;
for(int i=a;i>=1;i--)/*对输入的a从大到小循环筛选*/
{
for(int j=1;j<=i;j++)/*对比a小的数从小到大循环*/
{
countj++;
if(2*j*j-1==i)/*若从大到小的i可以做该数列前j项和*/
{
flag=1;/*做一个标志终止循环 countj为项数*/
break;
}
}
if(flag==1)
{
break;
}
}
for(int k=1;k<=2*countj-1;k++)/*共2j-1行*/
{
c=fabs(k-countj);/*距中间行的距离*/
for(int l=1;l<=countj-c-1;l++)/*输出合适数量空格*/
{
cout<<" ";
}
for(int m=1;m<=2*c-1;m++)/*输出合适数量“*”*/
{
cout<<"*";
}
cout<<endl;
}
return 0;
}
我写的这个运行后会*刷屏