题目:编程求sum=1-1/2+1/3-1/4...+1/99-1/100的值并输出。
参考如下:
#include<stdio.h>
int main()
{
int i, sign = 1;
double sum = 0;
i = 1;
while (i <= 100)
{
sum += 1.0 * sign / i++;
sign = -sign;
}
printf("%lf\n", sum);
return 0;
}
看看你的输出
出现了死循环,while(sign<=100)不写{ }默认循环体中只有一行代码,即i=-i,导致程序无法退出循环
#include <stdlib.h>
int main()
{
int i, sign=1;
double sum=0;
i = 1;
while (i <= 100) {
sum += 1.0f/(sign*i);
sign = -sign;
i++;
}
printf("%lf", sum);
return 0;
}
修改如下,供参考:
存在一些问题导致结果无法正确输出。下面是代码中存在的问题和需要进行改进的地方:
在循环内部,缺少对变量i和sign的更新操作。在每次循环迭代时,需要根据当前的循环次数来更新i的符号和sign的值。
int sign = 1;
double sum = 0.0;
for (int i = 1; i <= 100; i++) {
double c = (i * 1.0) / sign;
sum = sum + c;
sign = -sign; // 更新符号
// 输出每一次迭代的结果
printf("当前迭代结果: %f\n", sum);
}
// 输出最终的累加和
printf("最终结果: %f\n", sum);
不知道你这个问题是否已经解决, 如果还没有解决的话:#include<iostream>
using namespace std;
int main()
{
double sum = 0;
for (int i = 1; i <= 100; i++)
{
if (i % 2 == 0)
{
sum = sum - 1.0 / i;
}
else
sum = sum + 1.0 / i;
}
cout << sum << endl;
return 0;
}
解决方案如下所示:
#include <iostream>
using namespace std;
int main() {
int num;
double sum = 0;
cout << "请输入数列的项数:";
cin >> num;
for (int i = 1; i <= num; i++) {
if (i % 2 == 0) {
sum -= 1.0 / i;
} else {
sum += 1.0 / i;
}
}
cout << "数列的和为:" << sum << endl;
return 0;
}
代码解释:
另外,由于本题给出的参考资料存在误导性,建议不要查看参考资料。