1、北邮小学期c+实验报告and程序文件 C+实验课总结 张涛实验一:简单c+程序设计一、 1、 猜价格游戏编写C+程序完成以下功能:(1) 假定有一件商品,程序用随机数指定该商品的价格(1-1000的整数);(2) 提示用户猜价格,并输入:若用户猜的价格比商品价格高或低,对用户作出相应的提示;(3) 直到猜对为止,并给出提示。#include#includeusing namespace std;/使用命名空间 std.int main() srand(time(NULL);/将时钟数作为随机数种子 int price,guess; price = rand() % 1000 + 1;/取余,获
2、得11000的随机数 cout please input the price: guess;/记录玩家所输入数值 if(guess price) cout The price is lower than your guess,please input the price again: endl; if(guess price) cout The price is higher than your guess,please input the price again: endl;/给予玩家比较大小的提示 while (guess != price);/循环结构 cout The price yo
3、u give is right.It cost price . endl;/获得正确答案 system(pause); return 0; 2、 计算 N 以内的所有素数编写C+程序完成以下功能:(1) 提示用户输入N;(2) 计算出从2到N之间的所有素数;(3) 将结果保存在一个文本文件中。#include#include#include/两种输入流using namespace std; int isprime(int a)int b = 2; while(a % b!=0 & b sqrt(a) b+; if(a % b=0) return 0; if(a % b!=0) return
4、1;/判断是否为素数的函数定义int main() int num,a; ofstream myFile(d:result.txt); cout Please input the number: num ; myFile 2 ; for(a = 2;a = num;a+)/例举所有数,并对其进行判断,是否为素数 if(isprime(a)=1) myFile a ; /向文件内输出数据system(pause);return 0;3、 袋中取球编写C+程序完成以下功能(使用 enum):(1) 袋子中有 red, yellow, blue, white, black 五种颜色的球多个;(2)
5、一次从袋子里取出3个颜色不同的球,有几种取法;(3) 将每种方法的所有取法输出到屏幕上。#include#includeusing namespace std;enum colors red = 1, yellow, blue, white, black;void print(int a)/设置一个打印函数,根据数字得到颜色switch(a) case 1:cout setw(7) red ; break; case 2:cout setw(7) yellow ;break; case 3:cout setw(7) blue ;break; case 4:cout setw(7) white
6、;break; case 5:cout setw(7) black ;break;int main()int color1,color2,color3;/设置三个记录颜色的变量cout The result is:endl; for(color1=red;color1=blue;color1+) for(color2=color1+1;color2=white;color2+) for(color3=color2+1;color3=black;color3+)/三次循环迭代出所有情况 print(color1); print(color2); print(color3); coutendl;
7、system(pause); return 0;4、 乘法口诀表编写C+程序完成以下功能:(1) 输出乘法口诀表;(2) 显示格式如下所示。1*1=1 1*2=2 1*3=3 . 1*9=9 2*2=4 2*3=6 . 2*9=183*3=9 . 3*9=27 . .9*9=81#include#includeusing namespace std;int main()int a,b,c;for(a=1;a=9;a+)for(c=0;ca-1;c+) cout ; /打印每行前的空格for(b=a;b=9;b+)couta*b=setw(4)setiosflags(ios:left)a*b;/
8、按规律输出乘法表coutendl;system(pause);return 0;5、 最大公约数和最小公倍数编写C+程序完成以下功能:(1) 提示用户输入两个无符号整数;(2) 计算两者的最大公约数和最小公倍数,并输出。#includeusing namespace std;int GCD(int a,int b) if(a%b=0) return b; else return GCD(b,a%b);/利用辗转相除法进行递归. int main() int a,b; coutab; int c; if(ab) c=a;a=b;b=c;/调整ab的大小顺序 couta和b的最大公约数是GCD(a
9、,b)endl; couta和b的最小公倍数是a*b/GCD(a,b)endl;/利用最大公约数与最小公倍数之间的关系直接得到最小公倍数 return 0;6、 计算Fibonacci级数fib(1) = fib(2) = 1fib(n) = fib(n-1) + fib(n-2)分别编写递归和非递归的C+程序完成以下功能:(1) 提示用户输入整数n;(2) fib(n),并输出结果。/递归法求斐波那契数列#includeusing namespace std;int fib(int n)if(n=1|n=2)return 1;else return fib(n-1)+fib(n-2);/递归
10、int main() int num; coutnum; coutnum的Fibonacci级数是fib(num)endl;/输出结果 return 0;/直接法求斐波那契数列#includeusing namespace std;int fib(int n)if(n=1|n=2)return 1;int a,result=1,previous=1,present=1;/初始化if(n2) for(a=3;a=n;a+) result=result+previous; previous=present; present=result; return result;int main() int
11、num; coutnum; coutnum的Fibonacci级数是fib(num)endl; system(pause); return 0;7、 计算n 阶勒让德多项式编写C+程序完成以下功能:(1) 提示用户输入整数n和实数x;(2) Pn(x),并输出结果。#includeusing namespace std;int p(int x,int n)if(n=0)return 1;if(n=1)return x;if(n1)return (2*n-1)*x*p(x,n-1)-(n-1)*p(x,n-2)/n;int main()int x,n; coutxn;coutx的n阶勒让德多项式
12、的结果是p(x,n)endl;return 0;总结:由于第一天学习c+课,所以决定多做些题目来熟悉c+的规范格式,于是将七道题目都编写了,题目都很基础,用到的算法和技巧都在学c的时候学过了。具体的有随机数种子的设定,双重for循环,递归函数求解,基本完成了实验目的所写的那样:熟悉C编程环境,掌握在Dev-C+开发环境下编写、编译、调试和执行C程序的方法。掌握C基本语法、数据类型和程序控制结构,能够编写简单C程序。实验二:类与对象1、 矩形编写C+程序完成以下功能:(1) 定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法;(2) 定义一个矩形类,其属性包括左上角和右下角两个
13、点,提供计算面积的方法;(3) 创建一个矩形对象,提示用户输入矩形左上角和右下角的坐标;(4) 观察矩形对象以及Point类成员的构造函数与析构函数的调用;(5) 计算其面积,并输出。#include#includeusing namespace std;class pointprivate: int x,y; public: point(int X=0,int Y=0) x=X;y=Y;/构造函数 int getX()return x; int getY()return y; friend double getline(point &a,point &b) return sqrt(a.x-b
14、.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); /返回两点间直线长度 ;/两点间距离的计算 class rectangle private: point a,b; public: rectangle(point A,point B) a=A;b=B;/ 构造函数 int getarea() return (b.getX()-a.getX()*(a.getY()-b.getY();/返回面积值 ; /矩形面积计算 int main() int x1,y1,x2,y2; cout请输入左上角的坐标x1y1; coutn请输入右下角的坐标x2y2; point A(x1,y1)
15、,B(x2,y2); rectangle rtangle(A,B);/ 类的初始化 coutn面积大小是:rtangle.getarea();/打印结果 system(pause); return 0; 2、 圆形编写C+程序完成以下功能:(1) 定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法;(2) 定义一个圆形类,其属性包括圆心和半径;(3) 创建两个圆形对象,提示用户输入圆心坐标和半径,判断两个圆是否相交,并输出结果。#include#includeusing namespace std;class circle private: int x,y; int r; p
16、ublic: circle(int X,int Y,int R)x=X;y=Y;r=R;/构造函数 friend void start(circle &a,circle &b) double m,n; m=sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);/ 圆心间距离 n=a.r+b.r;/半径和 if(mn) cout两个圆不相交endl; if(m=n) cout两个圆相交endl;/友元函数判断是否相交 ; int main()int x1,y1,r1,x2,y2,r2; cout请输入第一个圆的圆心坐标和半径x1y1r1; cout请输入第二个圆
17、的圆心坐标和半径x2y2r2; circle a(x1,y1,r1); circle b(x2,y2,r2); start(a,b); system(pause); return 0; 3、 友元编写C+程序完成以下功能:(1) 定义一个Boat和Car两个类,他们都具有私用属性重量;(2) 编写一个函数,计算两者的重量和。double TotalWeight(Boat& b, Car& c);#includeusing namespace std;class car;class boat private: double weight; public: boat(double w)weight
18、=w;/ 构造函数 friend double TotalWeight(boat &a,car &b);/友元函数 ; class car private: double weight; public: car(double w)weight=w;/ 构造函数 friend double TotalWeight(boat &a,car &b);/友元函数 ;double TotalWeight(boat &a,car &b)return a.weight+b.weight;int main() double a,b; cout请输入boat和car的重量:ab; boat x(a);car y
19、(b);/初始化类值 cout重量和是TotalWeight(x,y);/打印结果 system (pause); return 0; 4、 分数编写C+程序完成以下功能:(1) 定义一个分数类,他们都具有私用属性分子和分母;(2) 定义分数类的构造函数和析构函数;(3) 定义方法Set,设置分子和分母;(4) 定义方法print,打印分数,格式如:2/7;(5) 定义方法value,返回double型的分数值;(6) 定义方法invert, 分子和分母交换。#include#includeusing namespace std;class fenshu private: int down,u
20、p; public: void set(int a,int b) up=a;down=b; void print() cout分数值是:up/downendl; double value() return double(up)/double(down); void invert() int c;c=up;up=down;down=c; ; int main() int a,b; cout请输入分子和分母:ab; fenshu x; x.set(a,b); x.print(); cout分数值的小数形式是x.value()endl; x.invert(); x.print(); system(p
21、ause); return 0; 总结:在编写程序前对类与对象还是挺生疏的,只有脑海里闪现的书本里的一些概念,编这道题目的时候也已经是学c+的第三天了,在看完书本的例子后,考虑到老师上课说的不要照书编程,于是就在编程前看个够。基本上这些题目也就是一些类与对象的格式的考察。于是将四道题目全部完成了。 记得唯一让我放下手指敲键盘的地方是第二题,正方形的的属性里,起初我是自己设定两点的坐标为其私有变量,后来发现这样做不符合题意,应该将点的对象作为其私有变量。基本上其他的也就没有问题了,注意的也就是不能直接在外部引用私有成员,需要对象内部的公有函数做接口实验三:数组与指针 矩阵(一)与矩阵(三)略 1
22、、 矩阵(三)编写C+程序完成以下功能:(1) 用类来实现矩阵,定义一个矩阵的类,属性包括: 矩阵大小,用 lines, rows(行、列来表示); 存贮矩阵的数组指针,根据矩阵大小动态申请(new)。(2) 矩阵类的方法包括: 构造函数,参数是矩阵大小,需要动态申请存贮矩阵的数组; 析构函数,需要释放矩阵的数组指针; 拷贝构造函数,需要申请和复制数组; 输入,可以从cin中输入矩阵元素; 输出,将矩阵格式化输出到cout; 矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵类,但必须矩阵大小相同; 矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵类,但必须矩阵大小相同。
23、(3) 定义三个矩阵:A1、A2、A3;(4) 初始化A1、A2;(5) 计算并输出A3 = A1加A2,A3=A1减A2;(6) 用new动态创建三个矩阵类的对象:pA1、pA1、pA3;(7) 初始化pA1、pA2;(8) 计算并输出pA3=pA1加pA2,pA3=pA1减pA2;(9) 释放pA1、pA1、pA3。#include#includeusing namespace std;class array private: int lines,rows; public: int*A; array(int a=3,int b=4); array(int a,int b,int c); a
24、rray(array &a); int getLines()return lines; int getRows()return rows; void printArray(int l,int r); friend void plusArray(array *a,array *b,array *c,int l,int r); friend void reductArray(array *a,array *b,array *c,int l,int r); array()for(int i=0;ilines-1;i+) delete Ai; delete A; ;array: array(array
25、 &a) lines=a.lines; rows=a.rows; /*A=new int*lines; for(int i=0;i=lines-1;i+) Ai=new introws;*/ A=a.A; array:array(int a,int b,int c) lines=a;rows=b; A=new int*a; for(int i=0;i=a-1;i+) Ai=new intb; array:array(int a,int b) lines=a;rows=b; A=new int*a; cout请输入矩阵的元素:endl; for(int i=0;i=a-1;i+) Ai=new intb; for(int j=0;jAij; void array:printArray(int l,int r) for(int i=0;i=l-1;i+) for(int j=0;j=r-1;j+) coutsetw(4)Aij; coutendl; void plusArray(array *a,array *b,array *c,int l,int r) for(int i=0;i=l-1;i+) for(int j=0;j=r-1;j+) (*c).Aij=(*a).A
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1