2 tomxukexuan Tomxukexuan 于 2014.07.28 19:18 提问

才刚刚学习C语言,遇到一道难题,一直得不出正确答案,希望得到大家指点!

问题是: 用“while”语句,求出“1-3+5-7+9-11+...-99+101”的值。
#include
int main(int argc, char argv[])
{
int number=1;
int vaule=0;
int sign=1;
while(number<101)
{
vaule+=number;
number+=2;
sign=-sign;
number
=sign;
}
printf("%d",vaule);
return 0;
}
但结果出来却是:死循环!
到底是哪里错了?
希望得到大家指点!

3个回答

a851614120a
a851614120a   2014.07.29 09:34
已采纳

#include

int main(int arg,char *argv)
{
int l_Num = 1;
int l_Total = l_Num;

while(l_Num < 101)
{
    l_Num += 2;
    l_Total -= l_Num;
    l_Num += 2; 
    l_Total += l_Num;
}

printf("total is %d\n",l_Total);
return 0;

}

你这里number=sign;number一直等于1或-1,一直满足条件

Tomxukexuan
Tomxukexuan 谢谢你的回答!
3 年多之前 回复
u011636482
u011636482   2014.07.28 19:26

int sign=1;这个有什么用么
number =sign;
number值就变了

Tomxukexuan
Tomxukexuan 也不行
3 年多之前 回复
Tomxukexuan
Tomxukexuan 可是,改为number*=sign;
3 年多之前 回复
xlovesh
xlovesh   2014.07.28 20:15

int main(int argc, char argv[])
{
int number=1;
int num_temp = 1;
int vaule=0;
int sign = -1;
while(number <= 101)
{
vaule+=num_temp;
num_temp = num_temp * sign ;

num_temp = (num_temp > 0)?(num_temp + 2):(num_temp - 2);    

number = abs(num_temp );

}
printf("%d",vaule);
return 0;
}

Tomxukexuan
Tomxukexuan 非常感谢!!!
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!