- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
C/C++语言经典实用趣味程序设计编程百例精解(1)
(详解收藏在)/?p=384
1.绘制余弦曲线
2.绘制余弦曲线和直线
3.绘制圆
4.歌星大奖赛
5.求最大数
6.高次方数的尾数
7.阶乘尾数零的个数
8.借书方案知多少
9.杨辉三角形
10.数制转换
答案(1 )
1.绘制余弦曲线
在屏幕上用“*”显示0~360度的余弦函数cos(x)曲线
*问题分析与算法设计
如果在程序中使用数组,这个问题十分简单。但若规定不能使用数组,
问题就变得不容易了。
关键在于余弦曲线在0~360度的区间内,一行中要显示两个点,而对一
般的显示器来说,只能按行输出,即:输出第一行信息后,只能向下一
行输出,不能再返回到上一行。为了获得本文要求的图形就必须在一行
中一次输出两个“*”。(yathing:可以对照程序代码的输出结果看看,如
果输出到下行去了,再返回上行就不可能了!这可是C程序!2007-6-18)
为了同时得到余弦函数cos(x)图形在一行上的两个点,考虑利用cos(x)
的左右对称性。将屏幕的行方向定义为x,列方向定义为y,则0~180度
的图形与180~360度的图形是左右对称的,若定义图形的总宽度为62列,
计算出x行0~180度时y点的坐标m,那么在同一行与之对称的180~360度
的y点的坐标就 应为62-m。程序中利用反余弦函数acos计算坐标 (x,y)
的对应关系。
使用这种方法编出的程序短小精炼,体现了一定的技巧。
*程序说明与注释
#includestdio.h
#includemath.h
int 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;xm;x++) printf( );
printf(*); /*控制打印左侧的 * 号*/
for(;x62-m;x++)printf( );
printf(*\n); /*控制打印同一行中对称的右侧’*’号*/
}
return 0;
}
Yathing:其实这个程序不是直接算cos,而是用acos函数,由行号作为
y坐标,进行x坐标的运算啊!2007-6-18
*思考题
如何实现用“*”显示0~360度的sin(x)曲线。
在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(y-1)+31的迭加图
形。其中cos(x)图形用“*”表示,f(x)用“+”表示,在两个图形相交的点
上则用f(x)图形的符号。
2.绘制余弦曲线和直线
*问题分析与算法设计
本题可以在上题的基础上进行修改。图形迭加的关键是要在分别计算出
同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。为此,
可以先判断图形的交点,再分别控制打印两个不同的图形。
*程序注释与说明
#includestdio.h
#includemath.h
int 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==mx==n) printf(+); /*直线与cos(x)相交时打印“+”*/
else if(x==n) printf(+); /*打印不相交时的直线图形*/
else if(x==m||x==62-m) printf(*); /*打印不相交时的cos(x)图形
*/
else printf( ); /*其它情况打印空格*/
printf(\n);
}
return 0;
}
*思考题
如何实现sin(x)曲线与cos(x)曲线图形的同时显示。
3.绘制圆
在屏幕上用“*”画一个空心的圆
*问题分析与算法设计
打印圆可利用图形的左右对称性。根据圆的方程:
R*R=X*X+Y*Y
可以算出圆上每一点行和列的对应关系。
*程序说明与注释
#includestdio.h
#includemath.h
int main()
{
double y;
int x,m;
for(y=10;y=-10;y–)
您可能关注的文档
- 8342.多媒体技术教程(第2版).pdf
- 8402.降云:VMware vSphere 4 操作系统搭建配置入门与实战.pdf
- 8416.高职高专计算机专业规划教材:多媒体技术及应用(第2版).pdf
- 8482.Dreamweaver CS3网页设计与制作(第2版)(附光盘1张).pdf
- 8495.Dreamweaver CS5网页设计入门、进阶与提高(附DVD光盘1张).pdf
- 8497.Java核心技术·卷Ⅰ:基础知识(第8版)(评注版).pdf
- 8533.网络分布计算与软件工程(第2版).pdf
- 8563.21世纪高职高专精品规划教材:计算机应用基础.pdf
- 8630.3GB3G网络核心技术与应用.pdf
- 8654.普通高等教育“十一五”国家级规划教材:现代网页设计及网站建设技术.pdf
文档评论(0)