【求助】一个程序中的几处疑点
这段程序是书上的答案为什么用Microsoft Visual Studio 2010执行(不调试)也会出现几处错误?这些错误该怎么解决?
/*Exercise 5.1 Summing reciprocals of five values */
#include <stdio.h>
int main(void)
{
int i = 0;
const int nValues = 5; /* Number of data values */
double data[nValues]; /* Stores data values */
double reciprocals[nValues];
double sum = 0.0; /* Stores sum of reciprocals */
printf("Enter five values separated by spaces:\n");
for(;i<nValues ; i++)
scanf("%lf", &data[i]);
printf("\nYou entered the values:\n");
for(;i<nValues ; i++)
printf("%10.2lf", data[i]);
printf("\n");
for(;i<nValues ; i++)
reciprocals[i] = 1.0/data[i];
for(;i<nValues ; i++)
{
sum += reciprocals[i]; /* Accumulate sum of reciprocals */
if(i>0)
printf(" + ");
printf("1/%.2lf", data[i]);
}
printf(" = %lf\n", sum);
return 0;
}
错误1error C2057: 应输入常量表达式d:\microsoft visual studio 2010\hou\hou\min.c81Hou
错误2error C2466: 不能分配常量大小为 0 的数组d:\microsoft visual studio 2010\hou\hou\min.c81Hou
错误3error C2133: “data”: 未知的大小d:\microsoft visual studio 2010\hou\hou\min.c81Hou
错误4error C2057: 应输入常量表达式d:\microsoft visual studio 2010\hou\hou\min.c91Hou
错误5error C2466: 不能分配常量大小为 0 的数组d:\microsoft visual studio 2010\hou\hou\min.c91Hou
错误6error C2133: “reciprocals”: 未知的大小d:\microsoft visual studio 2010\hou\hou\min.c91Hou
[解决办法]
把nValues=5设置成宏定义,在每个for循环的括号内加上起始条件i=0,(不然i会依次相加,超出数组的边界)即
define nValues 5
for(i=0;i<nValues;i++)
同时删除掉const int nValues =5;