写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)

原创 2011年01月15日 21:05:00

程序如下:#include<stdio.h>
int Sum(int n)
{
  return ((long)1+n)*n/2;//或者return (1l+n)*n/2;
}
main()
{   
  int n;
     scanf("%d",&n);
     printf("1到%d的和是:%d/n",n,Sum(n));
}
   写成这样子,而不写成下面用for循环来实现1到n的求和,是因为上面这个程序的执行效率高。对于下面的解答,不管怎么去优化去优,其效率也不可能与直接return ( 1 l + n ) * n / 2相比!

 
int Sum( int n )
{
 long sum = 0;
 for( int i=1; i<=n; i++ )
 {
  sum += i;
 }
 return sum;
}

练习2-6 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。

练习2-7 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。 参考代码如...
  • taolusi
  • taolusi
  • 2016年09月01日 16:28
  • 2004

09:整型与布尔型的转换

总时间限制: 1000ms 内存限制: 65536kB 描述 将一个整型变量的值赋给一个布尔型变量,再将这个布尔型变量的值赋给一个整型变量,得到的值是多少?输入 一个整型范围内的整数,即初始时整...
  • qq_36006682
  • qq_36006682
  • 2017年04月04日 19:51
  • 348

题目:利用递归求1+2+3...100的和

在面试的时候遇到了这样的一道笔试题目,就是利用递归求出1到100的和,也就是1+2+3+........+100。 怎么说呢,递归是一种思想,用大白话来说,就是自己调用自己。 如一个方法A(),然...
  • shehun11
  • shehun11
  • 2015年09月24日 21:14
  • 3539

递归求:f(n)=1+2+3+……+n的值

写一个函数,求:f(n)=1+2+3+……+n的值   ①写出迭代公式:迭代公式为 ②确定递归终止条件:f(1)=1就是递归终止条件   ③将①②翻译成代码:将迭代公式等号右边的式子写入r...
  • nengyu
  • nengyu
  • 2012年05月15日 09:59
  • 4158

C++中整型的超范围赋值问题

在C++的标准中,是规定了每一个算术类型的最小存储空间的,但是该标准并不阻止编译器来使用更大的存储空间,而且事实上也正好如此,对于C++ 的内置类型,几乎所有的编译器都使用了更大的存储空间来存储数据...
  • u011390632
  • u011390632
  • 2014年02月14日 21:23
  • 2436

计算1!+2!+3!+...n!的值,n由键盘输入

#include void main() {  int i,j,n;  double m,s=0;  printf("Enter n:\n");  scanf("%d", &n);  ...
  • sssara
  • sssara
  • 2016年11月29日 16:07
  • 2075

在你的机器上,字符的范围有多大?

看《c与指针》的疑问   2013-04-27 00:44:56|  分类: 默认分类 |  标签:疑问  的  |字号 订阅 看《c与指针》的疑问我在学习中遇到的问题。 ...
  • wrw112358
  • wrw112358
  • 2013年05月22日 21:49
  • 750

请用递归算法,求1+2+3+...+n,n由键盘输入。

请用递归算法,求1+2+3+...+n,n由键盘输入。#include int digui(int n); void main() { int n; printf("请输入一个正整数n:\...
  • a121566780
  • a121566780
  • 2011年07月10日 15:43
  • 1495

有关0x67a9

绝对地址赋值int*    2009-12-22 16:19:44|  分类: c++ |  标签: |字号大中小 订阅 嵌入式系统经常具有要求程序员去访问某特定的内存位...
  • wzy198852
  • wzy198852
  • 2013年04月17日 21:35
  • 931

2.6 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。

题目分析: xxx...xnnnx...xxx     x yy..............ynnn    y 要变成这样的效果。 我们需要对x中n位清零,把y中最右边n位其他以为的位都清零并...
  • whdugh
  • whdugh
  • 2012年11月08日 10:44
  • 4169
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
举报原因:
原因补充:

(最多只允许输入30个字)