| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1423 人关注过本帖
标题:用C画*图的问题
只看楼主 加入收藏
hyh563948446
Rank: 1
来 自:中国
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-8-16
收藏
 问题点数:0 回复次数:10 
用C画*图的问题
*
   ***
  *****
   ***
    *

但是,要做几层的0型,是由用户输入的数字决定的。。比如上面就是输入 5 后的结果。
请各位朋友把完整的代码发给我 谢谢!
用循环做哦
搜索更多相关主题的帖子: 数字 输入 代码 结果 用户 
2008-08-16 11:40
hyh563948446
Rank: 1
来 自:中国
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-8-16
收藏
得分:0 
回复 1# hyh563948446 的帖子
cuo  le
2008-08-16 11:44
hyh563948446
Rank: 1
来 自:中国
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-8-16
收藏
得分:0 
我上面的题目写错了 正确的应该是这样的
   *
  ***
 *****
  ***
   *
这是当用户输入5以后的结果 题目要求是这样的 让用户输入一个数 来做的菱形 要求做几层的 几层是由用户输入的数来决定
请各位朋友们把完整的代码告诉我 在下感激不尽!
谢谢!  请用循环做
2008-08-16 11:48
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
满足你的愿望
程序代码:
#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:谢楼下朋友的指点,现已改正----呵呵,是照你的程序效果改的。因为你的程序运行时,如果输入偶数,只能出现奇数层。如果从程序的简单化来讲,我这个比你的简单而且易理解多了。

[[it] 本帖最后由 广陵绝唱 于 2008-8-16 14:45 编辑 [/it]]
2008-08-16 14:01
xx2008
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-8-16
收藏
得分:0 
楼上代码明显错了 你输入 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-08-16 14:21
wbxnj
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-8-13
收藏
得分:0 
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-08-16 15:12
wbxnj
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-8-13
收藏
得分:0 
我写出个,欢迎指教.
#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-08-16 15:19
wbxnj
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-8-13
收藏
得分:0 
想了想广陵那种方法,还不错.毕竟题目解决的方法有很多.我也要向你学习!
2008-08-16 15:23
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回楼上两位
谢谢指点,你们的代码也不错,我也得向你们学习才是。谢谢。

    不过有一点我始终没明白,for循环只有一层代码,为什么还要加{}呢?浪费代码高度不说,而且有时候不易阅读?
2008-08-16 16:42
苏洵
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-8-10
收藏
得分:0 
我也瞎写了一个,运行通过了,高手给指点指点
/*用户输入整数,输出菱形*/
#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*/

[[it] 本帖最后由 苏洵 于 2008-8-16 19:04 编辑 [/it]]
2008-08-16 18:56
快速回复:用C画*图的问题
数据加载中...
 
   



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

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