| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 758 人关注过本帖
标题:谁能帮我改一下这段代码吗?不胜感激。
只看楼主 加入收藏
huting0501
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2011-2-12
结帖率:100%
收藏
 问题点数:0 回复次数:8 
谁能帮我改一下这段代码吗?不胜感激。
编菱形,菱形行数由键盘输入,不同行数,菱形大小不同。
程序代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
    int i,k=1,n,t;
    cout<<"请输入n,n一定要为奇数:";
    cin>>n;
    while(n%2==0)
    {
        cout<<"输入错误,请重新输入:";
        cin>>n;
    }
    for(k;k*(n+1)/2;k++)
    {
        t=2*k-1;
        cout<<string(t,'*')+"\n";
    }
    for(i=(n+1)/2;i>=1;i--)
    {
        t=2*i-1;
        cout<<string(t,'*')+"\n";
    }
    return 0;
}


这哪个地方出错了啊?我是一个初学者,请各位多多指教。
搜索更多相关主题的帖子: 不胜感激 
2011-03-09 09:13
huting0501
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2011-2-12
收藏
得分:0 
补充
这个菱形是*组成的。
2011-03-09 09:18
编程2011
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:73
专家分:19
注 册:2011-3-3
收藏
得分:0 
for(k;k*(n+1)/2;k++)
    {
        t=2*k-1;
        cout<<string(t,'*')+"\n";}
这个循环好像跳不出来吧,没有循环结束的条件
2011-03-09 11:02
smallwind
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-3-9
收藏
得分:0 
for(k;k<k*(n+1)/2;k++)
    {
        t=2*k-1;
        cout<<string(t,'*')+"\n";
    }
2011-03-09 15:21
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <iostream>
#include <iomanip>
using namespace std;

int getnum()
{
    int n;

    cout << "请输入n,n一定要为奇数:" << flush;
    while( !(cin>>n) || n<0 ||  (n&1)==0 )
    {
        cin.clear();
        cin.sync();
        cout << "输入错误,请重新输入:" << flush;
    }

    return n;
}
void prtrb( int n )
{
    for( int i=0; i<n; ++i )
    {
        cout << setfill(' ') << setw( abs(i-n/2) ) << ""
             << setfill('*') << setw( n+1-abs(2*i-n+1) ) << "\n";
    }
}

int main()
{
    int n = getnum();
    prtrb( n );

    return 0;
}

2011-03-09 16:40
鹅倌
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-29
收藏
得分:0 
这个是我做的,不如楼上的兄弟精到
那个,楼主的逻辑有问题,米有计算空格,而且您的for循环没有设定结束条件
#include <iostream>
#include <iomanip>
#include <cstdlib>
 
using namespace std;

int main()
{
     int i,k=1,n,t;
    cout<<"请输入n,n一定要为奇数:";
    cin>>n;
    while(n%2==0)
    {
        cout<<"输入错误,请重新输入:";
        cin>>n;
    }
     int s = (n-1)/2;//计算输出多少空格
    for(k;k < (n+1)/2;k++,s--)
    {
        t=2*k-1;
        cout << string(s,' ');
        cout<<string(t,'*')+"\n";
    }
    int space = 0;//计算空格
    for(i=(n+1)/2;i>=1;i--,space++)
    {
        t=2*i-1;
        cout <<  string(space, ' ');
        cout<<string(t,'*')+"\n";
    }

    system("PAUSE");
    return 0;
}

[ 本帖最后由 鹅倌 于 2011-3-9 22:08 编辑 ]
2011-03-09 22:06
蛋丁
Rank: 1
等 级:新手上路
帖 子:3
专家分:4
注 册:2011-3-7
收藏
得分:0 
第一个for无法结束循环啊
2011-03-09 22:35
huting0501
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2011-2-12
收藏
得分:0 
谢谢各位的帮助拉
2011-03-18 11:44
dengjinbao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:64
专家分:119
注 册:2011-3-22
收藏
得分:0 
#include<iostream>
#include<string>
using namespace std;
int main()
{
    int i,k=1,n,t;
    cout<<"请输入n,n一定要为奇数:";
    cin>>n;
    while(n%2==0)
    {
        cout<<"输入错误,请重新输入:";
        cin>>n;
    }
    for(k=1;k<=(n+1)/2;k++)
    {
        for(i=k;i<=n/2;i++)
        cout<<" ";
        for(i=1;i<=(2*k-1);i++)
        cout<<"*";
        cout<<endl;
        
    }
    for(k=1;k<=(n-1)/2;k++)
    {
        for(i=1;i<=k;i++)
        cout<<" ";
        for(i=1;i<=(n-2*k);i++)
        cout<<"*";
        cout<<endl;
    }
    return 0;
}
2011-03-23 00:04
快速回复:谁能帮我改一下这段代码吗?不胜感激。
数据加载中...
 
   



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

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