1到1000求和C语言程序,为什么结果是负数?

#include <stdio.h>
main()

{
int s;
int i;
s=0;
i=1;
for(i=1;i<=1000;i++)
s=s+i;
printf("SUM=%d",s);
getch();
}

结果是负23788 ?

第1个回答  2014-04-24

亲测结果完全正确,不知道你用的哪个编译器。关掉再建个工程吧

追问

用的是WIN TC.

第2个回答  2014-04-24
你需要了解int 的范围。。估计是溢出了。
第3个回答  2014-04-24
我这边是显示 500500

应该是编译器的问题。越界了。追问

用的是WIN TC.

第4个回答  2014-04-24
由于超出了整数的范围,

C语言求-1+2-3+4-5+6…++1000
1-2+3-4+5-6+...+1000的和为:-500 因为这个数列中有偶数个数,而且从第一项开始是减去一个正数,所以最终结果是一个负数。有帮到你的话望采纳 谢谢~

c语言 求1—1000所有完数并求和 下边的程序哪里错了
{ int n=1000;int r,j,i;for(i=1;i<n; i++){ r = 0;for(j=1;j

C语言正数相加变负数
编译器的问题。有可能你的编译器int类型是16位的。你可以把你的sum类型定义成long试一试。

C语言 一元多项式 求和的解法为什么我输出的是乱码 求高人修正 原代码...
0,1 \/\/ printf("%d,%d\\n",p->exp,p->coef); 多一换行符号 3 \/\/printf("%d",sum);\/\/取消 取址符号&

C语言的一个程序运行的问题..为什么反显会出错.请大家赐教
对于程序本身没错,编译通过,当你输入数据时,程序对数据进行计算,输入的数据超出-32768~32767时,输入数据错误,也就是说,你输入的数是0~65535时就是正确的数据,再解释,从32767~65535系统认为其为负数,也是正确的数据。在由就是为什么没有显示数据错误的提示,这也不难理解,首先对于数据空间j...

c语言,两数求和,结果错误,我这代码哪里错了。为什么结果一直出问题
你定义变量后,是给变量分配的内存 然后你给a,b都赋值了,对应的内存里的值也改了 但你没给sum赋值,sum显示的就是内存里原本存在的值了 要说哪里错了,就是你没写sum=a+b;

c语言中对数组求和为什么小数部分总是不对
这个很好说,因为很多编程语言都是这样的,比如java。因为计算机时2进制,而我们一般用十进制,所以他们都是把数字转换为2进制,然后通过与或非的逻辑实现,来计算2进制结果,再换回10进制。但是整数还好说,但是小数就有难处了。比如0.06就不能完全转化为10进制,那么就必须舍去一部分尾巴。所以以Java为...

C语言程序输出long型正整数数据,结果为负,如何处理?改为double也不行...
数太大,超限了。原题你依然还是没有放上来。从你的程序看,应该是我做过的一道最基础的C语言题目,输入a的值和n,求和。不过你逻辑思维能力极差,程序一塌糊涂,完全搞错了。我解答过一道题,已知一位正整数a,及正整数n,求s=a+aa+...+a...a,很基础的一道题目。不知道你想问的是不是这...

求1-2+3-4+5-6+7+…+99-100 C语言编程 下面程序哪里错了
那么将结论推广一下,对于n项的这个算式的结果求解,如果n为偶数,那么结果就是 -(n\/2),若n为奇数,那么结果就是 n - n\/2(n\/2向下取整)那么对于任意项数n的算式求解代码:include <stdio.h> int main(void){ int n;int sum;scanf("%d", &n);if (n % 2 == 0){ sum = n \/...

c语言编程 用两种不同的顺序,计算求和n的负2次方 n等于1-10000 约等 ...
尾数*2的指数 来表示,尾数相当于有效数字,它的长度是有限的,所以一开始加的数比较小,存累加和的变量sum和1.0\/i\/i 的数量级接近,误差就小。如果一开始就加了很大的数,到后面加很小的数基本上都被忽略的,你想1e30+1.5555,假设有效数字为8位,那结果可能还是1e30 ...

相似回答