




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
例313求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。#include #include using namespace std;int main( )long f1,f2;int i;f1=f2=1;for( i=1; i=20; i+ )/设备输出字段宽度为12,每次输出两个数coutsetw(12)f1setw(12)f2; /每输出完4个数后换行,使每行输出4个数if(i%2=0) coutendl;f1=f1+f2; /左边的f1代表第3个数,是第1、2个数之和f2=f2+f1; /左边的f2代表第4个数,是第2、3个数之和return 0;例314100200间的素数#include #include #include 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;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 using namespace std;int main()char c; while (c=getchar()!=n)if(c=a&c=A&cZ&cz)c=c-26;coutc;coutendl;return 0;习题:16、统计个数#include using namespace std;int main ()char c; int letters=0,space=0,digit=0,other=0; coutenter one line:=a & c=A & c=0 & c=9) digit+; else other+; coutletter:letters, space:space, digit:digit, other:otherendl; return 0; 17、求Sn=a+aa+aaa+aaa(n个a)的值,n由键盘输入。#includeusing namespace std;int main ()int a,n,i=1,sn=0,tn=0; coutan; while (i=n) tn=tn+a; /赋值后的tn为i个a组成数的值 sn=sn+tn; /赋值后的sn为多项式前i项之和 a=a*10; +i; couta+aa+aaa+.=snendl; return 0; 18、.求1!+2!+20!、#include using namespace std;int main ()float s=0,t=1; int n; for (n=1;n=20;n+) t=t*n; / 求n! s=s+t; / 将各项累加 cout1!+2!+.+20!=sendl; return 0; 19、求“水仙花数”例153=13+33+53#include using namespace std;int main ()int i,j,k,n; coutnarcissus numbers are:endl; for (n=100;n1000;n+) i=n/100; j=n/10-i*10; k=n%10; if (n = i*i*i + j*j*j + k*k*k) coutn ; coutendl;return 0; 20、找出1000之内所有的完数例如6的因子是1.2.3而6=1+2+3,所以6是完数#include using namespace std; int main() int m,s,i; for (m=2;m1000;m+) s=0; for (i=1;im;i+) if (m%i)=0) s=s+i; if(s=m) coutm is a完数endl; coutits factors are:; for (i=1;im;i+) if (m%i=0) couti ; coutendl; return 0; 21、2/1, 3/2, 5/3, 8/5, 13/8, 21/13,前20项之和#include using namespace std;int main() int i,t,n=20; double a=2,b=1,s=0; for (i=1;i=n;i+) s=s+a/b; t=a; a=a+b; / 将前一项分子与分母之和作为下一项的分子 b=t; / 将前一项的分子作为下一项的分母 coutsum=sendl; return 0; 24、输出图形#include using namespace std;int main() int i,k; for (i=0;i=3;i+) / 输出上面4行*号 for (k=0;k=2*i;k+) cout*; / 输出*号 coutendl; /输出完一行*号后换行 for (i=0;i=2;i+) / 输出下面3行*号 for (k=0;k=4-2*i;k+) cout*; / 输出*号 coutendl; / 输出完一行*号后换行 return 0;习题:1、求最大公约数和最小公倍数,用主函数条用两个函数 #include using namespace std;int main() int hcf(int,int); int lcd(int,int,int); int u,v,h,l; cinuv; h=hcf(u,v); coutH.C.F=hendl; l=lcd(u,v,h); coutL.C.D=lu) t=u;u=v;v=t; while (r=u%v)!=0) u=v; v=r; return(v); int lcd(int u,int v,int h) return(u*v/h); 3、判别素数的函数 #include using namespace std;int main() int prime(int); /* 函数原型声明 */ int n; coutn; if (prime(n) coutn is a prime.endl; else coutn is not a prime.endl; return 0; int prime(int n) int flag=1,i; for (i=2;in/2 & flag=1;i+) if (n%i=0) flag=0; return(flag); 4、.求a!+b!+c!的值,用一个函数fac(n)求n!。4#include using namespace std;int main() int fac(int); int a,b,c,sum=0; coutabc; sum=sum+fac(a)+fac(b)+fac(c); couta!+b!+c!=sumendl; 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 #include using namespace std;int main()void godbaha(int); int n; coutn; 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) coutn=a+bendl; int prime(int m)int i,k=sqrt(m); for(i=2;ik) return 1; else return 0;11、用递归方法求f(n)=12+22+n2#include using namespace std;int main() int f(int); int n,s; coutn; s=f(n); coutThe result is sendl; return 0; int f(int n) if (n=1) return 1; else return (n*n+f(n-1);例52 用数组Fibonacci数列#include #include using namespace std;int main () int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5=0)coutendl; coutsetw(8)fi; coutendl; return 0;例5.3用冒泡法对10个数排序#include using namespace std;int main( ) int a10; int i,j,t; coutinput 10 numbers :endl; for (i=0;iai; coutendl; for (j=0;j9;j+) /共进行9趟比较 for(i=0;iai+1) /如果前面的数大于后面的数 t=ai;ai=ai+1;ai+1=t; /交换两个数的位置,使小数上浮 coutthe sorted numbers :endl; for(i=0;i10;i+) /输出10个数 coutai ; coutendl; return 0;例54将二维数组行列元素互换,存到另一个数组中a=1 2 3 5 6 b=1 42 53 6#include using namespace std;int main() int a23=1,2,3,4,5,6; int b32,i,j; coutarray a:endl; for(i=0;i=1;i+) for(j=0;j=2;j+) coutaij ; bji=aij;coutendl; coutarray b:“endl; for(i=0;i=2;i+) for(j=0;j=1;j+) coutbij ; coutendl; return 0;例55求 34 二维数组中最大元素值及其行列号#include 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的值 for(i=0;i=2;i+) /从第0行第2行for(j=0;jmax) /如果某元素大于max max=aij; /max将取该元素的值row=i; /记下该元素的行号icolum=j; /记下该元素的列号jcoutmax= max ,row=row ,colum=columendl;return 0;例5.7用选择法对数组中10个整数按由小到大排序#include using namespace std;int main( )void select_sort(int array,int n); /函数声明int a10,i; coutenter the originl array:endl;for(i=0;iai; coutendl; select_sort( a ,10); /函数调用,数组名作实参 coutthe sorted array:endl; for(i=0;i10;i+) /输出10个已排好序的数 coutai ; coutendl; return 0;void select_sort(int array,int n) /形参array是数组名 int i,j,k,t; for(i=0;in-1;i+) k=i; for(j=i+1;jn;j+) if(arrayjarrayk) k=j; t=arrayk;arrayk=arrayi;arrayi=t; 习题:6、打印出杨辉三角(要求打印出10行)#include #include using namespace std;int main() const int n=11; int i,j,ann; for (i=1;in;i+) aii=1; ai1=1; for (i=3;in;i+) for (j=2;j=i-1;j+) aij=ai-1j-1+ai-1j; for (i=1;in;i+) for (j=1;j=i;j+) coutsetw(5)aij ; coutendl; coutendl; return 0;C语言部分1. 编程计算1, 1+2, 1+2+3, , 1+2+3+n各项值的积答案:#include using namespace std;void main()int i,n,mul=1,sum=0;coutn;for (i=1;i=n;i+)sum+=i;mul*=sum;coutThe multiple is:mulj)return i;else return j;char max(char c1,char c2,char c3)char ch;if (c1c2)ch=c1;else ch=c2;if (c3ch)ch=c3;return ch;float max(float x,float y)if (xy)return x;else return y;double max(double x1,double x2,double x3)double y;if (x1x2)y=x1;else y=x2;if (x3y)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 (islen & j=tlen)return i-tlen+1;else return -1;4.写一程序,将字符串a的所有字符传送到字符串b中,要求每传送3个字符后放一个空格,例如,字符串a为”abcdefg”,则b为”abc deg g”。答案:#include #include #define N 40void fun(char s,char t) int i=0,j=0; while(si) tj=si; i+; j+; if (i)%3=0) tj= ; j+; tj=0;main() char aN,bN; printf(请输入原始字符串a: ); gets(a); fun(a,b); printf(加入空格后的字符串b: ); puts(b);5. 编程判断一个数是否为素数。答案:#include #include using namespace std;int prime(int m)int i,flag=1;for (i=2;i=int(sqrt(m);i+)if (m%i=0)flag=0;break; return flag;int main(void)int n;coutn;if (prime(n)coutn是素数!endl;elsecoutn不是素数!endl;return 0;6.编程打印九九乘法表: 11=1 12=2 22=4 13=3 23=6 33=9 .答案:#include 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 using namespace std;void main()int i,j;for (i=1;i=4;i+)for (j=1;j=4-i;j+)cout ;for (j=1;j=2*i-1;j+)cout*;cout=1;i-)for (j=1;j=4-i;j+)cout ;for (j=1;j=2*i-1;j+)cout*;coutendl;8. 写出下面程序的运行结果:#include void average(float*p, int n)int i;float sum=0;for(i=0;in;i+,p+)sum+=(*p);coutsum/n;void main()float score22= 1,2,3,4 ;average(*score, 4);答案:2.5C+部分1定义一个满足如下要求的Date类。(1)用下面的格式输出日期:日/月/年(2)可运行在日期上加一天操作;(3)设置日期。答案:#include using namespace std; extern int i = 0; class Date public: set(int y,int m, 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 += 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; 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 year 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,int &s); void Print(); private: int iHour,iMinute,iSecond;/*/Time.cpp#include #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(h23) return false; if(m59) return false; if(s59) 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()coutiHour:iMinute:iSecondendl; /*/mainfunction.cpp#include #include Time.husing 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 circulm()return 2*(width+heigth);4. 设计一个人的类,要求包含姓名、身份证号、年龄、以及人的总数和所有人的平均年龄这5个数据成员,然后编写一个测试程序,输入n个人的信息(姓名、身份证号和年龄),要求输出这些人的信息和平均年龄。 答案:#include#includeusing namespace std;const int n=3;class Person private: char name20; char id18; int age; public: static int count; /人数 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姓名:nameendl; cout身份证:idendl; cout年龄:ageendl; 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;in;i+) coutnamestr; coutidstr; coutages; Person temp(namestr,idstr,ages); peri=temp; ModifyAveage(); for (i=0;in;i+) peri.display(); cout人的数量:Person:countendl; cout平均年龄:Person:aveageendl;5. 编写一个圆的类,再使用派生类的机制,编写一个圆柱的类,求每个类都包含具有初始化功能的构造函数和相关数据的输出函数。答案:#include #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; coutr=r area=areaendl; ; class column:circle protected: float h; float v; public : column(float radius,float height):circle(radius) h=height; void print() circle:print(); couth=h volume=area*hendl; ; void main() column col (3.0,2.0); col.print(); 6.重载一个函数模板,要求它可以返回两个值中的较大者,也可以求三个数的最大值。答案:/ 求两个任意类型值中的最大者template inline T const& max (T const& a, T const& b) return a b ? b : a;/ 求3个任意类型值中的最大者template inline T const& max (T const& a, T const& b, T const& c) return :max (:max(a,b), c);7.下面是整型安全数组类的一部分:试完善类的定义,使下段程序能够正常运行且不会出现内存泄漏。#include class Arraypublic:Array(int x)count=x;p=new intcount;int & operator (int x)return *(p+x);protected:int count;int *p;答案:#include class Arraypublic: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;icount;i+) *(p+i)=*(a.p+i);Array:Array()delete p;void Array:SetAt(int pos, int value)*(p+pos)=value;int Array:GetAt(int pos)return *(p+pos);8、编写类String 的构造函数、析构函数和赋值函数已知类String 的原型为:class Stringpublic:String(const char *str = NULL); / 普通构造函数String(const String &other); / 拷贝构造函数 String(void); / 析构函数String & operate =(const String
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《2025音乐作品使用许可合同》
- 定金买地合同范本
- 话费代充合同范本
- 供热委托经营合同范本
- 破碎矿石加工合同范本
- 砌墙的劳务合同范本
- 农村迷信阴阳合同范本
- 移动公司合作合同范本
- 电梯设备转让合同范本
- 水电装修合同范本6
- 中国儿童肥胖诊断评估与管理专家共识解读 课件
- 老年人心理疏导与沟通培训
- SL631水利水电工程单元工程施工质量验收标准第3部分:地基处理与基础工程
- 2025时政试题及答案(100题)
- 数学分析1试题及答案
- 中职班主任培训学生管理
- 2025年上半年辽宁省沈阳市总工会“特邀审计专家”招聘3人重点基础提升(共500题)附带答案详解
- 《人工智能技术应用导论(第2版)》高职全套教学课件
- 供水设施智能化改造项目经济效益分析
- 《Gitlab使用流程》课件
- 与供应商的合作与谈判
评论
0/150
提交评论