输出一个实心菱形

输入一个n,输出一个菱形

例如:输入:12

         输出: 

思路:第一步:以中间最长的一行最为程序的分割点,将上下两个部分分为两个程序进行。

第二步:上面的部分使用for嵌套循环,在外层for循环中表示第几行数,内层第一个循环表示每行的输出空格数,第二个循环表示输出的*数。不难看出规律,空格数第i行数量为n-i。*的数量则是2i-1。最后再在外层每次循环结束后输出换行。

第三步:下面的部分也是使用for嵌套循环,在外层for循环中表示第几行数,内层第一个循环表示每行输出的空格数,第二个循环表示输出的*数。通过观察可以看出空格数等于行数。第i*的数量则是为上半部分倒数第n-i行的*量,故将n-i带入2i-1得出每行的*数量应从2(n-i)-1开始循环。最后再在外层每次循环结束后输出换行。

#include<bits/stdc++.h>
using namespace std;
int main( )
{  
   int n;
   cin>>n;
   for(int i=1;i<=n;i++)
   {   
     for(int j=1;j<=n-i;j++)
      { 
	  cout<<" ";
      }
      for(int k=1;k<=2*i-1;k++)
        {
        cout<<"*";
        }
        cout<<""<<endl;
   }
     for(int i=1;i<=n-1;i++)
     {
     	for(int j=1;j<=i;j++)
     	{
     	cout<<" ";
        }
           for(int k=2*(n-i)-1;k>=1;k--)
           {
           cout<<"*";	
           }
        cout<<" "<<endl;
     }
     
   return 0;

}

 心得体会:做这道题的时候遇到的困难主要是每行前面的空格和*数量比较难判断,,上半部分的空格数和*数量都比较容易按照顺序得出。下半部分的空格数也容易得出,主要比较难以得出的是下半部分的*数量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值