读书人

一个程序中的几处疑点

发布时间: 2012-10-29 10:03:53 作者: rapoo

【求助】一个程序中的几处疑点
这段程序是书上的答案为什么用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;

读书人网 >C语言

热点推荐