| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2000 人关注过本帖
标题:求助:C++循环和选择语句打印图形。
只看楼主 加入收藏
糖包包
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2011-3-28
结帖率:91.67%
收藏
已结贴  问题点数:20 回复次数:5 
求助:C++循环和选择语句打印图形。
请问如何用C++循环和选择打印以下图形:

是:  *
    * *
   *   *
  *     *
   *   *
    * *
     *
程序代码:
#include <iostream>
using namespace std;
void main(void)
{
    int i,j;
    for(i=0;i<=3;i++)
    {for(j=0;j<=3+i;j++)
    if(j<3-i)cout<<" ";
    else cout<<"*";
    cout<<endl;}
    for(i=0;i<=2;i++)
    {for(j=0;j<=5-i;j++)
    if(j<=i)cout<<" ";
    else cout<<"*";
    cout<<endl;}

}
我自己写出来的怎么都调不好啊,显示出来是:
   *
  ***
 *****
*******
 *****
  ***
   *
我想用if语句把中间的去掉应该怎么写啊?T-T
搜索更多相关主题的帖子: 图形 如何 
2011-04-24 14:33
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:20 
程序代码:
#include <iostream>
using namespace std;
void main(void)
{
    int i,j;
    for(i=0;i<=3;i++)//i是行。
    {
        for(j=0;j<=3+i;j++)
        {
            if(j==3-i || j==3+i)
                cout <<"*";
            else
                cout << " ";
        }
        cout<<endl;
    }
    for(i=0;i<=2;i++)
    {
        for(j=0;j<=5-i;j++)
        {
            if(j==i+1 || j ==5-i)
                cout << "*";
            else
                cout << " ";
        }
        cout<<endl;
    }
}
问题实际上是要求只打印每一行的左右两端的 * 。
通过你写的代码反推回去,得到第一次和最后一次进入else cout<<"*";时j的值。
if(j==3-i || j==3+i)
                cout <<"*";
其余的地方全部打上空格

迭代的是人,递归的是神。
2011-04-24 15:27
糖包包
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2011-3-28
收藏
得分:0 
回复 2楼 lintaoyn
!!青峰侠同学你太强了!!~~~

让我拜你为师吧~~
2011-04-24 21:33
糖包包
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2011-3-28
收藏
得分:0 
对哦,只用在他==3-i的时候出现*就行了~
我智商太低了。。。。。。
2011-04-24 21:37
linw1225
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:110
专家分:145
注 册:2011-4-7
收藏
得分:0 
回帖是一种美德。给楼主出个题目:
打印图案:

*   *   *
  *   *   *
    *   *   *

Einmal ist keinmal
2011-04-25 22:39
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
写着玩。
程序代码:
#include<iostream>
#include<string>
using namespace std;

void Disply(int n,const string& str)
{
    cout<<string(n,' ')<<str<<endl;
}

void fun(string str,int n)
{
    if(n>1)
    {
        Disply(n,str);
        str.insert(1,2,' ');
        fun(str,n-1);
    }
    else 
    {
        Disply(n,str);
        return ;
    }
    str.erase(1,2);
    Disply(n,str);
}

int main()
{
    string str="* *";
    int n=0;
    cin>>n;
    Disply(n,"*");
    fun(str,n-1);
    Disply(n,"*");

    //楼上这个不是更简单、、
    str="*   *   *";
    for(int i=0;i<n;i++)
    {
        cout<<string(i*2,' ')<<str<<endl;
    }
    return 0;
}


离恨恰如春草,更行更远还生。
2011-04-25 23:16
快速回复:求助:C++循环和选择语句打印图形。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021927 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved