✳新一期的实验任务为用c语言绘制0-2Π之间的sin函数和cos函数图像且利用到数组。
以上为实验报告的模板。
接下来是流程图和代码。
#include <stdio.h>#include <math.h>int main(){int a,b,i,j,x,y;double n, k;char py[21][63];for (y = 10; y >= 0; y--){k = y / 10.0;a = acos(k) * 10;b = asin(k) * 10;for (x = 0; x <= 62; x++){if (x <= 31)if (x == a || x == b || x == (31 - b)) py[10 - y][x] = '*';else py[10 - y][x] = ' ';else if (x == (62 - a) || x == b || x == (94 - 4)) py[10 - y][x] = '*';else py[10 - y][x] = ' ';}}for (y = 0; y >= -10; y--){k = y / 10.0;a = acos(k) * 10;n = asin(-k);b = (3.1415926 + n) * 10;for (x = 0; x <= 62; x++){if (x <= 31)if (x == a || x == b || x == (31 - b))py[10 - y][x] = '*';else py[10 - y][x] = ' ';else if (x == b || x == (62 - a) || x == (94 - b))py[10 - y][x]='*';else py[10 - y][x] = ' ';}}for (i = 0;i < 21;i++){for (j = 0;j < 63;j++){printf("%c", py[i][j]);}printf("\n");}return 0;}
运行结果如图所示:
本期实验的重点在于思考如何描点,并保存在数组中,最后输出并且保证输出的曲线圆滑。
要保证曲线的圆滑,首先我们应当在sin,cos函数图像的基础上适当的放大一些倍数。因为数组储存信息的方式,所以适当的放大倍数会让输出的图像更美观。其次就是数组的设置,这里我们设置的数组为py【21】【63】(py是我的名字缩写,你们想取啥名取啥名)。
这里我详细讲讲为什么要设置为【21】【63】(如果不知道只是什么意思的友友可以百度一下数组的概念,通俗易懂)首先我们都知道sin,cos函数图像在0-2Π范围的图像在y轴上的值是-1到1,x轴上的值是0到6.28(2Π约等于6.28)。因为数组都为整数型,为了好描点,我们采取放大十倍,范围变为-10到10和0到63(62.8进一取整)。以间隔为1为标准划分,因为没有坐标轴,所以竖向有21行(x轴上面分为十行,下面同理,再加上x轴那一行),横向有63列。
那么有了数组构建的思想,接下来就是在我们需要的地方让他输出'*',不需要的地方输出‘ ’。这里我们用的是反函数,设置for循环和if判断语句,以此排查符合的点。给复合的点赋值为‘*’,不符合的赋值为‘ ’。
完成数组的赋值后就是输出环节。采用内嵌式循环输出数组就好啦。
有疑问的话,评论区留言,我会尽力解答,讲错的地方也希望大家可以指出。感谢大噶~~~