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

帮帮我 改一下下面的程序

编程2011 发布于 2011-03-10 22:56, 815 次点击
               我想写一个下面图案的程序
                   * * * * * * * * *
                     * * * * * * * * *
                   * * * * * * * * *
                     * * * * * * * * *
                   * * * * * * * * *
                     * * * * * * * * *
程序:
程序代码:
include<iostream>
using namespace std;

char  A[]="********";
int j=0;

int main ()
{
    for(int i=0; i<=3; i++)
    {
        while(j>=0 && j<=7)
        {
            cout<<A[j];
            j++;
        }
        cout<<endl;
          cout<<" ";
         for(int g=0; g<=7; g++)
        {   
            cout<<A[g];
        }
   
    }  
    return 0;
   但是我得出的是 * * * * * * * * *
                    * * * * * * * * *
                    * * * * * * * * *
                    * * * * * * * * *
                    * * * * * * * * *
                    * * * * * * * * *
   希望大家帮我改改程序,不胜感激
14 回复
#2
蛐蛐的叫声2011-03-10 23:50
在include前难道不需要#?
#3
qq10235692232011-03-11 00:03
#include<iostream>
#include<cstring>
using namespace std;
void main()
{
char  A[]="********";
int i=1;
for(int j=0;j<6;j++)
    {
      if(i%2==0)
       {
       cout<<strcat(" ",A);
       cout<<endl;
        }
       else
        {
       cout<<strcat(A," ");
       cout<<endl;
         }
       i++;
     }
}
      

#4
编程20112011-03-15 21:28
回复 2楼 蛐蛐的叫声
要啊。我复制的时候漏了
#5
编程20112011-03-15 21:30
我已经写出来了
程序代码:
#include<iostream>
#include<iomanip>
using namespace std;

char A[]="********";

int main ()
{
    for (int i=1; i<=8; i++)
    {  
        if(i%2!=0)
        {  
            for(int j=0; j<=7; j++)
            {  
                cout<<A[j];
            }
        }
        
        else
        {
            cout<<setw(2);
                for(int f=0; f<=7; f++)
            {  
                cout<<A[f];
            }
        }
      cout<<endl;
    }


    return 0;
}

谢谢大家的回复,一起学习
#6
pangding2011-03-15 23:16
我也给种写法:
观察一下就会发现,第一行的第一个字母是 '*',第一行的第二个字母是 ' '。第二行的第一个是 ' '。
总结出规律是:所在行的所在位置是同奇偶的时候是 '*',否则是 ' '。(很难说清,第3行第5个,3和5都是奇数,是'*'。如果是一奇一偶就不是)

程序代码:
#include <iostream>
using namespace std;

int main()
{
    char a[2] = {' ', '*'};
    int i, j;

    for (i = 0; i < 6; i++)
    {
        for (j = 0; j < 18; j++)
            cout << a[ (i&1) == (j&1) ];
        cout << endl;
    }

    return 0;
}

#7
pangding2011-03-15 23:18
3楼的程序很有问题。那个 strcat 的调用应该是不合法的。
#8
pangding2011-03-15 23:19
strcat 对它的参数是否是常串有要求,strcat(" ", A) 是不行的。因为它在运行过程中要修改第一个串。

#9
编程20112011-03-15 23:27
回复 6楼 pangding
运行了一下,比我的简单多了,但是挺难懂得,初学的这个是a[ (i&1) == (j&1) ]?


[ 本帖最后由 编程2011 于 2011-3-15 23:29 编辑 ]
#10
pangding2011-03-16 10:12
& 是位与运算,听说过吧?
就是拿 i 和 1 位与。如果結果是 0 的话,说明 i 是偶数。反之是奇数。
i 表示行,j 表示列。(i&1) == (j&1) 就是测 i 和 j 的奇偶是不是相同,相同为 1,就打印 a[1],是那个星号。不同是 a[0]。
#11
wuchao19882011-03-16 22:18
以下是引用pangding在2011-3-15 23:16:02的发言:

我也给种写法:
观察一下就会发现,第一行的第一个字母是 '*',第一行的第二个字母是 ' '。第二行的第一个是 ' '。
总结出规律是:所在行的所在位置是同奇偶的时候是 '*',否则是 ' '。(很难说清,第3行第5个,3和5都是奇数,是'*'。如果是一奇一偶就不是)

#include  
using namespace std;
 
int main()
{
    char a[2] = {' ', '*'};
    int i, j;
 
    for (i = 0; i < 6; i++)
    {
        for (j = 0; j < 18; j++)
            cout << a[ (i&1) == (j&1) ];
        cout << endl;
    }
 
    return 0;
}
你很厉害啊
#12
编程20112011-03-17 22:37
回复 10楼 pangding
明白了.谢谢
#13
三生2011-03-23 22:34
#include<iostream>
#include<string>
using namespace std;
string a="*********";
int main()
{
    int i;
    for(i=1;i<=6;i++)
    {
       if(i%2==0)
         cout<<" "<<a<<endl;
         else
         cout<<a<<endl;
         }
         system("pause");
         }
#14
dengjinbao2011-03-23 23:15
回复 楼主 编程2011
#include<iostream>
using namespace std;
void main()
{
    int i;
    int j;
    for(i=0;i<6;i++)
    {
        if (i%2==1)
            cout<<"  ";
        for(j=0;j<9;j++)
            cout<<"* ";
            cout<<endl;
    }
}
#15
dengjinbao2011-03-23 23:21
#include<iostream>
using namespace std;
void main()
{
    int i;
    int j;
    for(i=0;i<6;i++)
    {
        if (i%2==1)
            cout<<"  ";
        for(j=0;j<9;j++)
            cout<<"* ";
            cout<<endl;
    }
}
1