初学C++实验报告题目及答案.doc_第1页
初学C++实验报告题目及答案.doc_第2页
初学C++实验报告题目及答案.doc_第3页
初学C++实验报告题目及答案.doc_第4页
初学C++实验报告题目及答案.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

桂林电子科技大学计算机科学与工程信息安全计算机程序设计与问题求解(C+)实验报告班 级 *00360* 学 号 *00360* 姓 名 路边葱子 指导教师 二O一二年三月实验一1.将双撇号中的内容修改为汉字输出。2将计算改为乘和除运算(,/),重点掌握整除取值规律 3.实现三个数排序,用不同顺序和不同类型的数输入,测试程序的正确性。程序代码: 1、#include int main() cout 这 是; cout 一个 C+; cout 程序 endl; return 0;2、乘法#include void main() int a,b,c; coutab; c=a*b; couta*b=a*bendl; couta*b=cendl;除法#include void main() int a,b,c; coutab; c=a/b; couta/b=a/bendl; couta/b=cendl;3、#include void main() int x,y,z,t; coutxyz; if (x=y) t=x;x=y;y=t; if (y=z) t=y;y=z;z=t; if (xy) t=x;x=y;y=t; coutx,y,zendl;实验二1. 求C+语言提供的随机函数的最大值和最小值用自己输入的种子产生100000个随机数并求最大值和最小值;将随机数种子改为用系统时间time实现模拟100次掷钱币的过程,输出“f”表示此次钱币正面朝上,输出“b”表示此次钱币反面朝上,并统计这100次中,共有多少次正面朝上,多少次反面朝上。程序代码:1.(1)#include #include void main() int seed;cout请输入种子:seed;srand(seed); int i,temp,max,min,a(0),b(32767); for(i=1;i=100000;i+) temp=rand(); couttempa?temp:a); a=max; min=(tempb?temp:b); b=min; coutendl; coutmax=maxendl; coutmin=minendl;1.(2)#include #include #include void main() int temp,max,min,a(0),b(32767); srand(time(NULL); for(int i=1;i=100000;i+) temp=rand(); couttempa?temp:a); a=max; min=(tempb?temp:b); b=min; coutmax=maxendl; coutmin=minendl;1.(3)#include #include #include void main() int fac(0),back(0),temp; srand(time(NULL); for(int i=1;i=100;i+) temp=rand(); if(temp32767/2)coutf ;fac+; else coutb ;back+; coutendl钱币正面朝上的次数为:facendl; coutendl钱币反面朝上的次数为:backendl;实验三 1.求水仙花数 153= 13+53+332.输入两个正整数m和n,求其最大公约数与最小公倍数 m=18 n=27 最大公约数为9 最小公倍数为543.输入一串字符,分别统计其中英文字母、空格、数字和其他字符的个数。 Li Ming said. I am a student. My student number is 20103456. 4.分别用if-else语句和switch语句对输入的一个学生成绩进行判断,如果是低于60分,输出“不及格”,如果是6074分,输出“及格”,如果是75 84分,输出“良好”,如果是85 100分,输出“优秀”5.银行确定给信用卡消费的客户回馈一定的消费额。刷卡消费在3000元5000元以内的,返还消费额的0.3,5000元7500元以内的,返还消费额的0.5,7500元以上的,返还消费额的1,输入消费金额,打印出对应的返款金额。 程序代码:1#include using namespace std;int main() int i,j,k,n;for(n=100;n1000;n+)i=n/100;j=(n%100-n%10)/10; k=n%10;if(i*i*i+j*j*j+k*k*k=n)cout水仙花数是:nendl;return 0;2#include using namespace std;int main()int m,n,temp,r,p;cout请输入两个整数:mn;if(mn)temp=m;m=n;n=temp;p=m*n;while(n!=0)r=m%n;m=n;n=r;cout最大公约数为:mendl;cout最小公倍数为:p/mendl;return 0;3#include using namespace std;int main() char c;int n1,n2,n3,n4;n1=n2=n3=n4=0;while(c=getchar()!=n)if(c=a&c=A&c=0&c=9)n2+;else if(c= )n3+;else n4+;cout字母字符的个数是:n1endl; cout数字字符的个数是:n2endl; cout空格字符的个数是:n3endl; cout其他字符的个数是:n4endl;return 0;4if-else#include using namespace std;int main()int x;cinx;if(x60)coutx不及格=60&x=74)coutx及格=75&x=84)coutx良好=85&x=100)coutx优秀endl;return 0;Switch#include using namespace std;int main()int x,a;cinx;if(x=60&x=75&x=85&x=100) a=4;switch (a)case 1:cout不及格endl;break; case 2:cout及格endl;break; case 3:cout良好endl;break; case 4:cout优秀endl;break;return 0;5#include using namespace std;int main()int a,i;cout请输入刷卡消费金额ii;if(i3000)a=i*0;else if(i5000)a=i*0.003;else if(i=7500)a=i*0.01;cout返款金额为:aendl;return 0;实验四1.编写一个完成两个数交换的函数swap;2.编写一个完成n个数排序的函数sort,凡是需要交换两个元素值都调用swap来完成。分别用指针和引用两种方法都做;3.编写主函数,主函数中定义数组并输入值,通过调用sort完成对数组元素的排序。程序代码:1#includeusing namespace std;void swap(int *x,int *y) int t; t=*x;*x=*y;*y=t; cout*x=*x *y=*yab;swap(a,b); couta=a b=bendl;return 0;2/用引用的方法#includeusing namespace std;void swap(int &x,int &y);int main()void sort(int);int a10,i,j;int p1,p2;cout请输入十个数:a10;for(j=0;j9;j+)for(i=0;i10-j;i+)p1=ai;p2=ai+1;if(p1p2)swap(p1,p2);cout十个数的排列为:endl;for(i=0;i10;i+)coutai ;coutendlendl;return 0;void swap(int &x,int &y)int temp;temp=x;x=y;y=temp;用指针的方法#include using namespace std;void swap(int *x,int *y);int main()void sort(int);int a10,i,j;int p1,p2;cout请输入十个数:a10;for(j=0;j9;j+)for(i=0;i10-j;i+)p1=ai;p2=ai+1;if(p1p2)swap(p1,p2);cout十个数的排列为:endl;for(i=0;i10;i+)coutai ;coutendlendl;return 0;void swap(int *x,int *y)int t;t=*x;*x=*y;*y=t;cout*x=*x *y=*yendl;3#include#includeusing namespace std;int main()int a5=1,9,0,23,12;void sort(int);sort(a);return 0;void sort(int a)int i,j,t;for(j=0;j5;j+)for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;cout数组排列为:endl;for(i=0;i5;i+)coutai ;coutendlendl;实验五1.将前面编写的求两个整数求最大公约数与最小公倍数的程序改写为两个函数,将两个数m和n作为参数传递。 2.写一个求n!的函数,并参过调用求sum=a!+b!+c!。3.写一个判断素数的函数,并通过调用判断2000年至3000年间有哪些是素数年号。程序代码:1、#includeusing namespace std;int max(int m,int n);int min(int m,int n,int p);int main()int m,n,p,q;cout请输入两个整数:mn;p=max(m,n);q=min(m,n,p);cout最大公约数是:pendl;cout最小公倍数是:qendl;return 0;int max(int m,int n)int temp,i,k;if(mn)temp=m;m=n;n=temp;for(i=1;i=n;i+)if(m%i=0&n%i=0)k=i;return k;int min(int m,int n,int p)int a,b;a=m*n;b=a/p;return b;2#includeusing namespace std;int fac(int n);int main() int a,b,c,s2;cinabc;s2=fac(a)+fac(b)+fac(c);couta!+b!+c!=s2endl;return 0;int fac(int n)int i,s1=1;for(i=1;i=n;i+)s1=s1*i;return s1;3#include#includeusing namespace std;#includeint main()int prime(int);int i;cout素数年份为:endl;for(i=2000;i=3000;i+)if(prime(i)couti ;return 0;int prime(int n)int flag=1,i;for(i=2;i=1时,pn(x)=(2n-1)x-pn-1(x)-(n-1)pn-2(x)/n4、程序代码:1#include#includeusing namespace std;int main()double solut(double,double,double,double);double a,b,c,d;cout请输入一组a、b、c、d的值abcd;coutsolut(a,b,c,d)=1e-5);return(x);2.#include#includeusing namespace std;int main()void godbaha(int);int n;cout请输入n: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)coutn=a+bendl;int prime(int m)int i,k=sqrt(m);for(i=2;ik)return 1;else return 0;3.#include using namespace std;int pn(int n,int x);int main()int n,pn1,x;cout请输入n和x的值:nx;pn1=pn(n,x);coutn阶多项式的值为:pn1endl;return 0;int pn(int n,int x)if(n=0)return 1;else if(n=1)return x;else return (2*n-1)*x*pn(n-1),x)-(n-1)*pn(n-2),x)/n;实验七1. 求二维数组中最大值元素及所在的行和列,分别以数组元素作参数及数组名作参数完成。2.写一个求矩阵转置的函数,用数组名作参数,通过调用完成一个55的矩阵的转置。3.用指针作参数,完成三个数的排序。程序代码:1/数组元素作参数#includeusing namespace std;int main()int max_value(int x,int max);int const n=4;int const m=3;int max,s,i,j,p,q;int a34=2,8,4,9,3,1,10,7,6,5,11,13;max=a00;i=0;j=0;for(p=1;p=n;p+)for(q=1;q=m;q+)s=max_value(apq,max);if(s!=max)max=s;i=p;j=q;coutmax=max i=i j=jmax)maxx=x;else maxx=max;return maxx;/用数组名作函数参数#includeusing namespace std;int main()int max_value(int a4);int i,j,max,r=0,c=0;int a34=2,8,4,9,3,1,10,7,6,5,11,13;for(i=0;i3;i+)for(j=0;j4;j+)max=a00;max=max_value(a);for(i=0;i3;i+)for(j=0;j4;j+)if(max=aij)r=i;c=j;coutmax=max r=r c=cendl;return 0;int max_value(int a34)int i,j,max;for(i=0;i3;i+)for(j=0;jmax)max=aij;return (max);2#includeusing namespace std;int main()void convert(int a55);int a55=3,6,1,9,4,1,3,2,5,7,8,5,0,3,4,9,6,3,5,7,2,1,4,7,3;int i,j;for(i=0;i=4;i+)for(j=0;j=4;j+)convert(a);cout数列的转置为:endl;for(i=0;i5;i+)for(j=0;j5;j+)if(j=4)coutaijendl;else coutaij ;void convert(int a55)int t;for(int i=0;i5;i+)for(int j=0;ji;j+)t=aij;aij=aji;aji=t;3#includeusing namespace std;int main()void swap(int*p1,int*p2);int n1,n2,n3;int *p1,*p2,*p3;cout请输入n1,n2,n3:n1n2n3;p1=&n1;p2=&n2;p3=&n3;if(n1n2)swap(p1,p2);if(n1n3)swap(p1,p3);if(n2n3)swap(p2,p3);cout排列为:n1 n2 n3endl;return 0;void swap(int *p1,int *p2)int p;p=*p1;*p1=*p2;*p2=p;实验八1、有一个已按从小到大顺序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。程序分析:首先判断此数是否小于第一个数或大于最后一个数,然后再考虑插入到中间的情况,插入后此元素之后的数,依次后移一个位置。2、集合a=6 2 5 4 1 3 10 8 9 7 集合b=12 2 3 41 45 55 67 3 5 23从a,b中删去那些既在a 中出现又在b中出现的数后打印出集合a和集合b。3、 用413的数组deck表示一付牌(大小王除外)。行表示花色,0行表示方块,1表示梅花,2表示红心,3表示黑桃,列表示牌的面值012。用数组suit4表示花色,定义为“const char *suit4=Diamonds, Cluds, Hearts, Spades;”。用数组face13表示面值,定义为“const char *face13= Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King;”,deck数组的定义为“int deck413=0;”编写一个函数void shuffle(int d13)模拟洗牌的过程,再编写一个函数void deal(const int13,const char*,const char *)模拟发牌的过程。在主函数中初始化这3个数组,并通过调用两个函数完成洗牌发牌过程。4、 利用随机函数编程模拟掷骰子游戏,随机函数的种子取当前时间(time(NULL),游戏规则如下:游戏者每次掷两枚骰子,每个骰子六个面,这些面上的点数为1、2、3、4、5、6,计算两枚骰子朝上面点数之和。如果第一次掷时和为7或11,则游戏者赢。如果第一次掷时和为2、3、或12,则游戏者输,庄家赢。如果第一次掷时和为4、5、6、8、9、10,则这个数作为游戏者的点数。要想赢,必须继续掷骰子,直到再次掷到这个点数。但如果在掷出这个数之前掷出了7点,则游戏者输。程序代码:1.#define NULL 0#include using namespace std;struct studentdouble num;struct student *next;int main()student a,b,c,d,e,f,*head,*p1,*p2,*p,*p0;a.num=2;b.num=4; c.num=6;d.num=8;e.num=10;f.num=7;head=&a;a.next=&b;b.next=&c;c.next=&d;d.next=&e;e.next=NULL;p1=head;p=&f;if(head=NULL)head=p;p-next=NULL;elsewhile(p-nump1-num)&(p1-next!=NULL)p2=p1; p1=p1-next; if(p-numnum)if(p1=head) p=head; else p2-next=p; p-next=p1; elsep1-next=p; p-next=NULL;p0=head;if(head!=NULL)docoutnumnext;while(p0!=NULL);return 0;2、3.#include #include#include#includeusing namespace std;void deal(int d413,char *a4,char *b13);void shuffle(int deck413);int main()int i,j;srand (unsigned(time(NULL);int deck413=0;shuffle(deck);for(i=0;i4;i+)for(j=0;j13;j+)coutsetw(4)deckij ;coutendl; char *suit4=Diamonds, Cluds, Hearts, Spades; char *face13=Ace,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten,Jack,Queen,King; deal(deck,suit,face); return 0;void shuffle(int deck413)int b,c,i;for(i=1;i=52;) b=rand()%4; c=rand()%13; if(deckbc=0) deckbc=i; i+; void deal(int d413,char *a4,char *b13)for(int i=1;i=52;i+)for(int j=0;j4;j+)for(int k=0;k13;k+)if(djk=i)coutsetw(8)aj of bkendl;4.#include#include#include#includeusing namespace std;int main()int temp1,temp2,c;srand(unsigned (time(NULL);temp1=rand()%6+1;temp2=rand()%6+1; c=temp1+temp2;coutcendl;int x;if(c=7|c=11)x=1;else if(c=2|c=3|c=12)x=0;else int a,b,d;L1:a=rand()%6+1; b=rand()%6+1; d=a+b; coutdendl; if(d=7) x=0; else if(c=d) x=1; else goto L1;switch(x)case 1:cout游戏者赢endl;break;case 0:cout游戏者输endl;break;return 0;实验九1、分别用梯形法和矩型法求定积分。要求:函数参数为指向函数的指针变量(对应的实参应为别的函数)。调用时根据给定的不同实参可对应去调用不同的函数。再分别编写5个函数f1,f2,f3,f4,f5, 用来作为实参调用5次,就可求得5个不同函数的积分。程序代码:1#includeusing namespace std;void main()double f(double x);int i,n;double a,b,h,x,f1,f2,s;cout请输入积分区间的端点值a,b:nab;h=(b-a)/n;f1=f(a);x=a;s=0.0;for(i=1;i=n;i+)x=x+h;f2=f(x);s=s+(f1+f2)/2*h;f1=f2;couts=s;double f(double x)double fun;fun=x*x*x+1;return fun;#includeusing namespace std;double integral(double a,double b,double(*fun)(double);int main()double integral(double a,double b,double(*fun)(double);double f(double x);int n,i;double a,b,h,x,f1,s;cout请输入积分区间端点值a,b,n:abn;h=(b-a)/n;x=a;s=0;for(i=1;i=n;i+)f1=f(x);x=x+h;s=s+f1*h;couts=sendl;return 0;double f(double x)double fun;fun=1+x;return fun;实验十1、用Student类型定义一个5个元素的数组,并从键盘上输入 5 个学生的学号、姓名及 5门课的成绩,计算出每个学生的平均成绩和总平均成绩。并打印出来。程序代码:1#include#includeusing namespace std;const int n=5;struct studentchar name10;char num8;float score5;float avr; stun;int main()int i,j,sum;float average;for(i=0;in;i+)cout请输入学生的成绩:i+1endl;coutNO.:stui.num;coutname:;for(j=0;j5;j+)coutscorej+1stui.scorej;coutendl;average=0;for(i=0;in;i+)sum=0;for(j=0;j5;j+)sum+=stui.scorej;stui.avr=sum/5.0;average+=stui.avr;average/=n;cout NO. name score1 score2 score3 score4 score5 averageendl;for(i=0;in;i+)coutsetw(10)stui.num setw(10) ;for(j=0;j5;j+)coutsetw(5)stui.scorej ;coutstui.avrendl;coutaverage=averageendl;return 0;实验十一1.定义一个汽车类,其数据成员有车轮数、载人数、重量。把轿车、面包车和公共汽车定义为汽车类的对象,通过构造函数初始化,并根据其车轮数、载人数或重量分别打印出是什么车型。程序代码:#include using namespace std;class Carpublic: Car() wheel=0; people=0; weight=0; void set_car(); void show_car();private:int wheel;int people;double weight;void Car:set_car()coutwheelpeopleweight;void Car:show_car()if(wheel=20)cout公共汽车endl;else if(people=5)cout小轿车endl;elsecout面包车endl;int main()Car c1;c1.set_car();c1.show_car();Car c2;c2.set_car();c2.show_car();Car c3;c3.set_car();c3.show_car();return 0;实验十二将某单位职工的人事档案数据进行管理。每位职工5项数据:职工代号、姓名、性别、年龄、工资,定义为一个结构体。参照补例13-23,完成以下操作:1.输出所有职工数据;2.求所有职工的平均工资并输出;3.求年龄最大的职工并输出他的所有数据程序代码:#include #include #include struct personint num;char name20;char sex3;unsigned short age;double wage;struct person people4=1,Wang,m,25,1200,2,Zhang,f,24,1503,3,Li,f,21,890,4,Hung,m,22,960;struct person p4;void main()fstream outfile,infile;outfile.open(f1.txt,ios:out|ios:binary);if(!outfile)coutf1.txt cant open.n; abort();for(int i=0;i4;i+) outfile.write(char *)&peoplei,sizeof(peoplei); outfile.close();infile.open(f1.txt,ios:in|ios:binary);if(!infile)coutf1.dat cant open.n; abort();double s(0),av;int max(people0.age),k; for(i=0;i4;i+) infile.read(char *)&peopl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论