C语言循环产生的数值在下一次循环累加如何解决?
问题描述:
原题是这样的:
我的代码是这样的:
#include <stdio.h>
int main(void)
{
int xiangshu = 0;
double sum1 = 0.0;
double sum2 = 0.0;
double half1 = 0.0;
double half2 =0.0;
printf("输入指定的项数:");
scanf("%d", &xiangshu);
while(xiangshu>0)
{
for (int i = 0; i<xiangshu; i++)
{
sum1 = sum1 + 1.0/(1.0+1.0*i);
}
for(int x =0;x<xiangshu;x = x+2)
{
half1= half1 + 1.0/(1.0+1.0*x);
}
for(int y = 1; y<xiangshu; y = y+2)
{
half2 = half2 - 1.0/(1.0 + 1.0*y);
}
sum2 = half1 + half2;
printf("the %d item result of the first sequence was %lf\n", xiangshu, sum1);
printf("the %d item result of the second sequence was %lf\n", xiangshu, sum2);
printf("Please anthor input the item you want to check:");
scanf("%d", &xiangshu);
}
printf("End \n");
return 0;
}
但是产生的值确实累加的:
我不知道这个问题在哪,因为这个章节理论上还没有用到判断语句,所以要用循环写,求解这个为什么两次的值为什么加到一起了,同时问如何解决该问题!?
答
在第13行和第14行之间加入如下内容:
sum1=0;
sum2=0;
half1=0;
half2=0;
答
你在while循环内开始时要将sum1,sum2,half1,half2等累加值都设置为0,不然每次循环都会在上次基础上累加的,每次循环要清零
答
while下面加一句
sum1 = sum2 = half1 = half2 = 0;
改了下,你参考哈
int main(void)
{
int xiangshu;
double sum1, sum2, half1, half2;//2个half可以不要
int x = 1; //控制项前的+-号
double list;//每一项的商
printf("输入指定的项数:");
scanf("%d", &xiangshu);
while (xiangshu > 0)
{
sum1 = sum2 = list = 0;//每次计算前初始化一下
for (int i = 1; i <= xiangshu; i++)
{
list = 1.0 / i;
sum1 = sum1 + list;
sum2 = sum2 + (list * x);
x = x * -1;
}
/*
for (int x = 0; x < xiangshu; x = x + 2)
{
half1 = half1 + 1.0 / (1.0 + 1.0 * x);
}
for (int y = 1; y < xiangshu; y = y + 2)
{
half2 = half2 - 1.0 / (1.0 + 1.0 * y);
}
sum2 = half1 + half2;
//*/
printf("the %d item result of the first sequence was %lf\n", xiangshu, sum1);
printf("the %d item result of the second sequence was %lf\n", xiangshu, sum2);
printf("Please anthor input the item you want to check:");
scanf("%d", &xiangshu);
}
printf("End \n");
return 0;
}