C语言程序设计——求某个数列前20项和

这篇具有很好参考价值的文章主要介绍了C语言程序设计——求某个数列前20项和。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C语言程序设计(第五版)——谭浩强  P137页

10题:一个分数列:2/1,3/2,5/3,8/5,13/8,21/13…,求出这个数列的前20项之和

方法1(用while语句)

#include<stdlib.h>
#include<stdio.h>
int main()
{
	int i;
	double a=2,b=1,s=0;//a为初值分子,b为初值分母,s为该数列的和
	i=1;
	while(i<=20)//共20项
	{
		s+=a/b;//相当于s=s+a/b;如果a、b不定义为浮点型,那么s的结果会一直为零(重点)
		a=a+b;
		b=a-b;
		i=i++;
	}
	printf("%f\n",s);//不要忘记打印的类型为浮点型
	system ("pause");
	return 0;
}

方法2(用do…while语句)

#include<stdlib.h>
#include<stdio.h>
int main()
{
	int i;
	double a=2,b=1,s=0;
	i=1;
	do
	{
		s+=a/b;
		a=a+b;
		b=a-b;
		i=i++;
	}
	while(i<=20);//不要忘记打分号
	printf("%f\n",s);
	system ("pause");
	return 0;
}

方法1和方法2总结:许多小白在看到b=a-b;的时候都会不知道是什么意思,一直纠结。

在这里我写了一个更通俗易懂的代码:

#include<stdlib.h>
#include<stdio.h>
int main()
{
	int i;
	double a=2,b=1,s=0,t;//多定义一个浮点型变量t
	i=1;
	while(i<=20)
	{
		s+=a/b;
        t=a;//将a的值赋给t
		a=a+b;
		b=t;//再将t的值赋值给b
		i=i++;
	}
	printf("%f\n",s);
	system ("pause");
	return 0;
}

如果还是不懂可以看看我的解释:

  前两个代码中b=a-b;的原因是b想要的值仅仅是a=a+b;这串代码中a的值。也就是说将a的值赋值给b,即b=a。又因为a=a+b;这串代码在a赋值给b之前,如果写b=a;表达的是将a+b的值赋值给b了。

 第三个代码就很好的诠释了我的意思。多拿出一个变量t,将a的值赋给t,再将t的值赋给b,即b=a

如果还是不懂可以私聊我,我会为你解答。

方法3(用for语句)

#include<stdlib.h>
#include<stdio.h>
int main()
{
	int i;
	double s=0,a=2;
	for(i=1;i<=20;i++)
	{
		s+=a;	
	    a=1+1/a;
	}
	printf("%f\n",s);
	system ("pause");
	return 0;
}

方法3用到的a=1+1/a;这串代码许多初学者页也可能看不懂,其实这串代码是根据数学公式递推出来的。可以去看看原题中第一个数字和第二个数字的关系,就可以得出3/2=1+1/2。所以这串代码就是表示的这个意思。

总结:这三个循环都是无条件等价的,在一定情况下可以互换,不存在高低先后之分。文章来源地址https://www.toymoban.com/news/detail-759568.html

到了这里,关于C语言程序设计——求某个数列前20项和的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【高级程序设计语言C++】特殊类设计

    拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 用C++11的话,可以使用特殊的语法来实现一个不能被拷贝的类。在C++11中,可以使用删除函数(deleted function)来禁用拷

    2024年02月10日
    浏览(51)
  • C语言程序设计——设计一个学生管理系统(完美运行的程序(●‘◡‘●))

    通过c语言设计一个学生管理系统,要求有直观的主菜单,可以录入学生的信息,实现添加学生信息、显示学生信息、查找学生信息、删除学生信息、修改学生信息以及退出等功能。 1、首先因为学生有以下几个基本信息:姓名、年龄、学号、性别,依次由name、age、id和sex来表

    2024年02月08日
    浏览(48)
  • 南京邮电大学汇编语言程序设计实验二(用户登录验证程序的设计)

    1.掌握循环程序的编写以及结束循环的方法。 2.掌握DOS、BIOS功能调用的使用方法。 用户登录验证程序的实现 程序执行后,给出提示操作,请用户键入用户名和密码;用户在键入密码时,程序不回显键入字符;只有当用户键入的用户名,密码字符串和程序内定的字符串相同时

    2023年04月18日
    浏览(57)
  • 头歌:《C语言程序设计编程实践任务》循环结构程序设计 教学团队:祁文青

    任务:求1000以内所有的水仙花数。若一个 3 位整数的各位数字的立方之和等于这个整数,称之为“水仙花数”。 注: 前面题目写过,取余可以提取刀整数的末尾数字,只要逐步提取出来判断就行。 不能改变x的值(如x10),否则循环一直无法达到x1000,会陷入死循环。 任务:输

    2024年02月05日
    浏览(66)
  • Python语言程序设计 习题1

    一、选择题 1.python语言属于(C) A.机器语言    B.汇编语言   C.高级语言   D.科学计算语言 2.下列选项中,不属于python特点的是(B) A.面向对象   B.运行效率高   C.可读性好   D.开源 3.python程序文件的扩展名是(D) A.  .python   B.  .pyt    C.   .pt    D.   .py 4.以下叙述

    2024年02月08日
    浏览(48)
  • 《C语言程序设计》模拟试题

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1、已知字符’A’的ASCII码值为65,若变量x为char型,以下不能正确判断出x为大写字母的表达式是( )。 A、x = ‘A’ x = ‘Z’ B、!(x = ‘A’ || x = ‘Z’) C、(x + 32) = ‘a’ (x + 32) = ‘z’ D、x = 65 x = 90 2、下列关系表达式中,结果为“假”的是( )。

    2024年02月11日
    浏览(37)
  • Java语言程序设计试卷6套

    目录 Java语言程序设计试卷1 一、单项选择题 二、多项选择题 三、判断题 Java语言程序设计试卷2 一、单项选择题 二、多项选择题 三、判断题 Java语言程序设计试卷3 一、单项选择题 二、多项选择题 三、判断题 Java语言程序设计试卷4 一、单项选择题 二、多项选择题 三、判断

    2024年02月13日
    浏览(42)
  • Go语言程序设计(六)字典(映射)

            在Go语言中,Map是一种特殊的数据结构,它由一对无序的数据项组成,被称为键值对(Key-value Pair)。其中的一项是键(Key),另外一项是值(Value), Map通过把键映射到值来进行访问,这种方式可以加快数据查找的速度。所以,Map通常也被称作字典(Dictionary)或哈希表(Hash table) ,本

    2024年02月12日
    浏览(47)
  • 【高级程序设计语言C++】初识模板

    概念: 函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。 具体格式: templatetypename T1, typename T2,…,typename Tn 返回值类型 函数名(参数列表){} 输出结果: typename是用来定义模板参数,也可以使用class(切记

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包