|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c,m;
int n,p,sum;
a = 1.0;
b = 2.0;
c = b;
scanf("%d",&n);
do{
b += a;
a = c;
c = b;
m = b / a;
sum += m;
p = ++p;
}while(p<n);
printf("%.2f",sum);
return 0;
}
这段代码中存在几个问题导致错误:
1. 变量 p 没有初始化。在 int n,p,sum; 这一行, p 没有被赋初值。在使用 ++p 进行自增操作时,未定义的初始值会导致未知结果。
2. 变量 sum 没有初始化。在 int n,p,sum; 这一行, sum 没有被赋初值。在 sum += m; 这一行,未初始化的 sum 会导致未定义行为。
3. p = ++p; 这一行是错误的。这行代码的目的是将 p 自增1,但是使用 ++p 的同时将结果赋值给 p 会导致未定义行为。应该使用 p++; 或者 ++p; 。
4. 变量 m 没有初始化。在 float a,b,c,m; 这一行, m 没有被赋初值。在 m = b / a; 这一行,未初始化的 m 会导致未定义行为。
综上所述,修复后的代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, m;
int n, p = 0, sum = 0;
a = 1.0;
b = 2.0;
c = b;
scanf("%d", &n);
do {
b += a;
a = c;
c = b;
m = b / a;
sum += m;
p++;
} while (p < n);
printf("%.2f", sum);
return 0;
}
修复后的代码会正确计算并打印出结果。
|
|