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

各位高手,帮忙改一下,一个菱形

huting0501 发布于 2011-03-20 22:56, 507 次点击
程序代码:
#include<iostream>
#include<string>
using namespace std;
void main()
{
    int n;
    char c;
    cout<<"请输入n,n一定要为奇数";
        cin>>n;
    while(n%2==0)
    {
        cout<<"输入错误,请重新输入n:";
            cin>>n;
    }
    for(int i=1;i<=n;++i)
        cout<<string(n-i,' ')+string(2*i-1,'c')+"\n";
    for(int i=1;i<=n-1;++i)
        cout<<string(i,' ')+string(2*n-1-2*i,'c')+"\n";
   
}
5 回复
#2
bccn2502011-03-21 03:02
改什么?改错?还是优化?

改错,好像是没错,我这用 TC 因为没有 sctring 所以查了百度string的功能,然后改循环,然后套用你的公式,正确。

优化我是不会
#3
bccn2502011-03-21 18:01
今天终于装上了 VC6.0

才发现真的有错,

首先 char c; 这个c后面没看见用到,如果没用的话,这句可以删了。
然后 第二个 for 循环 里 i重复定义了,以前我也碰到过。
一种方法是,第二个循环用其它变量 比如 int j=0;
还有一种方法是 把 i 定义在两个循环的外面(最前面)。
#4
刘定邦2011-03-21 23:56
#include<iostream>
#include<string>

using namespace std;
int main()
{
    int n,i,j;

    cout<<"请输入n,n=";
        cin>>n;
    while(n%2==0)
    {
        n+=1;
    }
    for(i=1;i<=n;++i)
        cout<<string(n-i,' ')+string(2*i-1,'c')+"\n";
    for(j=1;j<=n-1;++j)
        cout<<string(j,' ')+string(2*n-1-2*j,'c')+"\n";
    return 0;
}
#5
紫凤双飞2011-03-27 00:35
只要将char c和第二个for循环中的int去掉即可
#6
Ben22122011-03-31 16:28
LS正解,你的i重复定义了……
1