| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 843 人关注过本帖
标题:编写一个菱形,只用到一次' '和一个' *',有需要的同志可以参考!
只看楼主 加入收藏
鶄鵅
Rank: 2
来 自:广东潮州
等 级:论坛游民
帖 子:40
专家分:17
注 册:2010-4-5
结帖率:100%
收藏
 问题点数:0 回复次数:9 
编写一个菱形,只用到一次' '和一个' *',有需要的同志可以参考!
我在网上看过一些,算法都差不多是这样的:
程序代码:
#include <iostream>
using namespace std;

void main( )
{
      int x, y, k;
      int n;
      cout<<"enter n = ";
      cin>>n;
      for(x=1; x<=n; x++){
         for(k=0; k<=n-x; k++)
             printf(" ");
          for(y=1; y<=x; y++)
              printf("%2c",'*'); //等价于  cout<<" *";
       cout<<endl; 
      }
      for(x=n-1; x>=1; x--) {
          for(k=0; k<=n-x; k++)
              printf(" ");
          for(y=1; y<=x; y++)
               printf("%2c",'*');   //等价于  cout<<" *";
          cout<<endl;
      }
}


下面跟大家分享一下我的算法 (在整个程序中只出现过一次‘ ’ 和  一次‘*’):
程序代码:
#include <iostream>
using namespace std;

void main( )
{
     int n;
     int i, j;
     cout<<"enter n = ";
     cin>>n;
     for(i=1; i<2*n; i++){
          for(j=1; j<2*n; j++){
               if((i+j>=n+1 && i+j<=3*n-1) && (1-n<=i-j && i-j<=n-1))
                     putchar('*');
               else
                     putchar(' ');
          }
          putchar('\n');
     }

 }






[ 本帖最后由 鶄鵅 于 2010-4-5 20:35 编辑 ]
搜索更多相关主题的帖子: 同志 编写 菱形 
2010-04-05 16:22
one_june
Rank: 4
等 级:业余侠客
帖 子:139
专家分:212
注 册:2010-3-14
收藏
得分:0 
#include<iostream>
#include<string>
using namespace std;
int main()
{
    for(int n;cin>>n;)
    {
        for(int i=1;i<=n;++i)
        cout<<string(n-i,' ')+string(2*i-1,'*')+'\n';
        for(int i=1;i<=n-1;++i)
        cout<<string(i,' ')+string(2*n-1-2*i,'*')+'\n';
    }
}

比较简单的方法...

[ 本帖最后由 one_june 于 2010-4-5 17:42 编辑 ]
2010-04-05 17:38
鶄鵅
Rank: 2
来 自:广东潮州
等 级:论坛游民
帖 子:40
专家分:17
注 册:2010-4-5
收藏
得分:0 
好,互相学习!

http://wzqinyes.blog./
  鶄 鵅 在 人 间 !
2010-04-05 17:41
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
我也来写个程序玩玩。。

程序代码:
#include<stdio.h>
void fun(int i)
{
    if(i>0)
    {
        putchar('*');
        fun(i-1);
    }
    else return ;
}
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1,j=n;i<=n || (j>0,j--);i++)
    {
        printf("%*.s",i<=n?n-i:n-j,"");
        i<=n?fun(2*i-1):fun(2*j-1);
        putchar('\n');
    }
    return 0;
}

离恨恰如春草,更行更远还生。
2010-04-05 18:25
鶄鵅
Rank: 2
来 自:广东潮州
等 级:论坛游民
帖 子:40
专家分:17
注 册:2010-4-5
收藏
得分:0 
回复 4楼 玩出来的代码
嗯,我们是直接学C++的,但我也看过一些C的程序,
可是我至今还不知道“%*.s”是什么意思,只知道“%s”!
麻烦给我解释一些“%*.s”好吗?

http://wzqinyes.blog./
  鶄 鵅 在 人 间 !
2010-04-05 19:07
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
* 假读符
2010-04-05 19:20
鶄鵅
Rank: 2
来 自:广东潮州
等 级:论坛游民
帖 子:40
专家分:17
注 册:2010-4-5
收藏
得分:0 
回复 6楼 hahayezhe
什么叫假读符啊?

http://wzqinyes.blog./
  鶄 鵅 在 人 间 !
2010-04-05 20:22
月光321
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:55
专家分:124
注 册:2010-3-22
收藏
得分:0 
假读符有啥用啊???
2010-04-06 19:22
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
printf("%*.*s\n",m,n,ch);
前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应m,n.

离恨恰如春草,更行更远还生。
2010-04-06 21:10
鶄鵅
Rank: 2
来 自:广东潮州
等 级:论坛游民
帖 子:40
专家分:17
注 册:2010-4-5
收藏
得分:0 
回复 9楼 玩出来的代码
哦,谢谢

http://wzqinyes.blog./
  鶄 鵅 在 人 间 !
2010-04-07 11:54
快速回复:编写一个菱形,只用到一次' '和一个' *',有需要的同志可以参考!
数据加载中...
 
   



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

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