用c语言实现1+2+3+...+n求和

  在做蓝桥杯题的时候,做到最简单的等差数列求和,我就先用for循环写了一个程序,其中的核心就是很简单的

sum += i;

具体的函数如下:

#include <stdio.h>

int main()
{
	int n;
	int i;
	int sum = 0;
	printf ("输入一个整数 n = ");
	scanf ("%d",&n);
	
	for (i = 1; i <= n; i++)
	{
		sum += i;
	}
	printf ("序列求和 sum = %d\n",sum);
	return 0;
}
由此函数的for循环,我想到了也可以用别的循环结构来写,便整理了一下,写了下来。

此程序是计算由1+2+...+10的和。

#include <stdio.h>

void main()
{
	int i;
	//for语句 
	int s1 = 0;
	for (i=1; i<=10; i++)
	{
		s1 += i;
	}
	printf ("s1=%d\n",s1);
	
	//while语句
	i = 1;
	int s2 = 0;
	while (i<=10)
	{
		s2 += i;
		i++;
	} 
	printf ("s2=%d\n",s2);
	
	//do...while语句
	i = 1;
	int s3 = 0;
	do
	{
		s3 += i;
		i++;
	} while(i<=10);
	printf("s3=%d\n",s3);
}

之后,我自己在计算结果与编译运行的结果是否一样时,用到了高斯公式,即“和=(首项+末项)*项数/2”,这样便可以不需用到循环了,由此也可缩短了代码,但是若是别的数列,还是应该先找到它的规律,再用循环来做。

#include <stdio.h>

int main()
{
	long long n;
	scanf ("%lld",&n);
	long long sum = 0;
	sum = (1+n)*n/2;
	printf ("%lld\n",sum);
	return 0;
}

此外说明的是,由于是提交到做题网站上,定义数时用的是long long 类型,在用它所给的编译器, 输出时,用“%l64d”,我试过了, 编译能通过,但运行时,是不行的,得用“%lld”才可以。但是对于与long long 类型相同的__int64可以用“%l64d”输出。



  • 27
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值