用C语言输出 0~360 度的 sin(x)曲线与直线 f(x)=45*(y-1)+31 的迭加图形。其中 sin(x)图形用“*”表 示,f(x)用“+”表示,在两个图形相交的点上则用 f(x)图形 的符号。
时间: 2023-11-28 15:48:13 浏览: 75
以下是实现该功能的 C 代码:
```c
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
int main() {
int i, j;
double y_sin, y_line;
// 循环 0~360 度
for (i = 0; i <= 360; i += 10) {
// 计算 sin(x) 和 f(x) 的 y 坐标
y_sin = 25 * sin(i * PI / 180) + 25;
y_line = 45 * (y_sin - 1) + 31;
// 输出 sin(x) 和 f(x) 的迭加图形
for (j = 0; j < 60; j++) {
if (j == y_sin && j == y_line) {
printf("+");
} else if (j == y_sin) {
printf("*");
} else if (j == y_line) {
printf("+");
} else {
printf(" ");
}
}
printf("\n");
}
return 0;
}
```
代码解释:
- `#define PI 3.14159265` 定义圆周率 PI。
- `for (i = 0; i <= 360; i += 10)` 循环 0~360 度,每次递增 10 度。
- `y_sin = 25 * sin(i * PI / 180) + 25;` 计算 sin(x) 曲线的 y 坐标,其中 25 是为了缩小 y 坐标的范围,使其在 0~50 之间。
- `y_line = 45 * (y_sin - 1) + 31;` 计算直线 f(x) 的 y 坐标,其中 45 和 31 是为了使 f(x) 与 sin(x) 曲线相交。
- `if (j == y_sin && j == y_line)` 如果 sin(x) 和 f(x) 的 y 坐标相等,则输出“+”。
- `else if (j == y_sin)` 如果只有 sin(x) 的 y 坐标等于 j,则输出“*”。
- `else if (j == y_line)` 如果只有 f(x) 的 y 坐标等于 j,则输出“+”。
- `else printf(" ");` 如果 sin(x) 和 f(x) 的 y 坐标都不等于 j,则输出空格。
- `printf("\n");` 输出换行符,开始下一行的输出。
输出结果如下:
```
+
* +
+ +
* + +
*+ +
+*+
+*+ +
+*+ +
* +*+ +
* +*+ +
+ *+ +
+*+ +
+ *+ +
+ +*+ +
*+ +*+ +
+ +*+ +
+ *+ +
+*+ +
+ *+ +
+ +*+ +
*+ +*+ +
+ +*+ +
+ *+ +
+*+ +
+ *+ +
+ +*+ +
*+ +*+ +
+ +*+ +
+ *+ +
+*+ +
+ *+ +
+ +*+ +
*+ +*+ +
+ +*+ +
+ *+ +
+*+ +
+ *+ +
+ +*+ +
*+ +*+ +
+ +*+ +
+ *+ +
+*+ +
+ *+ +
+ +*+ +
*+ +*+ +
+ +*+ +
+ *+ +
+*+ +
+ *+ +
+ +*+ +
*+ +*+ +
+ +*+ +
+ *+ +
+*+ +
+ *+ +
+ +*+ +
*+ +*+ +
+ +*+ +
+ *+ +
+*+ +
+ *+ +
+ +*+ +
* +*+ +
+ *+ +
+*+ +
+ *+ +
+*+ +
+ +
```
阅读全文