#include <stdio.h> #include <math.h> #define N 21 /*N和N2分别表示二维数组的行数和列数的大小*/ #define N2 N*2 /*将x轴[0, 2pi]区间,y轴[-1,1]区间映射成为N行N2列的离散值*/ #define Pi 3.1415 int main(){ char a[N][N2]= {0}; int i,j; /*i和j分别是正弦函数y轴x轴坐标离散后对应的二维数组的行号和列号*/ double iv; int ivi; for(j=0;j<N2;j++){ /*离散化、量化,正弦函数可以用math.h中的sin()计算*/ iv= ; /*iv是根据j值求出的正弦函数值*/ ivi = ; /*ivi是将iv量化成最近的整数值*/ a[ ][j] = '*'; } for(i=0;i<N;i++) /*打印二维数组*/ for(j=0;j<N2;j++) printf(j==N2-1?" %c\n":" %c",a[i][j]); return 0; }
时间: 2024-03-27 22:37:02 浏览: 62
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
好的,我来补充一下。
```
#include <stdio.h>
#include <math.h>
#define N 21 /*N和N2分别表示二维数组的行数和列数的大小*/
#define N2 N*2 /*将x轴[0, 2pi]区间,y轴[-1,1]区间映射成为N行N2列的离散值*/
#define Pi 3.1415
int main() {
char a[N][N2]= {0}; //将所有元素初始化为0
int i,j; /*i和j分别是正弦函数y轴x轴坐标离散后对应的二维数组的行号和列号*/
double iv; int ivi;
for(j=0;j<N2;j++){
/*离散化、量化,正弦函数可以用math.h中的sin()计算*/
iv = sin(2*Pi*j/N2); /*iv是根据j值求出的正弦函数值*/
ivi = (int)(iv*N+0.5); /*ivi是将iv量化成最近的整数值*/
a[N-1-ivi][j] = '*'; //将对应位置赋值为'*',注意这里需要将y轴坐标进行翻转
}
for(i=0;i<N;i++) /*打印二维数组*/
for(j=0;j<N2;j++)
printf(j==N2-1?" %c\n":" %c",a[i][j]);
return 0;
}
```
这段代码的作用是绘制一条正弦函数的图像,将其离散化后存储在一个二维数组中,并输出该数组的内容。
具体修改的地方包括:
1. 在定义二维数组a时,使用了花括号将所有元素初始化为0,以防止出现未经初始化的值。
2. 在for循环中,使用sin函数计算正弦函数的值,并将其量化成最近的整数值,将对应位置赋值为'*'。
3. 在for循环结束后,使用两层循环打印二维数组a的内容。
注意,在将正弦函数的值量化成整数值时,需要将其乘以N并加上0.5,再将结果转换成整数,这是为了实现四舍五入的效果。同时,由于数组下标的范围是0到N-1,因此需要将y轴坐标进行翻转,即将ivi赋值给a[N-1-ivi][j]。
阅读全文