最新_实验三_参考答案详解

上传人:第*** 文档编号:33894807 上传时间:2018-02-18 格式:DOC 页数:9 大小:59.50KB
返回 下载 相关 举报
最新_实验三_参考答案详解_第1页
第1页 / 共9页
最新_实验三_参考答案详解_第2页
第2页 / 共9页
最新_实验三_参考答案详解_第3页
第3页 / 共9页
最新_实验三_参考答案详解_第4页
第4页 / 共9页
最新_实验三_参考答案详解_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《最新_实验三_参考答案详解》由会员分享,可在线阅读,更多相关《最新_实验三_参考答案详解(9页珍藏版)》请在金锄头文库上搜索。

1、Outstanding C+ 教育* 实验手册_ 实验三参考答案 *用心教育每一天!1实验三1、 编写程序,判断某一年是否是闰年。概念:闰年的条件是:(1)能被 4 整除,但不能被 100 整除的年份都是闰年,如 1996 年、2004 年是闰年;(2)能被 100 整除,又能被 400 整除的年份是闰年,如 1600 年、2000年是闰年。不符合这两个条件的年份不是闰年。“判断 20002500 年中的每一年是否是闰年,将结果输出 ”的算法可表示如下:设 y 为被检测的年份。可采取以下步骤:S1:2000 yS2:若 y 不能被 4 整除,则输出 y“不是闰年” 。然后转到 S6S3:若 y

2、 能被 4 整除,不能被 100 整除,则输出 y“是闰年” 。然后转到 S6S4:若 y 能被 100 整除,又能被 400 整除,则输出 y“是闰年” 。然后转到 S6S5:输出 y“不是闰年”S6:y+1 yS7:当 yusing namespace std;void main( )int year,leap;coutyear;if(year%4 = 0)if(year%100 = =0)if(year%400 = =0)leap=1;else leap=0;else leap=1;else leap=0;if(leap)Outstanding C+ 教育* 实验手册_ 实验三参考答案

3、*用心教育每一天!2coutusing namespace std;int main()for(int year=2000;yearusing namespace std;bool IsLeapYear(int year);int main()int year;cinyear;if(IsLeapYear(year)coutOutstanding C+ 教育* 实验手册_ 实验三参考答案 *用心教育每一天!3using namespace std;void PrintfNum();void main()cout using namespace std; bool num(int x) ;void

4、 main() for(int i=100;i #include using namespace std;void main()float s=1.0;for(int i=2;(1.0/(i*i)=1.0e-6;i+) / 是 float 的精度不是#include using namespace std;int main()int i,m,k;cinm;k = sqrt(m);for(i=2;ik)cout using namespace std;void main() int i,j; int k=0; for(i=i;i=2;j-) if(i%j=0) break; if(j=2) co

5、ut=k+1)s+=sqrt(m);return s;5、 (往届上机题)斐波纳契数列(一种整数数列,其中每个数等于前面两个数之和)即0,1,1,2,3,5,8,13请编写一个递归函数 fun() ,实现输出斐波纳契数列的第 n 个数。#include #include /此头文件可用来下列程序设置输出格式using namespace std;int fun(int n); /递归函数声明void main()for(int i=0;i#define N 10using namespace std;void main()Outstanding C+ 教育* 实验手册_ 实验三参考答案 *用心

6、教育每一天!7int i,j,t,aN=9,8,7,6,5,4,3,2,1,0;for(j=0;jai+1)t=ai;ai=ai+1;ai+1=t;for(j=0;jusing namespace std;const int N=10;/或#define N 10;void bubble(int a,int n);void swap(int void main()int aN;for(int j=0;jaj;bubble(a,N);for(j=0;jai+1)swap(ai,ai+1);void swap(int &a,int &b)int t;t=a;a=b;b=t;选择法排序:#inclu

7、de #define N 10using namespace std;void select(int a,int n);Outstanding C+ 教育* 实验手册_ 实验三参考答案 *用心教育每一天!8void swap(int void main()int aN;for(int j=0;jaj;select(a,N);for(j=0;jaj)k=j;swap(ai,ak);void swap(int &a,int &b)int t;t=a;a=b;b=t;冒泡法:只要是每挨着的两个数都要排序的就叫做冒泡法。选择法:每一大趟选择出一个最小或最大最小的。下面是咱上课讲的一个不太规范但最好理解

8、的一个排序法:void select(int a,int n) int i,j,t;for(i=0;iaj)t=ai;ai=aj;aj=t;Outstanding C+ 教育* 实验手册_ 实验三参考答案 *用心教育每一天!9用文件流完成冒泡法排序程序如下:#include #include using namespace std;const int N=10;/或#define N 10;void sort(int a,int n);void swap(int void main()int aN;ifstream indata(shuzu.txt); /*不鼓励用这种方法,鼓励用上课那种方法

9、:ifstream indata;indata.open(shuzu.txt); */ofstream outdata(result.txt);for(int j=0;jaj;sort(a,N); /调用自定义函数对数组 a 进行排序for(j=0;jai+1)swap(ai,ai+1);void swap(int &a,int &b)int t;t=a;a=b;b=t;辗转相除,又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至公元前 300 年。它首次出现于欧几里德的几何原本 (第 VII卷,命题 i 和 ii)中

10、,而在中国则可以追溯至东汉出现的九章算术 。它并不需要把二数作质因子分解。 辗转相除法的证明证明: 设两数为a、 b(ba) ,求它们最大公约数(a、 b)的步骤如下:用 b 除 a,得a bq1 r1(0rb) 。若 r1=0,则(a ,b)b;若 r10,则再用 r1除 b,得 brq2r2(0r2 r1) 。若 r2 0,则(a,b) r1 ,若r20,则继续用 r2 除 r1,如此下去,直到能整除为止。其最后一个非零余数即为(a,b) 。 辗转相除法的算法算法 辗转相除法是利用以下性质来确定两个正整数 a 和 b 的最大公因子的: 1. 若 r 是 a b 的余数, 则 gcd(a,b) = gcd(b,r) 2. a 和其倍数之最大公因子为 a。 另一种写法是: 1. a b,令r 为所得余数(0rb) 若 r = 0,算法结束;b 即为答案。 2. 互换:置 ab,br,并返回第一步。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号