| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 698 人关注过本帖
标题:基本算法----循环控制---星号菱形
收藏  订阅  推荐  打印 
死了都要C
Rank: 12Rank: 12Rank: 12
来自:四川成都
等级:贵宾
威望:13
帖子:1507
积分:15568
注册:2006-12-7
基本算法----循环控制---星号菱形

本问题转载于 yzfy,org 论坛

输入一个奇数n,输出对角线长为n的实心或者空心的菱形图案
  如当n=5时,有:
    *
   ***
  *****
   ***
    *

下面是我的程序: 偷偷在主管的机子上用TC2。0调式的没问题
/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) [url=http://yzfy.org]http://yzfy.org[/url] **
*****************************************************************/


#include <stdio.h>

#define OC putchar

int main(void)
{
  
int n , num , _1st , line , out , bj = 1 ;


  while( scanf( "%d" , &n ) != EOF && n%2 )
  {
   
if ( n<0 ) { n *= -1 ; bj = 0 ; }

   
for(line = n,num = line/2+1,_1st = 1; line ; line-->n/2+1 ? (++num,_1st+=2):(--num,_1st-=2))
    for(out = num ; out ; --out)
       (out != 1) ? ( out==_1st ? OC('*'):( ( out<_1st&&bj ) ? OC('*'):OC(' ') ) ):( OC('*') , OC('\n'));
  }

  
return 0 ;
}
[ 本帖最后由 死了都要C 于 2008-6-11 05:28 编辑 ]

[ 本帖最后由 死了都要C 于 2008-6-11 08:45 编辑 ]

[ 本帖最后由 死了都要C 于 2008-6-11 08:45 编辑 ]
搜索更多相关主题的帖子: 菱形  星号  算法  图案  
2008-6-11 05:23
死了都要C
Rank: 12Rank: 12Rank: 12
来自:四川成都
等级:贵宾
威望:13
帖子:1507
积分:15568
注册:2006-12-7

负数为空心

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
http://yzfy.org
2008-6-11 05:28
死了都要C
Rank: 12Rank: 12Rank: 12
来自:四川成都
等级:贵宾
威望:13
帖子:1507
积分:15568
注册:2006-12-7

OJ一下有问题``

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
http://yzfy.org
2008-6-11 09:01
网易
Rank: 4
来自:金星
等级:高级会员
帖子:192
积分:9290
注册:2008-6-10

上去

答案是:雨中飞燕!
2008-6-11 12:07
卧龙孔明
Rank: 12Rank: 12Rank: 12
等级:版主
威望:47
帖子:3705
积分:39096
注册:2006-10-13

说实话 代码易懂更重要

为了中国软件工业的未来,有爱心的朋友请不要帮忙代做作业,或者至少是收费服务!如果您不需要钱,或者您不愿收费用于自己,请把收取的钱用于支援山区贫困学生…谢谢大家!
2008-6-11 12:23
网易
Rank: 4
来自:金星
等级:高级会员
帖子:192
积分:9290
注册:2008-6-10

Loli 在 2008-6-9 01:59 的发言:

某人依然没有进步,之前讨论过好多这种类似的题目
写了好多简洁有效的写法,不过,有些人依然我行我素,
明知自己方法不佳,不但不学习好的



http://yzfy.byethost2.com/list.php

答案是:雨中飞燕!
2008-6-11 12:47
死了都要C
Rank: 12Rank: 12Rank: 12
来自:四川成都
等级:贵宾
威望:13
帖子:1507
积分:15568
注册:2006-12-7

上次写的的确很烂```下来又找时间想了想```

现在又写了一个个```我觉得这个应该要比上一个好些``用了一个循环就搞定了``

正整数为空心,负数为实心。0和EOF退出。
/*****************************************************************
** HighlightCodeV3.1 software by yzfy(雨中飞燕) [url=http://yzfy.org]http://yzfy.org[/url] **
*****************************************************************/
#include <stdio.h>

#define NL putchar('\n')
#define XX putchar('*')
#define KB putchar(' ')

int main(void)
{
   
   
int n ;

    while( scanf( "%d", &n ) != EOF && n%2 )
    {
        
        
int sign ;  /* 对输入数的符号的标记 */

        
if ( n>0 ) sign=0 ; else { sign=1 ; n*=-1 ; } /* 标记过程 */

        
int ac = n*n , mid = n*(n/2+1) ; /* 计算中的'*'和' '的数目 还有 转换点 */
        
int xr = ac - n/2 - 1 , xl ;     /* XR为右边的'*'XL为左边的'*'         */

        
for( xl=xr; ac-- ; ac%n ? 1 : ( NL, xr>mid ? (xr-=n-1,xl-=n+1):(xr-=n+1,xl-=n-1) ) )
        {
            
( ac == xr || ac == xl || ( ac>xl && ac<xr && sign ) ) ? XX : KB ;
        }
    }

   
return 0;
}

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
http://yzfy.org
2008-7-6 04:02
漫游者李李西
Rank: 2
等级:注册会员
帖子:107
积分:1266
注册:2007-11-11

int x,y;
    cout << "请输入行数:";
    int q;
    cin>>q;
    int i=(q/2);
    for(x = -i;x<=i;x++)
    {
        for(y=-i;y<=i;y++)
        {
            if(abs(x)+abs(y)<=i)
            {
                cout <<"*";
            }
            else
            {
                cout <<" ";
            }
        }
        cout<<endl;
    }
利用几何方法简单些

2008-7-6 09:25
电脑爱好者
Rank: 2
等级:注册会员
帖子:42
积分:526
注册:2006-5-6


程序代码:
#include <stdio.h>
#include <math.h>
int main()
{
    int n, i, j;
    while((scanf("%d", &n) != EOF) && (n % 2 == 1))
    {
        for(i = 0; i < n; i++){
            for(j = 0; j < n; j++)
            {
                if (fabs((n - 1) / 2 - j) + fabs((n - 1) / 2 - i) <= (n - 1) / 2 )
                    printf("*");
                else
                    printf(" ");

            }
            printf("\n");
        }
    }
    return 0;
}
2008-11-22 23:27
dubukuangye
Rank: 2
等级:注册会员
帖子:47
积分:579
注册:2008-11-11

顶,九楼!仰视ing

与其离开她为了过的更好,不如抓住她,自己努力让她过的更好
2008-11-23 10:31
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.061647 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved