该段代码存在漏洞 已注释
想知道malloc分配的内存不能用数字表示数组吗
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(){
int column;
double *Array;
int i,j;
double sum = 0;
double x;
printf("请输入多项式项数:\n");
scanf("%d",&column);
Array=(double *)malloc(2*column*sizeof(double)); //申请内存空间
for (i = 0;i < 2;i++) { //初始化Array
for (j = 0;j < column;j++) {
Array[i*column + j] = 0;
}
}
for(i=0;i<2;i++) {
switch (i) {
case 0: printf("按降幂输入各项幂次\n"); break;
case 1: printf("按降幂输入各项系数\n"); break;
}
for(j=0;j<column;j++) {
scanf("%lf", &Array[i*column + j]); //用Array[i*ncolumns+j]保存幂次和系数
}
}
for (i = 0;i < 2;i++) {
for (j = 0;j < column;j++) {
switch (i) {
case 0: printf("%-10d", (int)Array[i*column + j]); break;
case 1: printf("%-10lf", Array[i*column + j]); break; //打印幂次和系数
}
}
printf("\n");
}
getchar();
printf("请输入变量x的值\n");
scanf("%lf", &x);
printf("%lf\n", x);
for (i = 0;i < 2;i++) {
for (j = 0;j < column;j++) {
sum += Array[2*column+j]*pow(x,Array[1*column+j]);
} //此处有问题,貌似不能用Array中数字,我也不知道咋办了
}
printf("x为%lf时多项式的值为%lf\n",x,sum);
free(Array);
return 0;
}