| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 644 人关注过本帖
标题:用“*”画图
只看楼主 加入收藏
ahyshong
Rank: 2
等 级:论坛游民
帖 子:28
专家分:86
注 册:2009-2-14
结帖率:100%
收藏
 问题点数:0 回复次数:7 
用“*”画图
#include<stdio.h>
#include<math.h>
main()
{
    double y;
    int x,m,n;
    for(y=10;y>=0;y--){
        m=2*sqrt(100-y*y);
        for(x=1;x<30-m;x++)printf(" ");
        printf("*");
        for(;x<30+m;x++)printf(" ");
        printf("*\n");
        n=-sqrt(y);
        for(x=1;x<30+n;x++)printf(" ");
        printf("+");
        for(;x<30-n;x++)printf(" ");
        printf("+\n");
    }for(y=0;y>=-10;y--){
        m=2*sqrt(100-y*y);
        for(x=1;x<30-m;x++)printf(" ");
        printf("*");
        for(;x<30+m;x++)printf(" ");
        printf("*\n");
        
    }
}

这应该一个圆和一个条抛物线的重叠图。但是上半部分显示的不是圆了,哪位可以帮忙解决一下,谢谢~~~
搜索更多相关主题的帖子: 画图 
2010-04-09 09:48
小比
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-4-9
收藏
得分:0 

 小姐(哥):
    能不能在程序里加点说明,这样可以增加程序的可读性。
  把题目发出来,这样有利于程序的编辑和调试。因为有一些
  程序系统检测没有问题,但是程序本身的一点小问题可以导
  致他不可用。
2010-04-09 10:51
zhangbohtz
Rank: 2
等 级:论坛游民
帖 子:36
专家分:39
注 册:2010-1-29
收藏
得分:0 
你输出的点是整数的点,字符界面的点和显示器的点是不同的!是一个字符的“点”;
2010-04-09 12:39
小比
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-4-9
收藏
得分:0 
    此程序有数据的丢失,数据的精度有所下降。原来的sqrt输出double型数被强制的转化为整型的,故显示器说出的点不是真正意义上的经过计算的点而是经过取舍的点。如果把方程换成x*x+y*y=100,则更接近与圆的图片。我认为把此程序的圆数据变大后可能会更像圆,但是没有够大的平台能显示出结果。
    这程序好像验证了一句伟人说的话:“程序的调试可以检测程序的错误,但是不能检测出程序本身的错误.”
    不过,你这个程序的设计思想不出,我借用了希望你不会介意。对了,本人能力有限,如果有好的方法不忘发表出共享。
2010-04-09 16:44
kanglei79
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-9
收藏
得分:0 
给点提示啊,大姐
2010-04-09 16:55
determine
Rank: 1
等 级:新手上路
帖 子:7
专家分:7
注 册:2010-3-31
收藏
得分:0 
//我的思路是先打中心线,再往左右各输一点
#include<stdio.h>
#include<math.h>
 void add(int n);//向右n个字符
  void dele(int n);//向左n个字符

void main()
{
    int x,y,r,i,j;
    printf("请输入坐标(中间以空格分开) :");
    scanf("%d%d",&x,&y);
    printf("请输入半径:");
    scanf("%d",&r);



    for(i=0;i<=2*r;i++)//把i看作是竖着的
    {
     add(x);
   
     j=(int)(sqrt(r*r-(r-i)*(r-i)));//强制转换
      dele(j);
       printf("*");
      add(2*j);
      if(j!=0)//最上和最下是一个星
       printf("*");
      
      printf("\n");//换行
    }
}
void dele(int n)
{
    int i;
    for(i=0;i<n;i++)
        printf("\b");
}
void add(int n)
{
    int i;
    for(i=1;i<=n;i++)
        printf(" ");
}

其实希望调用函数,实现画图,如输入参数。(主函数中调用如 circle(x,y,r), 没实现)
2010-04-09 18:09
好奇小子
Rank: 1
来 自:中国
等 级:新手上路
帖 子:10
专家分:5
注 册:2010-4-9
收藏
得分:0 
没说明的时候  看着还真是有点郁闷啊

色狼分等级,为爱会改变!
2010-04-09 21:40
ahyshong
Rank: 2
等 级:论坛游民
帖 子:28
专家分:86
注 册:2009-2-14
收藏
得分:0 
以下是引用好奇小子在2010-4-9 21:40:53的发言:

没说明的时候  看着还真是有点郁闷啊
以后注意,呵呵……
还没有养成好的编程习惯。
2010-04-09 23:23
快速回复:用“*”画图
数据加载中...
 
   



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

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