注册 登录
编程论坛 C++教室

谁能帮我改一下这段代码吗?不胜感激。

huting0501 发布于 2011-03-09 09:13, 770 次点击
编菱形,菱形行数由键盘输入,不同行数,菱形大小不同。
程序代码:
#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;
}


这哪个地方出错了啊?我是一个初学者,请各位多多指教。
8 回复
#2
huting05012011-03-09 09:18
补充
这个菱形是*组成的。
#3
编程20112011-03-09 11:02
for(k;k*(n+1)/2;k++)
    {
        t=2*k-1;
        cout<<string(t,'*')+"\n";}
这个循环好像跳不出来吧,没有循环结束的条件
#4
smallwind2011-03-09 15:21
for(k;k<k*(n+1)/2;k++)
    {
        t=2*k-1;
        cout<<string(t,'*')+"\n";
    }
#5
rjsp2011-03-09 16:40
程序代码:
#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;
}

#6
鹅倌2011-03-09 22:06
这个是我做的,不如楼上的兄弟精到
那个,楼主的逻辑有问题,米有计算空格,而且您的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 编辑 ]
#7
蛋丁2011-03-09 22:35
第一个for无法结束循环啊
#8
huting05012011-03-18 11:44
谢谢各位的帮助拉
#9
dengjinbao2011-03-23 00:04
#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;
}
1