手机分类
  导航: 电脑时代在线 · 程序设计 · C语言 · C语言编程实例
有问题吗?看 疑难解答 电脑术语

C趣味程序百例(01)

 
硬件盘点
手机推荐
 
『C趣味程序百例(01)』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2005-6-7 
1.绘制余弦曲线
2.绘制余弦曲线和直线
3.绘制圆
   

 
 
1.绘制余弦曲线
    在屏幕上用“*”显示0~360度的余弦函数cos(x)曲线
*问题分析与算法设计
    如果在程序中使用数组,这个问题十分简单。但若规定不能使用数组,问题就变得不容易了。
    关键在于余弦曲线在0~360度的区间内,一行中要显示两个点,而对一般的显示器来说,只能按行输出,即:输出第一行信息后,只能向下一行输出,不能再返回到上一行。为了获得本文要求的图形就必须在一行中一次输出两个“*”。
    为了同时得到余弦函数cos(x)图形在一行上的两个点,考虑利用cos(x)的左右对称性。将屏幕的行方向定义为x,列方向定义为y,则0~180度的图形与180~360度的图形是左右对称的,若定义图形的总宽度为62列,计算出x行0~180度时y点的坐标m,那么在同一行与之对称的180~360度的y点的坐标就 应为62-m。程序中利用反余弦函数acos计算坐标(x,y)的对应关系。
    使用这种方法编出的程序短小精炼,体现了一定的技巧。
*程序说明与注释
#include<stdio.h>
#include<math.h>
void main()
{
    double y;
    int x,m;
    for(y=1;y>=-1;y-=0.1)          /*y为列方向,值从1到-1,步长为0.1*/
    {
        m=acos(y)*10;              /*计算出y对应的弧度m,乘以10为图形放大倍数*/
        for(x=1;x<m;x++) printf(" ");
        printf("*");                /*控制打印左侧的 * 号*/
        for(;x<62-m;x++)printf(" ");
        printf("*\n");             /*控制打印同一行中对称的右侧*号*/
    }
}
*运行结果

*思考题
    如何实现用“*”显示0~360度的sin(x)曲线。
 
-----------------------------------------------------------------------------
2.绘制余弦曲线和直线
   
在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(y-1)+31的迭加图形。其中cos(x)图形用“*”表示,f(x)用“+”表示,在两个图形相交的点上则用f(x)图形的符号。
*问题分析与算法设计
    本题可以在上题的基础上进行修改。图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。为此,可以先判断图形的交点,再分别控制打印两个不同的图形。
*程序注释与说明
#include<stdio.h>
#include<math.h>  
void main()
{
    double y;
    int x,m,n,yy;
    for(yy=0;yy<=20;yy++) /*对于第一个y坐标进行计算并在一行中打印图形*/
    {
        y=0.1*yy;                       /*y:屏幕行方向坐标*/
        m=acos(1-y)*10;       /*m: cos(x)曲线上y点对应的屏幕列坐标*/
        n=45*(y-1)+31;        /*n: 直线上y点对应的列坐标*/
        for(x=0;x<=62;x++)              /*x: 屏幕列方向坐标*/
            if(x==m&&x==n) printf("+");  /*直线与cos(x)相交时打印“+”*/
            else if(x==n) printf("+");   /*打印不相交时的直线图形*/
            else if(x==m||x==62-m) printf("*");  /*打印不相交时的cos(x)图形*/
            else  printf(" ");                  /*其它情况打印空格*/

[1] [2] 下一页  


如果您有什么疑问,可以至论坛提出或者解答他人的疑问   返回页面顶部

】【关闭窗口
·上一篇教程:
·下一篇教程:
·导航: 电脑时代在线 · 程序设计 · C语言 · C语言编程实例
相关文章
 
搞笑自拍|图片故事|美女图库|体坛宝贝|明星爆料|世界奇观|风光摄影|历史回忆|大千世界
Photshop超炫图片
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部  
网站文本地图
  版权所有:电脑时代在线 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2007 www.PCvz.com online services. all rights reserved. 蜀ICP备05015578
Template designed by LaoJiang. Optimized for 1024x768 to Firefox,Opera and MS-IE. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光