你确定是到10000吗?16bit的整数会溢出的,32bit绝对没问题的
那可以根据公式来实现1+2+3+……+10000 = 10000*(1+10000)/2
所以
#include
int main()
{
int n = 10000;
int sum = 0;
sum = (n+1)*n/2;
printf("%d\n",sum);
return 0;
}
用递归调用写了一个小程序:
#include
int fun (int n)
{
int a=0;
if(n==1)
a=1;
else a=n+fun(n-1);
return a;
}
void main()
{
int fun(int n);
int n;
int y;
scanf("%d",&n);
printf("输入的数为%d\n",n);
y=fun(n);
printf("结果:%d\n",y);
}
你将他们回答中的变量类型变为长整型(long),好像结果要超出int范围
#include
void main()
{
int num,sum=0;
for(int i=1;i<10001;i++)
sum+=num;
printf("结果是%d",sum);
}
#include
long Add(int i);
void main()
{
int i;
printf("i = ");
scanf("%d",&i);
printf("Add 1 to %d = %d",i,Add(i));
}
long Add(int i)
{
return (((i+1)*i)>>1);
}