| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 527 人关注过本帖
标题:用C画*图的问题
收藏  订阅  推荐  打印 
hyh563948446
Rank: 1
来自:中国
等级:新手上路
帖子:5
积分:152
注册:2008-8-16
用C画*图的问题

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

但是,要做几层的0型,是由用户输入的数字决定的。。比如上面就是输入 5 后的结果。
请各位朋友把完整的代码发给我 谢谢!
用循环做哦
搜索更多相关主题的帖子: 数字  输入  代码  结果  用户  
2008-8-16 11:40
hyh563948446
Rank: 1
来自:中国
等级:新手上路
帖子:5
积分:152
注册:2008-8-16
回复 1# hyh563948446 的帖子

cuo  le
2008-8-16 11:44
hyh563948446
Rank: 1
来自:中国
等级:新手上路
帖子:5
积分:152
注册:2008-8-16

我上面的题目写错了 正确的应该是这样的
   *
  ***
*****
  ***
   *
这是当用户输入5以后的结果 题目要求是这样的 让用户输入一个数 来做的菱形 要求做几层的 几层是由用户输入的数来决定
请各位朋友们把完整的代码告诉我 在下感激不尽!
谢谢!  请用循环做
2008-8-16 11:48
广陵绝唱
Rank: 4
等级:高级会员
威望:1
帖子:832
积分:9811
注册:2008-2-15
满足你的愿望


程序代码:
#include<stdio.h>
int main(void)
{
        int i,j,n,k=1;
        printf("input n:\n");
        scanf("%d",&n);
        if(n%2==0)    n-=1;
        for(i=1;i<=n;i++)
        {
                for(j=0;j<20-k;j++)
                        printf(" ");
                for(j=0;j<k*2-1;j++)
                        printf("*");
                printf("\n");
                if(i<=n/2)    k++;
                else       k--;
        }
        getch();
}
ps:谢楼下朋友的指点,现已改正----呵呵,是照你的程序效果改的。因为你的程序运行时,如果输入偶数,只能出现奇数层。如果从程序的简单化来讲,我这个比你的简单而且易理解多了。

[ 本帖最后由 广陵绝唱 于 2008-8-16 14:45 编辑 ]
2008-8-16 14:01
xx2008
Rank: 1
等级:新手上路
帖子:4
积分:140
注册:2008-8-16
楼上代码明显错了 你输入 6实验看看

呵呵
/*
   *  1
  *** 2
*****3
  *** 4
   *  5
*/

#include <stdio.h>
void main()
{
    int i_user=-1;
    int i,j,k;   
    int i_row;
    while (i_user<=2)
    {
           printf("please input a number: ");
           scanf(" %d",&i_user);
    }
    i_row=i_user/2+(i_user%2);

    for (i=1;i<=i_row;i++)
    {   
    for (k=1;k<=i_row-i;k++)
         printf(" ");
    for (j=1;j<=2*i-1;j++)
    {        
        printf("*");
    }
        printf("\n");     
    }

    for (i=i_row-1;i>=1;i--)
    {   
    for (k=1;k<=i_row-i;k++)
         printf(" ");
    for (j=1;j<=2*i-1;j++)
    {        
        printf("*");
    }
        printf("\n");     
    }

} 好理解 我随便写的
2008-8-16 14:21
wbxnj
Rank: 1
来自:武汉
等级:新手上路
帖子:24
积分:364
注册:2008-8-13

for(i=1;i<=n;i++)
        {
                for(j=0;j<20-k;j++)
                        printf(" ");
                for(j=0;j<k*2-1;j++)
                        printf("*");
                printf("\n");
                if(i<=n/2)    k++;
                else       k--;
        }

呵呵,假如输入大于41数.恐怕输出就有问题了.
2008-8-16 15:12
wbxnj
Rank: 1
来自:武汉
等级:新手上路
帖子:24
积分:364
注册:2008-8-13

我写出个,欢迎指教.
#include<stdio.h>
void main()
{
    int i,j,k,n;
    printf("Please input n:");
    scanf("%d",&n);
    if(0==n%2)
    {
        n--;
    }
    for(i=0; i<=n/2; i++)
    {
        for(j=0; j<=n/2-1-i; j++)
            printf(" ");
        for(k=0; k<=2*i; k++)
        {
            printf("*");
        }
        printf("\n");
    }
    for(i=0; i<=n/2-1; i++)
    {
        for(j=0; j<=i; j++)
            printf(" ");
        for(k=0; k<=n-3-2*i; k++)
        {
            printf("*");
        }
        printf("\n");
    }
}
2008-8-16 15:19
wbxnj
Rank: 1
来自:武汉
等级:新手上路
帖子:24
积分:364
注册:2008-8-13

想了想广陵那种方法,还不错.毕竟题目解决的方法有很多.我也要向你学习!
2008-8-16 15:23
广陵绝唱
Rank: 4
等级:高级会员
威望:1
帖子:832
积分:9811
注册:2008-2-15
回楼上两位

谢谢指点,你们的代码也不错,我也得向你们学习才是。谢谢。

    不过有一点我始终没明白,for循环只有一层代码,为什么还要加{}呢?浪费代码高度不说,而且有时候不易阅读?
2008-8-16 16:42
苏洵
Rank: 1
等级:新手上路
帖子:13
积分:240
注册:2008-8-10
我也瞎写了一个,运行通过了,高手给指点指点

/*用户输入整数,输出菱形*/
#include<stdio.h>

/*程序从函数main开始执行*/
int main()
{
   int n;/*用户输入的整数*/
   int i;/*前(n+1)/2行循环计数器*/
   int j;/*剩余行循环计数器*/
   int k;

   printf("输入一个正奇数(-1结束): ");/*输入第一个整数*/
   scanf("%d", &n);

   while(n != -1){/*循环直至输入标志值*/
      
      if(n % 2 != 0){/*n不是偶数*/
        
         for(i = 1; i <= (n + 1) / 2; i++){/*前(n+1)/2行*/
            
            for(k = 1; k <= (n - (2 * i - 1)) / 2; k++){/*输出第一部分空格*/
               printf(" ");
            }/*结束for*/
                  
            for(k = 1; k <= 2 * i - 1; k++){/*输出星号*/
               printf("*");
            }/*结束for*/

            for(k = 1; k <= (n - (2 * i - 1)) / 2; k++){/*输出第二部分空格*/
               printf(" ");
            }/*结束for*/

            printf("\n");/*输出完一行*/
         }/*结束for*/
         for(i = (n + 1) / 2; i >= 1; i--){/*输出剩余行*/
            
            for(j = (n + 1) / 2 + 1; j <= n; j++){/*剩余的行*/
               
               if((i + j) % ((n + 1) / 2) == 0){/*这些行输出相同的结果*/
                  
                  for(k = 1; k <= (n - (2 * i - 1)) / 2; k++){/*输出第一部分空格*/
                     printf(" ");
                  }/*结束for*/
                  
                  for(k = 1; k <= 2 * i - 1; k++){/*输出星号*/
                     printf("*");
                  }/*结束for*/

                  for(k = 1; k <= (n - (2 * i - 1)) / 2; k++){/*输出第二部分空格*/
                     printf(" ");
                  }/*结束for*/

                  printf("\n");/*输出完一行*/
               }/*结束if*/
            }/*结束for*/
         }/*结束for*/
      }/*结束if*/
      
      else
         printf("输入的数是偶数,不能输出菱形\n");

      printf("输入一个正奇数(-1结束): ");/*输入下一个整数*/
      scanf("%d", &n);
   }/*结束while*/

   return 0;/*表示程序成功结束*/

}/*结束函数main*/

[ 本帖最后由 苏洵 于 2008-8-16 19:04 编辑 ]
2008-8-16 18:56
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

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