这是代码。它表示变量未初始化,尽管在主函数之后将其定义在代码的顶部。
#include<stdio.h>
int main()
{
int n, sum=0; i=0;
printf("Please enter a number to evaluate\n");
scanf_s("%d",&n);
for(i=0; i<=n; i++)
{
double(sum) = sum + double(1/n);
}
sum = (int)sum;
if(sum == 1)
{
printf("Adding %d 1/%d's gives a result of 1\n",n,n);
}
if(sum <= 1)
{
printf("Adding %d 1/%d's gives a result less than 1\n",n,n);
}
if(sum >= 1)
{
printf("Adding %d 1/%d's gives a result greater than 1\n",n,n);
}
return(0);
}
答案 0 :(得分:10)
在sum=0;
之后删除分号并更改
int n, sum=0; i=0;
到
int n, sum=0, i=0;
或将int n, sum=0; i=0;
更改为
int n, sum=0; int i=0;
旁注:
声明
double(sum) = sum + double(1/n);
错了。如果您的意思是double(sum)
,那么它就不是一种有效的语法。如果它像(double)sum
那样仍然是错误的,因为=
要求l值作为其左操作数。
我建议您将sum
声明为double
并将其重写为
int n = 1, i;
printf("Please enter a number to evaluate\n");
scanf_s("%d",&n);
double sum = 0.0;
for(i=0; i<=n; i++)
{
sum = sum + (1.0/n);
}
答案 1 :(得分:3)
如果scanf_s失败会怎么样?您需要初始化n
。