1027修改打印沙漏(20) for内循环 分情况 第一输出空格 第二输出符号





#include<iostream>
using namespace std;
int main()
{
int n;
char c;
cin>>n>>c;
int sum=0;
int i;


//i=1   对应奇数  3=2*i+1
    //  
for(i=1;i>0;i++)
{
sum+=2*i+1;
if(n<sum*2+1)break;   //构建  沙漏的*数量 大于我们输入的n   跳出循环


}


//  i   记录的是沙漏上半部分的     行数  不包括最后一行




//开始输出上半部分


for(int j=i;j>=1;j--)  //  有  i行
{


  for(int f=i-j;f>0;f--) cout<<" ";   //每行开始 是输入“空格” 判断空格个数。 内循环


  // 内循环  肯定与外面的有点关系  所以 f= 总行数 - 第i行    
  //因为    第2行就是顶层   输入0个空格   而第一行 就是下面一行,输入 1 个空格






      for(int k=1;k<=2*j+1;k++) cout<<c;  // 开始输入字符  * 的个数  k=1   k<=2*行数 + 1     k++
  cout<<endl;

}




//输入中间的一行   自己总结一下


for(int q=1;q<=i;q++) cout<<" ";
cout<<c<<endl;






//下半部分  




for(int j=1;j<=i;j++)         //    输出  i 行
{
for(int f=i-j;f>=1;f--)cout<<" ";   //  输出空格数  与前面的相反  它是先输出 行数多的
for(int k=1;k<=2*j+1;k++)cout<<c;
cout<<endl;

}


return 0;

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值