说明:1.本问题来源于《C语言经典、趣味、实用程序设计编程百例精解》,所有程序为本人自己编写。与原程序不同之处作有标记。

2.本系列所有程序均使用codeblocks编译,操作系统为Windows XP。

问题:在屏幕上用“*”显示0~360度的余弦函数cos(x)曲线(不使用数组)

分析:如果在程序中使用数组,这个问题十分简单。但若规定不能使用数组,问题就变得不容易了。关键在于余弦曲线在0~360度的区间内,一行中 要显示两个点,而对于控制台程序来说,只能按行输出,即:输出第一行信息后,只能向下一行输出,不能再返回上一行。为了获得本问题所要求的图形,就必须在一行中一次输出两个“*”。

#include <stdio.h>
#include <stdlib.h>
#include <math.h> int main(void)
{
int radian; //10倍弧度
double y; //y为y轴,值为-1到+1,步长为0.1;
int x; //用62列值代表x轴;62来源于2Pi*10约等于2*3.1*10; //用反余弦值求x更加方便
for(y=; y>=-; y-=0.1)
{
radian=acos(y)*; for(x=;x<=;x++)
{
if((x==radian)||(x==(-radian))) //反余弦函数值域[0,pi],左右对称
printf("*");
else
printf(" ");
}
printf("\n"); /*
书中的方法
for(x=1; x<radian; x++)
printf(" ");
printf("*");
for(; x<62-radian; x++)
printf(" ");
printf("*\n");
*/
} return ;
}

图1. 我的程序运行图片

图2. 书中程序运行图片

附加:这里尝试了下用数组写这个程序。

#include <stdio.h>
#include <stdlib.h>
#include <math.h> int main(void)
{
char cosMap[][];
int x, m;
double y; //y轴,值为-1到+1,步长为0.1; for(m=; m<; m++)
for(x=; x<; x++)
cosMap[m][x] = ' '; for(y=; y>=-; y-=0.1)
{
x=(int)(acos(y)*);
m=(int)(y*)+;
cosMap[-m][x] = '*';
cosMap[-m][-x] = '*';
} for(m=; m<; m++)
{
for(x=; x<; x++)
{
printf("%c", cosMap[m][x]);
}
putchar('\n');
} return ;
}

趣味C程序100.1 .1 绘制余弦曲线的更多相关文章

  1. 趣味C程序100.1 .2 绘制正弦曲线

    说明:1.本问题来源于<C语言经典.趣味.实用程序设计编程百例精解>,所有程序为本人自己编写.与原程序不同之处作有标记. 2.本系列所有程序均使用codeblocks编译,操作系统为Win ...

  2. 趣味C程序100.9 绘制杨辉三角

    说明:1.本问题来源于<C语言经典.趣味.实用程序设计编程百例精解>,所有程序为本人自己编写.与原程序不同之处作有标记. 2.本系列所有程序均使用codeblocks编译,操作系统为Win ...

  3. C语言经典程序100例

    -------------------------------------------------------------------------------- [程序1] 题目:古典问题:有一对兔子 ...

  4. 经典c程序100例==91--100

    [程序91] 题目:时间函数举例1 1.程序分析: 2.程序源代码: #include "stdio.h" #include "time.h" void mai ...

  5. java 经典程序 100 例

    1,编写程序,判断给定的某个年份是否是闰年.闰年的判断规则如下:( 1)若某个年份能被 4 整除但不能被 100 整除,则是闰年.( 2)若某个年份能被 400 整除,则也是闰年. import ja ...

  6. Python重写C语言程序100例--Part1

    ''' [程序1] 题目:有1.2.3.4个数字,能组成多少个互不同样且无反复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成全部的排列后再去 掉不满足条件 ...

  7. 教你制作挂件头像 | 小程序七十二变之 canvas 绘制国旗头像

    昨天朋友圈被「请给我一面国旗@微信官方」刷屏,虽然知道是假的,但是从另一个角度来看,弄清楚如何实现更有趣. 1.canvas 这就不得不提到小程序中的 API canvas,H5 中也是有 canva ...

  8. 经典c程序100例 1-10

    ==1--10 [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不 ...

  9. 经典c程序100例==11--20

    [程序11] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1 ...

随机推荐

  1. (转)解决png图片在IE6下不透明的方法

    来源于:http://xzl52199.blog.163.com/blog/static/95206446201142174540220/ 一.传统的JavaScript方法 思路: 1.一个专门解决 ...

  2. java随机数生成(固定位数)

    随机生成 a 到 b (不包含b)的整数: (int)(Math.random()*(b-a))+a; 随机生成 a 到 b (包含b)的整数: (int)(Math.random()*(b-a+1) ...

  3. java多线程样例

    这里我们做一个完整的样例来说明线程产生的方式不同而生成的线程的差别: package debug; import java.io.*;import java.lang.Thread; class My ...

  4. Day01 - Python 基础介绍

    1 Python 简介 1.1 Python 的由来 Python的创始人:吉多·范罗苏姆(Guido van Rossum) 1989年,吉多·范罗苏姆为了在阿姆斯特丹打发圣诞节假期时间,开发的一个 ...

  5. java Thread.join()

    thread1.join()方法阻塞调用此方法的线程,直到线程thread1完成,此线程再继续. 通常用于在main()主线程内,等待其它线程完成再结束main()主线程 @Test /** * ou ...

  6. [iOS 开发] Xcode常见报错及解决办法

    报错一: 在iOS7的真机运行时,弹出错误:App installation failed. There was an internal API error. 如图 解决办法: 在Xcode -> ...

  7. CentOS 6.7安装配置Cacti监控系统

    一.安装配置LAMP环境 yum -y install httpd php php-mysql php-snmp php-xml php-gd mysql mysql-server 启动http和my ...

  8. python 面向对象简单理解

    面向对象: 是一种程序设计范型 作用: 提高软件的重用性和灵活性,扩展性 世界万物一切皆为对象,对象即是指由特定状态,特征,行为的实体   知识点一: 代码的重用 举个栗子 比如小月月有了一个女朋友1 ...

  9. jquery刷新iframe页面的方法

    1,reload 方法,该方法强迫浏览器刷新当前页面. 语法:location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当 ...

  10. 前台研发工具Sublime

    沟通交流群 [极客Online : 546653637] 欢迎您! 今天一个朋友@我,问有没有好的IDE推荐一下,其实现在有很多文本工具可供选择,像Nodepad++.Editplus之类的,之前我使 ...