1加到10000用FOR循环怎么写?

来源:百度知道 编辑:UC知道 时间:2024/05/30 07:54:12
#include<stdio.h>
void main()
{ int i,sum=0;
for(i=1;i<10001;i++)
sum=sum+i;
printf("sum=%d",sum);
}
为什么结果是1032,而用100可以用!!!

您的程序是从 1 + 2 + … + 999
结果是 50005000是对的啊
如果您的答案不对 那么是您的数据定义出错了
在电脑中 数据类型都有自己的精度
signed int 比特数是 16 取值范围 -32768~+32767 (2^15-1)
unsigned int 比特数 16 0~65535 (2^16-1)
signed short int 比特数 16 -32768~+32767 (2^16-1)
unsigned short int 比特数 16 0~+65535 (2^16-1)
long int 比特数32 范围是 -2147483648~+2147483647 (2^31-1)
unsigned long 比特数32 0~4294967295 (2^32-1)

所以可以看出加入您的电脑是16位的比特数 那么数据定义错了 如果是32位的 那么是可以出现正确结果的

因为整型的最大值是32767,超出范围了。所以,解决这个问题只要把int 换成long 就可以了。修改后的程序如下:

#include <stdio.h>
void main()
{
long i,sum;

for( sum=0,i=1; i<10001; i++)
sum = sum + i;

printf("sum=%ld\n",sum);
}

注意:
将sum定义为long
输出时用%ld就可以了。

定义数据类型太小了,整型正数最大值是32767,超出范围了,换成LONG就可以了

因为m 是int 型,太小了,换成long型 吧就对了