回 帖 发 新 帖 刷新版面

主题:[原创]紧急请教高手指点,用for循环编出的菱形图案

这个题目我想了大半天,都没想出来,题目是:有for循环编写出如图所示的菱形图案.
图案如下:

   *
     ***
    *****
   *******
  *********
   *******
    *****
     ***
     *
  



但是目前我会编写相似的以下三个图案:
*
**
***
****
图形一的代码:
#include<iostream.h>
#include<stdlib.h>
void main()
{
  for(int i=1;i<=4;i++)
  {
    for(int j=1;j<=i;j++)
      cout<<"*";
    cout<<endl;
  }
  system("PAUSE");
}




     *
    **
   ***
  ****

图形二的代码:
#include<iostream.h>
#include<stdlib.h>
void main()
{
  for(int i=1;i<=4;i++)
  {
    for(int j=1;j<=4-i;j++)
      cout<<" ";
    for(int j=1;j<=i;j++)
      cout<<"*";
    cout<<endl;
  }
  system("PAUSE");
}


      *
     ***
    *****
   *******
图形三的代码:
#include<iostream.h>
#include<stdlib.h>
void main()
{
  for(int i=0;i<4;i++)
  {
    for(int j=1;j<4-i;j++)
      cout<<" ";
    for(int j=0;j<2*i+1;j++)
      cout<<"*";
    cout<<endl;
  }
  system("PAUSE");
}



对于菱形的代码编写:
我想了许多办法,我把菱形分成几个部分来实现,例如分成上下两个部分,左右两个部分,基至三个,四个部分(分成与上面的三图形相似的图形)来实现,但还是没成功,因为我反复就是找不到i 和j的对应关系(整个菱形的图案,主要就要是下面的一半图形不怎么会实现)
   下面的一半图形如下:
  *******
    *****
     ***
     *



    请教高手帮我指点指点哦!我实在是,真的想了好多好多方法,也想了好久好久都没想出来,所以才会来请教你们的,请你们一定一定要告诉我该怎么样去做这个题目!最好可以讲详细点哦!重重有赏,谢谢啦!我迫不及待的等你们的回复!











 








回复列表 (共7个回复)

沙发

左半边用空格就可以实现了 C语言写的

#include <stdio.h>
void main ()
{
    int a,b,c;
    for (a=1;a<=10;a++) //控制上半部打印的行数
    {
        for (b=10;b>=a;b--) //控制上半部每行打印空格的数量
        {
            printf(" ");
        }
        for (c=1;c<=a*2-1;c++) //控制上半部每行打印*的数量
        {
            printf("*");
        }
    printf("\n");
    }

//-------------------------------分割线----------------------------
    
    for (a=1;a<=10;a++)    //控制下半部打印的行数
    {
        for (b=1;b<=a;b++)    //控制下半部每行打印的空格数量    
        {
            printf(" ");
        }
        for (c=10;c>=a*2-10;c--)  //控制下半部每行打印*数量
        {
            printf("*");
        }
        printf("\n");
    }
}    
    

    

板凳


呵呵,非常谢谢啦,我先参考一下你的代码,不过我们没学C语言,只学了C++哦

3 楼

这个是我初学程序的时候写的 刚才翻箱倒柜找出来...

4 楼

     你的编程应该学得挺好吧,请问我可以加你QQ吗?

5 楼

这个是空心菱形 你可以试一下


/*      用for循环和if语句实现空心菱形        */

#include <stdio.h>
void main ()
{
    int a,b,c;
    for (a=1;a<=10;a++) //控制上半部打印的行数
    {
        for (b=10;b>=a;b--) //控制上半部每行打印空格的数量
        {
            printf(" ");
        }
        for (c=1;c<=a*2-1;c++) //控制上半部每行打印*的数量
        {
            if ((c==a*2-1)||(c==1))    //只在循环刚开始或者结束的时候打印*
                printf("*");
            else
                printf(" ");    //循环的中间部分打印空格
        }
    printf("\n");
    }

//-------------------------------无敌的分割线--------------------------------    
    
    for (a=2;a<=10;a++)    //控制下半部打印的行数
    {
        for (b=1;b<=a;b++)    //控制下半部每行打印的空格数量    
        {
            printf(" ");
        }
        for (c=10;c>=a*2-10;c--)  //控制下半部每行打印*数量
        {
            if ((c==10)||(c==a*2-10))    //只在循环刚开始或者结束的时候打印*
                printf("*");
            else
                printf(" ");    //循环的中间部分打印空格
        }
        printf("\n");
    }
}    
    
    

    

    

    

6 楼

164621064 刚学半年

7 楼

在提示之下,我很快就把我的那个实心菱形做出来了,
        至如,空心菱形,我就没先去看上面的代码,而是自己先思考把它做出来,(真的,通过自己的再三思索,终于做出来了,尽管这个题目比较简单,但是好有成就感的)然后和上面的代码比较。呵呵,其实每个人做的编程思想都各有不同,我觉得上面的代码比我要好一点一样,我总结了下:总而言之,编程要从多角度思考,思维要发散,要多看一下编程思想的书。不晓得我说得对不对?

  实心菱形的代码就不写上来了,以下是我自己写的空心菱形的代码,请大家看看怎么样?

空心菱形的代码:
#include<iostream.h>
#include<stdlib.h>
void main()
{
  int i,j;
  for(i=0;i<5;i++)
  {
    for(j=1;j<5-i;j++)
      cout<<" ";
    cout<<"*";
    for(j=3;j<=2*i+1;j++)
      cout<<" ";
    if(i==0)
    {
      cout<<endl;
      continue;
    }
    cout<<"*";
    cout<<endl;
  }
  for(i=0;i<4;i++)
  {
    for(j=1;j<=i+1;j++)
      cout<<" ";
    cout<<"*";
    for(j=5;j>=2*i+1;j--)
      cout<<" ";
    if(i==3)
      break;
    cout<<"*";
    cout<<endl;
  }
  system("PAUSE");
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册