《C++描述程序设计实验报告.doc》由会员分享,可在线阅读,更多相关《C++描述程序设计实验报告.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、程序设计基础实验报告实验一 面向过程的简单程序设计1.实验目的掌握C+语言的数据类型(包括对各种数据类型变量的定义、初始化、赋值等)、运算符和表达式的使用。掌握赋值语句的使用。掌握数据的输入输出方法。2.实验设备 Visual C+ 6.03.实验内容(1)设计简单程序,分别计算下列表达式,式中变量由键盘输入,输出表达式的值。 源代码: #includevoid main() float s,x,a,b,c,d; cinxabcd; s=x+(a+b)/(c-d); coutsendl;测试过程和运行结果分析: 输入数据为:3,6,8,5,3 运行结果为:10 源代码: #include #i
2、ncludevoid main()double s,x;cinx;s=sqrt(1+1/(x+1/(x+1);coutsendl;测试过程和运行结果分析: 输入数据为:4 运行结果为:1.1127 sinX+cosX+tan-1X源代码:#include#includevoid main()float x,y;cinx;y=sin(x)+cos(x)+1/tan(x);coutyendl;测试过程和运行结果分析: 输入数据为:6 运行结果为:-2.7556 ex+y+ex-y 源代码:#include#includevoid main()int x,y,s;cinxy;s=exp(x+y)+e
3、xp(x-y);coutsendl;测试过程和运行结果分析: 输入数据为:1 , 1 运行结果为:8.38906 log10(1+) 源代码:#include#includevoid main()float x,s;s=log10(1+sqrt(1+x*x);coutsendl;测试过程和运行结果分析: 运行结果为:8.0309 + (其中表示取不大于a的最大整数)。源代码:#include#includevoid main()double s,a,b;cinab;s=fabs(a*a-b*b)+floor(a-b);coutsendl;测试过程和运行结果分析: 输入数据为:4 ,8 运行结果
4、为:44(2)阅读下列程序,写出(由指定的输入)所产生的运行结果,并指出其功能。测试过程和运行结果分析: 输入数据为:532 运行结果为:5.测试过程和运行结果分析: 分别输入数据为:100 40, 2000 3000, 1000 1000, 2000 300, 100 4000 运行结果为: 0 1,1 0,0 1,1 1,0 0.测试过程和运行结果分析:输入数据为:23 运行结果为:,运行结果为:24.(3)编写程序实现下列问题的求解。 根据随机从键盘输入的圆半径值,求圆的周长和半径并输出。源代码:#includevoid main()float r,c;cinr;c=2*3.14*r;c
5、outcrendl;测试过程和运行结果分析: 输入数据为:3 运行结果为:18.843 对任意输入的四位整数,分别求出其各位数字,并按从后到前的顺序依次输出。例如,输入为1234时,输出结果为4,3,2,1源代码:#include#includevoid main()int a,b,c,d,m; coutm; floor (a=m/1000); floor (b=(m-a*1000)/100); floor (c=(m-a*1000-b*100)/10); floor (d=(m-a*1000-b*100-c*10);if (m=1000&m=9999) coutdcbaendl; else
6、cout错误,请重输endl;测试过程和运行结果分析: 输入数据为:1234 运行结果为:4321实验总结:学习了C/C+语言编程基本语法,能编写简单的赋值和输入输出程序。实验二 控制结构程序设计1.实验目的要求(1) 理解基本的解题技巧,掌握用自顶向下、逐步求精的过程设计算法。(2) 熟练掌握if/else语句和switch语句的使用。(3) 熟练掌握while语句、do/while语句和for语句的使用以及区别。掌握break和continue程序控制语句的使用。)(4) 掌握break和continue程序控制语句的使用。2.实验内容(1)阅读下列程序,写出(由指定的输入)所产生的运行结
7、果,并指出其功能。测试过程和运行结果分析: 运行结果为:50测试过程和运行结果分析:运行结果为:22-10测试过程和运行结果分析:运行结果为:*#*#*#$测试过程和运行结果分析:运行结果为:a=2b=81(2)编写程序实现下列问题的求解。 求解下面函数的值。 ex+y x0,y0 z= ln(x+y) 1x+y10 log10|x+y|+1 其它情况源代码:#include#includevoid main()double x,y,z; cinxy; if(x0&y=1&(x+y)10) z=log(x+y); else z=log10(fabs(x+y)+1); coutz; 测试过程和运
8、行结果分析: 输入数据为:9,8 运行结果为:1.25527 编程求解下列各计算式: 1) 源代码:#includevoid main()int s=0,i;for(i=1;i=100;i+)s=s+i;coutsendl;测试过程和运行结果分析: 运行结果为:50502) ! 源代码:#includeint f(int i)int y;if(i=0)y=1;else y=i*f(i-1);return y;void main()int s=0,i; for(i=1;i=7;i+) s=s+f(i); coutsendl;测试过程和运行结果分析: 运行结果为:5913 3)源代码:#inclu
9、devoid main()int s=0,i,m;for(i=1;i=40;i=i+2)m=i*(i+1);s=s+m;coutsendl;测试过程和运行结果分析:运行结果为:11060 编程产生出1到10以内的所有数对并输出,其中ij。源代码:#includevoid main()int i,j;for(i=1;i=10;i+)for(j=1;jj)couti,jendl; 测试过程和运行结果分析:运行结果为: 编程求出10000以内的所有符合如下条件的数:其高位数字小于低位数字。如12,238,3578等。但21,548不符合条件。源代码:#includevoid main()int a,
10、b,c,d,m;for(m=10;m100;m+)a=m/10;b=(m-a*10);if(ab)coutm ;for(m=100;m1000;m+)a=m/100;b=(m-a*100)/10;c=(m-a*100-b*10)/1;if(ab&bc)coutm ;for(m=1000;m10000;m+)a=m/1000;b=(m-a*1000)/100;c=(m-a*1000-b*100)/10;d=(m-a*1000-b*100-c*10);if(ab&bc&cd)coutm ;测试过程和运行结果分析:运行结果为:12 13 14 15 16 17 18 19 23 24 25 26 2
11、7 28 29 34 35 36 37 38 39 45 46 47 48 49 56 57 58 59 67 68 69 78 79 89 123 124 125 126 127 128 129 134 135 136 137 138 139145 146 147 148 149 156 157 158 159 167 168 169 178 179 189 234 235 236 237 238239 245 246 247 248 249 256 257 258 259 267 268 269 278 279 289 345 346 347 348349 356 357 358 359
12、367 368 369 378 379 389 456 457 458 459 467 468 469 478 479489 567 568 569 578 579 589 678 679 689 789 1234 1235 1236 1237 1238 1239 1245 1246 1247 1248 1249 1256 1257 1258 1259 1267 1268 1269 1278 1279 1289 1345 1346 1347 1348 1349 1356 1357 1358 1359 1367 1368 1369 1378 1379 1389 1456 1457 1458 14
13、59 1467 1468 1469 1478 1479 1489 1567 1568 1569 1578 1579 1589 1678 1679 1689 1789 2345 2346 2347 2348 2349 2356 2357 2358 2359 2367 2368 2369 2378 2379 2389 2456 2457 2458 2459 2467 2468 2469 2478 2479 2489 2567 2568 2569 2578 2579 2589 2678 2679 2689 2789 3456 3457 3458 3459 3467 3468 3469 3478 34
14、79 3489 3567 3568 3569 3578 3579 3589 3678 3679 3689 3789 4567 4568 4569 4578 4579 4589 4678 4679 4689 4789 5678 5679 5689 5789 6789 实验总结:此次学习了C+,可以掌握了一些基本语句的控制。掌握了if/else语句和switch语句的使用。while语句、do/while语句和for语句的使用以及区别。break和continue程序控制语句的使用。实验三 数 组1.实验目的要求(1) 掌握一维数组和二维数组的定义、初始化赋值、元素引用的方法。(2) 初步了解数组
15、名与地址的关系。(3) 掌握字符数组和字符串函数的使用。(4) 掌握与数组有关的算法(特别是排序和查找算法)。2.实验内容(1)阅读下列程序,写出其运行结果,并指出其功能。测试过程和运行结果分析: 运行结果为:Sum of a = 测试过程和运行结果分析: 运行结果为:CERCOMP测试过程和运行结果分析: 输入数据为:6,5 运行结果为:11 (2)编写程序实现下列问题的求解。 编程产生下列数组,并输出。 维数组 1) (1 4 9 16 25 36 49 64 81 100源代码:#includevoid main()int s10,i;for (i=0;i=10;i+)si=i*i;fo
16、r(i=0;i=10;i+)coutsiendl;for(m=100;m1000;m+)a=m/100;b=(m-a*1000)/100;c=(m-a*1000-b*100)/1;if(ab&bc)coutmendl; 测试过程和运行结果分析:运行结果为:1 4 9 16 25 36 49 64 81 100 二维数组 1) 1 2 3 4 5 6 2 3 4 5 6 0 3 4 5 6 0 1 4 5 6 0 1 2 5 6 0 1 2 3 6 0 1 2 3 4 编程实现数组的排序:将有15个元素的整型数组按从小到大的次序排序。源代码:#includevoid main()int a15;
17、int i,m,t; for(i=0;iai; for(i=0;i=14;i+) for(m=i+1;mam) t=ai;ai=am;am=t; for(i=0;i15;i+)coutai ;测试过程和运行结果分析: 输入数据为: 1 2 6 4 5 3 7 8 11 15 9 12 10 13 14 运行结果为:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 编程求一组整数的最大公因子和最小公倍数。源代码:#includevoid main()int a2;int i,m;cina0a1; for(i=a0*a1;i-) if(a0%i=0&a1%i=0) break
18、; cout最大公因子为:iendl; m=a0*a1/i; cout最小公倍数为:mendl;测试过程和运行结果分析: 输入数据为:4 ,6 运行结果为:最大公因子为2 最小公倍数为12 将两个字符串连接起来,不要用strcat。源代码:#includevoid main()char a30,b30,x60;char i,j;cinab;for(i=0;ai!=0;i+)xi=ai;for(j=0;aj!=0;j+)xi+j=bj; xi+j=0; coutxendl;测试过程和运行结果分析: 输入数据为:china beautiful 运行结果为:chinabeautiful实验总结: 通
19、过学习该章节,已初步掌握了掌握一维数组和二维数组的定义、初始化赋值、元素引用的方法。掌握字符数组和字符串函数的使用。掌握与数组有关的算法(特别是排序和查找算法)。 实验四 函 数1.实验目的要求(1) 理解并掌握如何模块化的用函数来构建程序。(2) 掌握定义函数的方法,了解函数的重载方法,了解内联函数的机制。(3) 掌握函数间传递信息的机制。(4) 掌握函数的嵌套调用(和递归调用)的方法。(5) 掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法。2.实验内容(1)阅读下列程序,写出其运行结果,并指出其功能。测试过程和运行结果分析: 输入数据为:48,32. 运行结果为: hcf=16
20、 lcd=96测试过程和运行结果分析:运行结果为:k=13测试过程和运行结果分析: 运行结果为: 0 00 09 36 12 求方程ax2+bx+c=0的根,用三个函数分别求b2-4ac大于0、等于0和小于0时的根,并输出结果。从主函数输入a、b、c的值。源代码:#include #include /b2-4ac=0void fun1(double &a,double &b,double &c,double &d) double ans=(-b/(2*a); coutb2-4ac=0endl;coutx=ans0void fun2(double &a,double &b,double &c,d
21、ouble &d) double ans1,ans2; ans1=(-b+sqrt(d)/(2*a); ans2=(-b-sqrt(d)/(2*a); cout0endl;coutx1=ans1endl;coutx2=ans2endl;/b2-4ac0void fun3(double &a,double &b,double &c,double &d) double real,imar; real=-b/(2*a); imar=sqrt(-d)/(2*a); coutb2-4ac0endl;coutx1=real+imariendl;coutx2=real-imariendl;int main(
22、)double a,b,c,d; cout请输入a,b,cabc; d = b*b-4*a*c; if(d=0) fun1(a,b,c,d); else if(d0) fun2(a,b,c,d); else fun3(a,b,c,d);测试过程和运行结果分析: 输入数据为:1 ,5 ,6 运行结果为:b2-4ac0 x1=-2 ,x2=-3 编写出判断一个整数是否为素数的函数,并求出在2000以内的有十个以上的所有连#include#includebool f(int x)int i;bool p=true;for(i=2;i=x;i+)if(x%i=0) p=true;if(x=1)p=fa
23、lse;return p;void main()int x;cout x;if(!f(x) cout不好意思 x不是素数!n;else cout x是素数!n;for()测试过程和运行结果分析: 输入数据为:1 运行结果为:不好意思1不是素数!实验总结:通过本次实验大致了解如何模块化的用函数来构建程序,定义函数的方法,能够初步运用函数来编译程序。实验五 指 针1.实验目的要求(1) 掌握指针的概念,学会定义和使用指针变量。(2) 学会使用数组指针和指向数组的指针变量。(3) 学会使用字符串指针和指向字符串的指针变量。(4) 了解指向指针的指针的概念以及其使用方法。(5) 掌握指针、引用、数组做
24、函数参数的传递机制。(6) *学会使用指向函数的指针变量。2.实验内容(1) 阅读下面程序,写出其运行结果。测试过程和运行结果分析:运行结果为:-5,-12,-7测试过程和运行结果分析: 输入数据为:5 运行结果为:1(2)编写程序实现下列问题的求解。 将一个3*3的矩阵转置,用一个函数实现。在主函数中用scanf输入以下矩阵元素:2,4,6,8,10,12,14,16,18。将数组名作为函数参数。函数调用后在主函数中输出已转置的矩阵。说明:矩阵转置是指将矩阵的行变成列。第一行变成第一列,第二行变成第二列,比如:二维数组 1 2 3 4 5 6 7 8 9 变成 1 4 7 2 5 8 3 6
25、 9#includevoid main()int a33=2,4,6,8,10,12,14,16,18;int b33,i,j;for(i=0;i3;i+)for(j=0;j3;j+)bji=aij;for(i=0;i3;i+)for(j=0;j3;j+)coutbij ;coutendl;测试过程和运行结果分析:运行结果为: 2 4 6 8 10 12 14 16 18 自己写一个strcmp函数,实现两个字符串的比较。两个字符串s1,s2由main函数输入,strcmp函数的返回值也在main函数中输出。源代码:#includevoid main()char strcmp(char s1,
26、char s2);char s1,char s2;cout请输入字符串s1:s1;cout请输入字符串s2:s2;strcmp(s1,s2);char strcmp(char s1,char s2)if(s1s2)couts1s2endl;else if(s1=s2)couts1=s2endl;else couts1s2endl;return 0;测试过程和运行结果分析:输入数据:asd ,dsgh 运行结果为:s1s2实验总结:本次实验初步学会定义和使用指针变量,能辨别指针数组和数组指针的区别,以及初步了解其延伸开去的灵活运用。实验六 结构和联合类型以及编译预处理1.实验目的要求(1) 掌握
27、结构类型变量、联合类型变量的定义和使用,以及两者在内存中分配空间时的区别。(2) 掌握结构类型数组的概念和使用。(3) *掌握链表的概念,初步学会对链表进行查找、插入、删除、排序等操作。(4) 掌握宏定义、文件包含、条件编译的方法。2.实验内容(3)编写程序实现下列问题的求解。 在某系的成绩登记册中,每个班最多有40个学生,每份成绩表中的成绩信息包括:学号(9位字符),姓名(8位字符),成绩(百分制),备注(20位字符)。设计程序以处理一个班级的成绩信息,包括输入、输出、查询(给定分数以上或以下的学生信息)、按分数排序等。#include#includeusing namespace std;
28、int a404,int b404;string c404,d404;int i,j;void main()for(i=0;i40;i+)cout请输入学号:ai0;cout请输入姓名:ci1;cout请输入成绩:bi2;cout请输入备注:di3;int x;cout按1继续,按2结束x;if(x=1) continue;if(x=2) break;cout”输出成绩高于60分的学生学号及姓名”endl;for(i=0;i=60)coutai0 ci1endl;测试过程和运行结果分析: 输入数据为: 刘浩东 90 无 2 运行结果为: 刘浩东 实验总结:本次实验初步掌握了结构体的定义,概念,
29、以及使用,能够用结构体初步编译一些较为复杂的程序。实验七 类与对象1实验目的要求(1) 掌握类的定义和实现。(2) 掌握对象创建及使用的基本方法。2实验设备硬件环境:微型计算机软件环境: 操作系统: Windows 语言环境: Visual C+3预习要求学习教材有关类的定义与实现、对象创建与应用等有关内容,对实验基本要求应在上机实验前仔细阅读,程序应事先编制完成,上机时录入调试,同时还应设计相应的测试用例集,检查程序的正确性、可靠性、完备性和容错能力。4实验内容(1)下面程序定义了一个以hours, minutes和seconds作为数据成员的Time类。设计了成员函数将两个Time对象相加
30、(即时间相加),并进行相应的检查,查看增加的分钟数及秒数是否大于59。如果秒数大于59,则分钟数向前递增1。类似地,如果分钟数大于59,则小时数向前增1。#include class Timeprivate: int hours, minutes, seconds;public: void get_time() cinhoursminutesseconds; void display_time() couthours:minutes:seconds=60) seconds-=60; minutes+; while(minutes=60) minutes-=60;hours+; ;void ma
31、in() Time one, two, three; coutnEnter the first time(hours minutes seconds):; one.get_time(); coutnEnter the second time(hours minutes seconds):; two.get_time(); three.add_time(one,two); coutthe result is:yearmonthday; Date mydate(year,month,day); int &myyear=mydate.GetYear();int &mymonth=mydate.Get
32、Month();int &myday=mydate.GetDay(); coutmyyearendlmymonthendlmydayendl;myyear=8888;cout mydate.GetYear();更改为:1类中的每个成员函数后不应加分号。2成员函数名不能使用类名。3构造函数与析构函数不应定义。4整数型成员函数没有返回值。(3)编程题设计一个学生类(student),拥有私有属性:学号(num),姓名(name)。以及若干成员函数。同时编写主函数使用这个类,实现对数据的赋值和输出。要求:(1)用成员函数实现数据的输入和输出。(2)用构造函数实现数据的输入。源代码:#include#
33、includeusing namespace std;class CStudentprivate:int num;string name;public:CStudent()CStudent(int n,char*p)num=n;name=p; void setnum(int n)num=n; void setname(char*p)name=p;void getnum()coutnum is numendl; void getname()coutname is nameendl; CStudent() ;void main() int xuehao;char mingzi50;cout用成员函数实现数据的输入和输出endl; CStudent s1;cout请输入学号xuehao;s1.setnum(xuehao);cout请输入名字mingzi;s1.setname(mingzi);s1.getnum();s1.getname();cout用构造函数实现数据的输入endl; cout请输入学号和名字xuehaomingzi;CStu