




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、例313求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。#include <iostream>#include <iomanip>using namespace std;int main( )long f1,f2;int i;f1=f2=1;for( i=1; i<=20; i+ )/设备输出字段宽度为12,每次输出两个数cout<<setw(12)<<f1<<setw(12)<<f2; /每输出完4个数后换行,使每行输出4个数if(i%2=0)
2、 cout<<endl;f1=f1+f2; /左边的f1代表第3个数,是第1、2个数之和f2=f2+f1; /左边的f2代表第4个数,是第2、3个数之和return 0;例314100200间的素数#include <iostream>1 / 56#include <cmath>#include <iomanip>using namespace std;int main() int m,k,i,n=0; bool prime; for(m=101;m<=200;m=m+2) prime=true;k=int(sqrt(m); for(i=2
3、;i<=k;i+)if(m%i=0) prime =false; break; if(prime) cout <<setw(5) <<m; n=n+1; if(n%10=0) cout <<endl; cout <<endl;return 0;例315译密码#include <iostream>using namespace std;int main()char c; while (c=getchar()!='n')if(c>='a'&&c<='z')|
4、 (c>='A'&&c<='Z') c=c+4; if(c>'Z'&&c<='Z'+4|c>'z')c=c-26;cout<<c;cout<<endl;return 0;习题:16、统计个数#include <iostream>using namespace std;int main ()char c; int letters=0,space=0,digit=0,other=0; cout<<"e
5、nter one line:"<<endl; while(c=getchar()!='n') if (c>='a' && c<='z'|c>='A' && c<='Z') letters+; else if (c=' ') space+; else if (c>='0' && c<='9') digit+; else other+; cout<<&qu
6、ot;letter:"<<letters<<", space:"<<space<<", digit:"<<digit<<", other:"<<other<<endl; return 0; 17、求Sn=a+aa+aaa+aaa(n个a)的值,n由键盘输入。#include<iostream>using namespace std;int main ()int a,n,i=1,sn=0,tn=0; cout<&l
7、t;"a,n=:" cin>>a>>n; while (i<=n) tn=tn+a; /赋值后的tn为i个a组成数的值 sn=sn+tn; /赋值后的sn为多项式前i项之和 a=a*10; +i; cout<<"a+aa+aaa+.="<<sn<<endl; return 0; 18、.求1!+2!+20!、#include <iostream>using namespace std;int main ()float s=0,t=1; int n; for (n=1;n<
8、=20;n+) t=t*n; / 求n! s=s+t; / 将各项累加 cout<<"1!+2!+.+20!="<<s<<endl; return 0; 19、求“水仙花数”例153=13+33+53#include <iostream>using namespace std;int main ()int i,j,k,n; cout<<"narcissus numbers are:"<<endl; for (n=100;n<1000;n+) i=n/100; j=n/10-i*
9、10; k=n%10; if (n = i*i*i + j*j*j + k*k*k) cout<<n<<" " cout<<endl;return 0; 20、找出1000之内所有的完数例如6的因子是1.2.3而6=1+2+3,所以6是完数#include <iostream>using namespace std; int main() int m,s,i; for (m=2;m<1000;m+) s=0; for (i=1;i<m;i+) if (m%i)=0) s=s+i; if(s=m) cout<&
10、lt;m<<" is a完数"<<endl; cout<<"its factors are:" for (i=1;i<m;i+) if (m%i=0) cout<<i<<" " cout<<endl; return 0; 21、2/1, 3/2, 5/3, 8/5, 13/8, 21/13,前20项之和#include <iostream>using namespace std;int main() int i,t,n=20; double a=
11、2,b=1,s=0; for (i=1;i<=n;i+) s=s+a/b; t=a; a=a+b; / 将前一项分子与分母之和作为下一项的分子 b=t; / 将前一项的分子作为下一项的分母 cout<<"sum="<<s<<endl; return 0; 24、输出图形#include <iostream>using namespace std;int main() int i,k; for (i=0;i<=3;i+) / 输出上面4行*号 for (k=0;k<=2*i;k+) cout<<&q
12、uot;*" / 输出*号 cout<<endl; /输出完一行*号后换行 for (i=0;i<=2;i+) / 输出下面3行*号 for (k=0;k<=4-2*i;k+) cout<<"*" / 输出*号 cout<<endl; / 输出完一行*号后换行 return 0;习题:1、求最大公约数和最小公倍数,用主函数条用两个函数 #include <iostream>using namespace std;int main() int hcf(int,int); int lcd(int,int,in
13、t); int u,v,h,l; cin>>u>>v; h=hcf(u,v); cout<<"H.C.F="<<h<<endl; l=lcd(u,v,h); cout<<"L.C.D="<<l<<endl; return 0; int hcf(int u,int v) int t,r; if (v>u) t=u;u=v;v=t; while (r=u%v)!=0) u=v; v=r; return(v); int lcd(int u,int v,int
14、h) return(u*v/h); 3、判别素数的函数 #include <iostream>using namespace std;int main() int prime(int); /* 函数原型声明 */ int n; cout<<"input an integer:" cin>>n; if (prime(n) cout<<n<<" is a prime."<<endl; else cout<<n<<" is not a prime.&quo
15、t;<<endl; return 0; int prime(int n) int flag=1,i; for (i=2;i<n/2 && flag=1;i+) if (n%i=0) flag=0; return(flag); 4、.求a!+b!+c!的值,用一个函数fac(n)求n!。4#include <iostream>using namespace std;int main() int fac(int); int a,b,c,sum=0; cout<<"enter a,b,c:" cin>>a>
16、;>b>>c; sum=sum+fac(a)+fac(b)+fac(c); cout<<a<<"!+"<<b<<"!+"<<c<<"!="<<sum<<endl; return 0; int fac(int n) int f=1; for (int i=1;i<=n;i+) f=f*i; return f; 7、.验证哥德巴赫猜想:一个不小于6的偶数可以表示为两个素数之和。7#include <iostream
17、>#include <cmath>using namespace std;int main()void godbaha(int); int n; cout<<"input n:" cin>>n; godbaha(n); return 0;void godbaha(int n) int prime(int); int a,b; for(a=3;a<=n/2;a=a+2) if(prime(a) b=n-a; if (prime(b) cout<<n<<"="<<a<&
18、lt;"+"<<b<<endl; int prime(int m)int i,k=sqrt(m); for(i=2;i<=k;i+)if(m%i=0) break; if (i>k) return 1; else return 0;11、用递归方法求f(n)=12+22+n2#include <iostream>using namespace std;int main() int f(int); int n,s; cout<<"input the number n:" cin>>n;
19、 s=f(n); cout<<"The result is "<<s<<endl; return 0; int f(int n) if (n=1) return 1; else return (n*n+f(n-1);例52 用数组Fibonacci数列#include <iostream> #include <iomanip>using namespace std;int main () int i; int f20=1,1; for(i=2;i<20;i+) fi=fi-2+fi-1; for(i=0;i&
20、lt;20;i+) if(i%5=0)cout<<endl; cout<<setw(8)<<fi; cout<<endl; return 0;例5.3用冒泡法对10个数排序#include <iostream>using namespace std;int main( ) int a10; int i,j,t; cout<<"input 10 numbers :"<<endl; for (i=0;i<10;i+) /输入a0a9cin>>ai; cout<<en
21、dl; for (j=0;j<9;j+) /共进行9趟比较 for(i=0;i<9-j;i+) /在每趟中要进行(10-j)次两两比较 if (ai>ai+1) /如果前面的数大于后面的数 t=ai;ai=ai+1;ai+1=t; /交换两个数的位置,使小数上浮 cout<<"the sorted numbers :"<<endl; for(i=0;i<10;i+) /输出10个数 cout<<ai<<" " cout<<endl; return 0;例54将二维数组行列
22、元素互换,存到另一个数组中a=1 2 3 5 6 b=1 42 53 6#include <iostream>using namespace std;int main() int a23=1,2,3,4,5,6; int b32,i,j; cout<<"array a:"<<endl; for(i=0;i<=1;i+) for(j=0;j<=2;j+) cout<<aij<< " " bji=aij;cout<<endl; cout<<"array
23、b:“<<endl; for(i=0;i<=2;i+) for(j=0;j<=1;j+) cout<<bij<< " " cout<<endl; return 0;例55求 3×4 二维数组中最大元素值及其行列号#include <iostream>using namespace std;int main() int i,j,row=0,colum=0,max; int a34=5,12,23,56,19,28,37,46,-12,-34,6,8; max=a00; /使max开始时取a00的
24、值 for(i=0;i<=2;i+) /从第0行第2行for(j=0;j<=3;j+) /从第0列第3列if(aij>max) /如果某元素大于max max=aij; /max将取该元素的值row=i; /记下该元素的行号icolum=j; /记下该元素的列号jcout<<"max= "<<max<< ",row="<<row<< ",colum="<<colum<<endl;return 0;例5.7用选择法对数组中10个整数按由
25、小到大排序#include <iostream>using namespace std;int main( )void select_sort(int array,int n); /函数声明int a10,i; cout<<"enter the originl array:"<<endl;for(i=0;i<10;i+) /输入10个数 cin>>ai; cout<<endl; select_sort( a ,10); /函数调用,数组名作实参 cout<<"the sorted arr
26、ay:"<<endl; for(i=0;i<10;i+) /输出10个已排好序的数 cout<<ai<<" " cout<<endl; return 0;void select_sort(int array,int n) /形参array是数组名 int i,j,k,t; for(i=0;i<n-1;i+) k=i; for(j=i+1;j<n;j+) if(arrayj<arrayk) k=j; t=arrayk;arrayk=arrayi;arrayi=t; 习题:6、打印出杨辉三角(要求
27、打印出10行)#include <iostream>#include <iomanip>using namespace std;int main() const int n=11; int i,j,ann; for (i=1;i<n;i+) aii=1; ai1=1; for (i=3;i<n;i+) for (j=2;j<=i-1;j+) aij=ai-1j-1+ai-1j; for (i=1;i<n;i+) for (j=1;j<=i;j+) cout<<setw(5)<<aij<<" &q
28、uot; cout<<endl; cout<<endl; return 0;C语言部分1. 编程计算1, 1+2, 1+2+3, , 1+2+3+n各项值的积答案:#include <iostream>using namespace std;void main()int i,n,mul=1,sum=0;cout<<"Please input n:"cin>>n;for (i=1;i<=n;i+)sum+=i;mul*=sum;cout<<"The multiple is:"&l
29、t;<mul<<endl;2. 编写重载函数Max可分别求取两个整数,三个字符,两个浮点型数,三个双精度数的最大值。答案:int max(int i,int j)if (i>j)return i;else return j;char max(char c1,char c2,char c3)char ch;if (c1>c2)ch=c1;else ch=c2;if (c3>ch)ch=c3;return ch;float max(float x,float y)if (x>y)return x;else return y;double max(doubl
30、e x1,double x2,double x3)double y;if (x1>x2)y=x1;else y=x2;if (x3>y)y=x3;return y;3.请编写一个函数int find(char s,char t),该函数在字符串s中查找字符串t,如果找到,则返回字符串t在字符串s中的位置(整数值);否则返回-1。注意:用数组方式及两重循环来实现该函数。答案:int find(char s,char t)int i,j,slen,tlen;slen=strlen(s);tlen=strlen(t); i=0;j=0;while (i<slen &&
31、; j<tlen)if (si=tj)i+;j+;else i=i-j+1;j=0;if (j>=tlen)return i-tlen+1;else return -1;4.写一程序,将字符串a的所有字符传送到字符串b中,要求每传送3个字符后放一个空格,例如,字符串a为”abcdefg”,则b为”abc deg g”。答案:#include <stdio.h>#include <string.h>#define N 40void fun(char s,char t) int i=0,j=0; while(si) tj=si; i+; j+; if (i)%3
32、=0) tj=' ' j+; tj='0'main() char aN,bN; printf("请输入原始字符串a: "); gets(a); fun(a,b); printf("加入空格后的字符串b: "); puts(b);5. 编程判断一个数是否为素数。答案:#include <iostream>#include <math.h>using namespace std;int prime(int m)int i,flag=1;for (i=2;i<=int(sqrt(m);i+)if (
33、m%i=0)flag=0;break; return flag;int main(void)int n;cout<<"请输入一个整数:"cin>>n;if (prime(n)cout<<n<<"是素数!"<<endl;elsecout<<n<<"不是素数!"<<endl;return 0;6.编程打印九九乘法表: 1×1=1 1×2=2 2×2=4 1×3=3 2×3=6 3×3=
34、9 .答案:#include <iostream>using namespace std;void main()int i,j;for (i=1;i<=9;i+)for (j=1;j<=i;j+)printf("%1d*%1d=%2d ",j,i,i*j); printf("n");7.请编写一个程序,程序的功能是打印以下图案。 * * * * * *答案:#include <iostream>using namespace std;void main()int i,j;for (i=1;i<=4;i+)for
35、(j=1;j<=4-i;j+)cout<<' 'for (j=1;j<=2*i-1;j+)cout<<'*'cout<<endl;for (i=3;i>=1;i-)for (j=1;j<=4-i;j+)cout<<' 'for (j=1;j<=2*i-1;j+)cout<<'*'cout<<endl;8. 写出下面程序的运行结果:#include <iostream.h>void average(float*p, in
36、t n)int i;float sum=0;for(i=0;i<n;i+,p+)sum+=(*p);cout<<sum/n;void main()float score22= 1,2,3,4 ;average(*score, 4);答案:2.5C+部分1定义一个满足如下要求的Date类。(1)用下面的格式输出日期:日/月/年(2)可运行在日期上加一天操作;(3)设置日期。答案:#include <iostream> using namespace std; extern int i = 0; class Date public: set(int y,int m,
37、int d); add(); print(); private: int year; int month; int day; ; Date:set(int y, int m, int d) year = y; month = m; day = d; Date:add() switch(month) case 1: case 3: case 5: case 7: case 8: case 10: if(day < 31) day += 1; else if(day = 31) day = 1; month += 1; break; case 12: if(day < 31) day
38、+= 1; else if(day = 31) day = 1; month = 1; year += 1; break; case 4: case 6: case 9: case 11: if(day < 30) day += 1; else if(day = 30) day = 1; month += 1; break; case 2: if(year % 4 = 0 && year % 100 != 0 | year % 400 = 0) if(day < 29) day += 1; else if(day = 29) day = 1; month+= 1;
39、else if(day < 28) day += 1; else if(day = 28) day = 1; month += 1; break; Date:print() cout << day << "/" << month << "/" << year << endl; void main() Date d1; int year; int month; int day; cout << "请输入年月日:" cin >> year
40、 >> month >> day; d1.set(year, month, day); d1.print(); d1.add(); cout << "下一天是:" ; d1.print(); 2定义一个时间类Time,能提供和设置由时、分、秒组成的时间,并编出应用程序,定义时间对象,设置时间,输出该对象提供的时间。答案:/Time.h class Time public: Time();Time();bool SetTime(int h,int m,int s); void GetTime(int &h,int &m,in
41、t &s); void Print(); private: int iHour,iMinute,iSecond;/*/Time.cpp#include <iostream>#include "Time.h" using namespace std;Time:Time()iHour=1;iMinute=1;iSecond=1;Time:Time()bool Time:SetTime(int h,int m,int s)if(h<0)|(h>23) return false; if(m<0)|(m>59) return false;
42、if(s<0)|(s>59) return false; iHour =h;iMinute= m;iSecond =s;return true; void Time:GetTime(int &h,int &m,int &s)h=iHour;m=iMinute;s=iSecond;void Time:Print()cout<<iHour<<':'<<iMinute<<':'<<iSecond<<endl; /*/mainfunction.cpp#includ
43、e <iostream>#include "Time.h"using namespace std;void main() Time t; t.SetTime(23,44,59);t.Print();3. 编写一个矩形的类,要求类中具有长和宽2个数据成员,具有构造函数、计算矩形的面积即及周长这3个成员函数。答案:class rectanglefloat width;float heigth;public:rectangle(float w, float h)width=w;heigth=h;float area()return width*heigth;float
44、 circulm()return 2*(width+heigth);4. 设计一个人的类,要求包含姓名、身份证号、年龄、以及人的总数和所有人的平均年龄这5个数据成员,然后编写一个测试程序,输入n个人的信息(姓名、身份证号和年龄),要求输出这些人的信息和平均年龄。 答案:#include<iostream>#include<cstring>using namespace std;const int n=3;class Person private: char name20; char id18; int age; public: static int count; /人数
45、 static float aveage; Person(void) Person(const char* names,char *ids,int ages) strcpy(name,names);/初始化姓名 strcpy(id,ids); age = ages;/初始化年龄 aveage+=age; count+; void display() cout<<"姓名:"<<name<<endl; cout<<"身份证:"<<id<<endl; cout<<"年
46、龄:"<<age<<endl; friend void ModifyAveage();/修改平均年龄的友元函数;int Person:count = 0;float Person:aveage=0;void ModifyAveage()Person:aveage=Person:aveage/Person:count;void main() int ages,i; char namestr20,idstr18; Person pern; for (i=0;i<n;i+) cout<<"请输入姓名:" cin>>n
47、amestr; cout<<"请输入身份证号码:" cin>>idstr; cout<<"请输入的年龄:" cin>>ages; Person temp(namestr,idstr,ages); peri=temp; ModifyAveage(); for (i=0;i<n;i+) peri.display(); cout<<"人的数量:"<<Person:count<<endl; cout<<"平均年龄:"<
48、;<Person:aveage<<endl;5. 编写一个圆的类,再使用派生类的机制,编写一个圆柱的类,求每个类都包含具有初始化功能的构造函数和相关数据的输出函数。答案:#include <iostream>#define pi 3.1416using namespace std; class circle protected: float r; float area; public: circle() r=0; circle(float radius)r=radius; void print() area=r*r*pi; cout<<"r=
49、"<<r<<" area="<<area<<endl; ; class column:circle protected: float h; float v; public : column(float radius,float height):circle(radius) h=height; void print() circle:print(); cout<<"h="<<h<<" volume="<<area*h<<
50、endl; ; void main() column col (3.0,2.0); col.print(); 6.重载一个函数模板,要求它可以返回两个值中的较大者,也可以求三个数的最大值。答案:/ 求两个任意类型值中的最大者template <typename T>inline T const& max (T const& a, T const& b) return a < b ? b : a;/ 求3个任意类型值中的最大者template <typename T>inline T const& max (T const&
51、a, T const& b, T const& c) return :max (:max(a,b), c);7.下面是整型安全数组类的一部分:试完善类的定义,使下段程序能够正常运行且不会出现内存泄漏。#include <iostream.h>class Arraypublic:Array(int x)count=x;p=new intcount;int & operator (int x)return *(p+x);protected:int count;int *p;答案:#include <iostream.h>class Arraypubl
52、ic:Array(int x); Array(Array &); Array(); void SetAt(int pos, int value); int GetAt(int pos); protected:int count;int *p;Array:Array(int x)count=x;p=new intcount;Array:Array(Array &a)int i;count=a.count;p=new intcount;for (i=0;i<count;i+) *(p+i)=*(a.p+i);Array:Array()delete p;void Array:SetAt(i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗机构的制剂管理
- 粉尘管控专项培训教程
- 养殖业安全生产与疫病防控体系建设
- 贴心指导2025中级会计试题及答案
- 探索人工智能课件
- 家庭教育盛宴:教育培训课件助力家长会
- 安全意识-日常安全常识教育-课件
- 航空故障判断技巧的试题及答案
- 高级审计中的财务合规性检查试题及答案
- 苏教版小学品德与社会
- 大学军事理论课教程第四章现代战争第二节 新军事革命
- 专题四“挺膺担当”主题团课
- 医院体检电子表格
- 国家义务教育质量监测初中美术试题
- 农村现代农业示范基地建设项目风险评估报告
- 呵护心理健康 安心快乐成长 课件(共18张PPT) 小学生主题班会
- 原发性肝癌英文版培训课件
- 执业医师血尿相关考核试题
- 学生自行离校的协议书
- 大概念教学:素养导向的单元整体设计
- 工余安健环培训
评论
0/150
提交评论