江苏科技大学c++实验报告

合集下载

江苏科技大学苏州理工学院(镇江校区)VC++程序设计

江苏科技大学苏州理工学院(镇江校区)VC++程序设计

计算机程序VC++课程设计报告班级学号姓名一.课程设计教学和任务《计算机程序设计(VC++)课程设计》是实践性教学环节,是学生必修的一门计算机实践课程。

本课程设计的目的是通过综合性程序设计训练,使学生进一步巩固对计算机程序设计语言(VC++)基本语法、基本算法的理解,加深对面向对象程序设计的理解与应用,并使学生养成模块化、结构化程序设计的良好风格,以及一定的程序组织能力,掌握基本程序设计的方法和技巧,为学习后续课程和实际编程打下良好的基础。

本课程设计的重点要求学生掌握基本程序设计理念和方法,培养学生基本程序设计的应用和开发能力。

二.课程设计要求和内容1 .本课程设计要求(1)学生必须完成本指导书中所有的小综合设计题(2)每个学生必须完成课程设计报告一篇2.课程设计的内容(1)设计一个程序实现如下的选择菜单:用switch语句。

要保证选择的语句只能是0~5的数字,否则重新输入。

#include<iostream.h>void main(){int a;cin>>a;switch(a){case 0:cout<<“退出”<<endl;case 1:cout<<“星期一馒头”<<endl;case 2:cout<<“星期二包子”<<endl;case 3:cout<<“星期三面条”<<en dl;case 4:cout<<“星期四汉堡”<<endl;case 5:cout<<“星期五油条”<<endl;deflaut:cout<<“输入有误重新输入”;}}(2)设计一个循环结构的程序,循环体分别是单个C++语句,循环体是空语句,循环体是复合语句。

单个C++语句:#include<iostream.h>void main(){int i=1,s=1;while(++i<=100)s+=i;cout<<“s=”<<s<<…\n‟;}空语句:#include<iostream.h>void main(){int x,y;for(x=1,y=5;y<++x*x++;y++);cout<<“y=”<<y<<…\n‟;}复合语句:#include<iostreaam.h>void main(){int i,q,n,sum;i=1;q=2;n=sum=0;do{sum=sum+i;++n;i=i*q;}while(sum<100);n--;cout<<n<<endl;}(3)设计一个程序实现练习同名全局变量和局部变量的特点,如能同名覆盖等;局部静态变量(能说明局部静态变量暂时不释放的特点)局部变量:#include<iostream.h>void fn();void main(){fn();fn();fn();}void fn(){static n=10;cout<<n<<endl;n++;}全局变量同名覆盖等:#include<iostream.h>int a=10;void main(){ int a=20,b=30;{ int a=0,b=0;for(int i=1;i<4;i++){a=a+b;b=::a+b;}cout<<a<<''<<b<<endl;}cout<<a<<''<<b<<endl;}(4)设计一个函数,实参与形参结合分别用值传递,引用传递,指针传递(也可以是数组)。

江科大c++期末实验报告(精品文档)_共3页

江科大c++期末实验报告(精品文档)_共3页
k=num%10; num/=10; sum+=k; a[i]=k+48; i++; } cout<<c<<"是"<<i<<"位数,其各位数字为"; for(i--;i;i--) cout<<a[i]<<"、"; cout<<a[0]<<","; return sum;
} void main() { int sum,num,n;char a[100]; cin>>num; sum=int_to_string(num,a,n); cout<<"各位数字之和为"<<sum<<endl;
cout<<b<<'\t'; } cout<<endl;
}
程序运行结果为: 3、将杨辉三角的前 N 行保存到二维数组的下半三角中。杨辉三角由正整数构成,每行除 最左侧与最右侧的数为 1 外,其他数等于其左上方与正上方两个数的和,杨辉三角的前 5 行如下: 1 11 121 1331 14641 #include<iostream.h> void main(){
}
运行结果: 2、设计处理二维数组的程序,要求如下。 (1)定义函数 void input(int a[][4],int n),用于对二维数组进行初始化。 (2)定义函数 void output(int (*a)[4],int n),用于输出二维数组中的元素。 (3)定义函数 int search_max(int a[][4],int n,int &cool,int &vol),用于查找二维数组 a 中的最 大值元素,并记录其行下标和列下标,其中最大值元素的值通过函数返回值带回主函数, 对应的下标分别存储到 col 和 vol 中。 (4)在主函数中进行测试。 #include<iostream.h> void input(int a[][4],int n){

江苏科技大学c++课程解析实训答案

江苏科技大学c++课程解析实训答案

《解析与实训》习题及实验参考解答目录第一章 (1)第二章 (4)第三章 (9)第四章 (20)第五章 (28)第六章 (32)第七章 (43)第八章 (67)第九章 (68)第十章 (78)第一章一、选择题1. A2.D3.A4.B5.A6.D7.D8.C9.D 10.C11.D 12.C 13.B 14.A 15.C 16.B 17.A 18.C 19.B 20.D21.A 22.D 23.B 24.B 25.B 26.A 27.C 28.B 29.D 30.C 31.A二、填空题1. #include <iostream.h> (或# include "iostream.h")2. 编译连接3. .cpp .obj .exe4. 十5. setw() iomanip.h6. a b c7. a b (注:输出第二项是空格)8. 109. 110. 字符11. 八十六12. 4.013. ; (分号)14. 105 7015. 6016. 817. 718. 1519. int(x) 或(int)x三、编程题1.#include<iostream.h>#define PI 3.1415926void main(){float r,h,area;cout<<"输入圆柱体的半径和高(r,h):"<<endl;cin>>r>>h;area=PI*r*r*h;cout<<" 圆柱体的体积为:"<<area<<endl;}2.#include<iostream.h>void main(){int x,a,b,c ,m,n;cout<<"输入一个三位整数x:"<<endl;cin>>x;a=x/100;b=x/10%10;c=x%10;m=c*100+b*10+a;n=m-x;cout<<" 反序组成的新3位整数为:"<<m<<endl;cout<<" 新3位整数减去原3位整数的值为:"<<n<<endl; }四、实验1.#include<iostream.h>void main(){cout << "中华人民共和国"<<endl ;}2.# include <iostream.h>void main (void){ int a,b,c;cin>>a>>b;c= a+b ;cout<<"c="<<c<<endl;}3.结果:1 0 1 0 1(1)结果为:10 16 16 8 10(2)换成dec结果为:a 10 10 8 a换成oec结果为:12 20 20 10 12 4.# include <iostream.h># include <math.h>void main (void){ int a,b,c,s,area;cout<<" 输入三角形三边长a,b,c:"<<endl; cin>>a>>b>>c;s= (a+b+c)/2 ;area=sqrt(s*(s-a)*(s-b)*(s-c));cout<<"三角形面积为:"<<area<<endl;}第二章一、选择题1.B2.A3.A4.C5.B6.C7.B8.B9.B 10.D 11.B 12.D 13.D 14.D 15.A 16.D 17.C 18.C 19.A 20.C 21.B 22.A 23.D 24.A 25.B 26.B 27.D 28.C 29.B 30.D 31.B 32.A 33.C 34.C二、填空题1. 选择结构循环结构2. if3. break continue4. 循环语句switch语句5. 循环语句6. 1 1 结束循环体的语句7. 60,308. d=209. 110. 1011. y=0 y=5 y=30 error12. 11 713. 2 , 314. 2 , 315. #16. s=6,k=517. 5 7 111318. 0246819.* * * * * ** ** ** * * * * *20. (1) Year / 4 !=0(2) Year / 100 !=0(3) Year / 400 !=021. (1)a<b(2) t=a;a=d;d=t;(3) b<d22. (1) c+=5 (2) c=c-2123. (1) ch>='a'&&ch<='z'|| ch>='A'&&ch<='Z'(2) ch-=32(3) ch+=3224. (1) x>2&&x<=10(2)x>-1(3) y=-125. (1)int i=200(2) i<=300(3) i/100+i/10%10+i%10==12&&(i/100)*(i/10%10)*(i%10)==42 26. (1) i<=100(2) t=s/i(3) s=-s27. (1) n (或n!=0)(2) n<0(3) n/=1028. (1) n=k*k(2) b=n/10%10(3) a==b||b==c||c==a29. (1) i<=30(2) a=a*230. (1) m=n(2) m(3) k>s31. (1) x1(2) x1=x232. (1)d<=4(2) a+i*d三、编程题1.#include<iostream.h>void main(){ int x,y,t,m,n;cout<<"输入两个整数(x,y):"<<endl;cin>>x>>y;if(x>y) {t=x;x=y;y=t;}for(int i=x;i>0;i--)if(x%i==0&&y%i==0){m=i;break;}for( i=y;;i++)if(i%x==0&&i%y==0){n=i;break;}cout<<x<<"和"<<y<<"的最大公约数是:"<<m<<endl;cout<<x<<"和"<<y<<"的最小公倍数是:"<<n<<endl;}2.# include <iostream.h>void main(void){ int s;char score;do{cout <<"请输入百分制分数(0 - 100):";cin >> s;}while(s<0||s>100);switch (s/10) {case 10 :case 9 : score='A';break;case 8 : score='B';break;case 7 : score='C';break;case 6 : score='D';break;default : score='E';break;}cout<<"百分制分数为:"<<s<<'\t'<<"五分制分数为:"<<score<<endl; }3.#include<iostream.h>#include<math.h>void main(void){ float a,b,c;cout<<"输入三角形的三边:";cin>>a>>b>>c;if(a+b>c&&b+c>a&&c+a>b){ if(a==b&&b==c)cout<<"三角形是等边三角形。

c语言实验报告完整版

c语言实验报告完整版

c语言实验报告HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】丽水学院计算机实验报告丽水学院计算机实验报告一、实验目的1.熟悉Visual C++和C-Free等集成环境,掌握运行一个C程序的基本步骤,包括编辑、编译、连接和运行。

2.掌握算术表达式和赋值表达式的使用。

3.掌握基本输入、输出函数的使用。

4.能够编程实现简单的数据处理。

二、实验环境硬件:Pentium以上的计算机。

软件:Windows XP操作系统、Visual C++和C-Free等集成环境。

三、实验内容和结果1.编程题1在屏幕上显示一个短句“What is a computer?”思考:(1)如何在屏幕上显示你自己的学号,姓名和班级?(2)如何在屏幕上显示数字、英文字母和汉字等信息?例如:“你在机房吗?”编程题1源程序:#include<>void main(){printf("What is a computer?\n");}程序运行结果:What is a computer?思考题(1):#include<>void main(){printf(",小王,班级\n");}思考题(2):#include<>void main(){printf("英文字母abcdefgABCDEFG\n");printf("汉字:哇哈哈啊哈和\n");}2.编程题2在屏幕上显示下列图形。

* * * ** * ** **思考:如何在屏幕上显示下列图形?AA AA编程题2源程序:#include<>void main(){int i,j;for(j=1;j<5;j++){for(i=5;i>j;i--)printf("*"); printf("\n");}}程序运行结果:* * * ** * ** **思考题:#include<>void main(){printf(" A \n");printf("A A\n");printf(" A \n");}3.编程题3已知小明的数学,英语和计算机课程的成绩分别是87分,80分和95分,求小明3门课程的平均分。

江苏科技大学操作系统实验

江苏科技大学操作系统实验

操作系统实验实验一 进程调度一、 实验目的多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。

因而引起进程调度。

本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。

二、 实验要求1. 设计进程调度算法,进程数不定2. 包含几种调度算法,并加以实现3. 输出进程的调度过程——进程的状态、链表等。

三、 参考例1.题目——优先权法、轮转法简化假设1) 进程为计算型的(无I/O )2) 进程状态:ready 、running 、finish3) 进程需要的CPU 时间以时间片为单位确定2.算法描述1) 优先权法——动态优先权当前运行进程用完时间片后,其优先权减去一个常数。

2) 轮转法四、 实验流程图 开始 键盘输入进程数n ,和调度方法的选择 优先权法? 轮转法产生n 个进程,对每个进程产生一个PCB ,并用随机数产生进程的优先权及进程所需的CPU 时间按优先权大小,把n 个进程拉成一个就绪队列撤销进程就绪队列为空?结束 N YY注意:1.产生的各种随机数的取值范围加以限制,如所需的CPU 时间限制在1~20之间。

2.进程数n 不要太大通常取4~8个3.使用动态数据结构4.独立编程5.至少三种调度算法6.若有可能请在图形方式下,将PCB 的调度用图形成动画显示。

五.实验过程:(1)输入:进程流文件(1.txt ),其中存储的是一系列要执行的进程, 每个作业包括四个数据项: 进程名 进程状态(1就绪 2等待 3运行) 所需时间 优先数(0级最高)进程0 1 50 2进程1 2 10 4进程2 1 15 0进程3 3 28 5进程4 2 19 1进程5 3 8 7输出: 进程执行流等待时间,平均等待时间本程序包括:FIFO 算法,优先数调度算法,时间片轮转调度算法产生n需的时间片数,已占用CPU 的时间片数置为0按进程产生的先后次序拉成就绪队列链=0? 撤销该进程就绪队列为空吗? =轮转时间片数?NY YY 结束 N(2)程序代码package进程调度;import java.util.*;class PCB//创建进程块{int Id;//进程编号int UseTime;//服务时间int NeedTime;//需要时间int Perior;//优先级String Status;//状态PCB(){Id++;UseTime=0;NeedTime=(int)Math.round(Math.random()*6)+1;//随机产生需要时间Perior=(int)Math.round(Math.random()*5)+1;//随即产生优先级Status="Ready";//初始状态为就绪}}class Found//定义系统处理方法类{ArrayList <PCB> sequnce;//创建就绪队列PCB pcb[]=new PCB[5];int StartTime=0;int SystemTime=(int)(Math.random()*3)+1;//随即产生系统时间 Found(){sequnce=new ArrayList <PCB>();for(int i=0;i<5;i++){pcb[i]=new PCB();pcb[i].Id=i+1;sequnce.add(pcb[i]);}}void FCFS()//先来先服务算法{PCB Running=null;while(sequnce.size()>0)//就绪队列不为空{Running=sequnce.remove(0);eTime=Running.NeedTime;Running.NeedTime=0;Running.Perior=0;System.out.println("当前系统时间:"+SystemTime);SystemTime+=eTime;ShowMessages(Running);}}void RR()//时间片轮换算法{PCB Running=null;int Time=SystemTime;while(sequnce.size()>0){System.out.println("当前系统时间:"+SystemTime); Running=sequnce.remove(0);if(Running.NeedTime<=Time){eTime=Running.NeedTime;Running.NeedTime=0;Running.Perior=0;Running.Status="Finish";SystemTime+=eTime;else{eTime+=Time;Running.NeedTime-=Time;Running.Perior--;Running.Status="Ready";sequnce.add(Running);SystemTime+=Time;}ShowMessages(Running);}}void ShowMessages(PCB p)//输出信息{System.out.println("当前运行进程:"+p.Id+" "+"服务时间:"+eTime+" "+"需要时间:"+p.NeedTime+" "+"优先级:"+p.Perior+" "+"状态:"+p.Status);if(sequnce.size()>0){System.out.println("当前就绪进程:");for(PCB p1:sequnce)System.out.println("进程编号:"+p1.Id+" "+"服务时间:"+eTime+" "+"需要时间:"+p1.NeedTime+" "+"优先级:"+p1.Perior+" "+"状态:"+p1.Status);System.out.println("--------------------------------------------------------------------------");}}else{System.out.println("当前系统中已经没有就绪进程!"); } System.out.println('\n');}}class Menu//主界面菜单{Scanner sc=new Scanner(System.in); int print() { System.out.println("************************************ ********");System.out.println(" 进调度算法演示");System.out.println("**************************************** ****");System.out.println(" 1.先来先服务(FCFS)算法");System.out.println(" 2.时间片轮换(RR)算法");System.out.println(" 3.退出该程序");System.out.print("请选择所要采用的算法:");int flag=sc.nextInt();return flag;}void select(){int flag=print(); switch (flag){case 1:Found Process1=new Found();Process1.FCFS(); print();case 2:Found Process2=new Found();Process2.RR(); print();case 3:System.exit(0);default:break;}}}package进程调度;public class ProcessControl { public static void main(String args[]){Menu Tencent=new Menu();Tencent.select();}}(3)运行结果:实验二银行家算法一、实验目的死锁会引起计算机工作僵死,因此操作系统中必须防止。

C语言实验

C语言实验

C程序设计实验报告目录实验1 C语言的编程环境 (3)实验2 数据类型、运算符和表达式 (6)实验3 控制语句 (8)实验4 函数 (17)实验5 数组 (27)实验6 指针 (40)大学实验报告学生姓名:学号:专业班级:实验1 C语言的编程环境一.实验目的1.初步了解C程序的编译、连接和运行的过程。

2.掌握和理解C程序的结构。

二.实验内容1.使用TC2.运行一个简单的C程序三.实验环境PC微机;DOS操作系统或Windows 操作系统;Turbo C 程序集成环境。

四.实验步骤1.启动Turbo C如果用户计算机系统已经安装了Turbo C编译系统,则在DOS命令状态下键入命令tc。

进入Turbo C集成环境后,首先在屏幕上显示Turbo C主菜单窗口。

在该窗口,有8个菜单条目。

每一个菜单的意义如下:File 处理文件(包括装入、存盘、选择、建立、换名写盘),目录操作(包括列表、改变工作目录),退出系统及调用DOS 。

Edit 建立、编辑源文件。

Run 控制运行程序。

如果程序已经编译连接好,且Debug/Source Debugging以及Option/Compiler/Code generation/OBJ Debug Information开关置为On,则可以用此菜单初始化调试阶段。

Compile 编译并生成目标程序与可执行文件。

Project 允许说明程序中包含哪些文件的管理条目。

Options 可以选择集成环境任选项(如存储模式、编译时的任选项、诊断及连接任选项)及定义宏;也可以记录Include Output及Library文件目录,保存编译任选项和从配置文件加载任选。

Debug 检查、改变变量的值,查找函数,程序运行时查看调用栈。

选择程序编译时是否在执行行代码中插入调试信息。

Break/Watch 增加、删除、编辑监视表达式,及设置、清除、执行至断点。

特别要指出的是,除了Edit项外,每一个菜单又有对应的子菜单。

江苏科技大学C++试验设计报告汇编

江苏科技大学C++试验设计报告汇编

实验报告第一题:从键盘上输入一个整数n的值,按下时求出y的值,并输出n和y的值Y=1!+2!+3!+······+n!源程序清单:#include <iostream.h>void main (){int t=1,n,y=0;cout<<"n=?"<<'\n';cin>>n;cout<<"n="<<n<<'\n';for(int i=1;i<=n;i++){t=t*i;y=y+t;}cout<<"y="<<y<<endl;}运行结果:第二题:设计一个程序,求出100~10000之间的所有素数。

源程序清单:#include<iostream.h>#include<iomanip.h>void main(){int i,n,count=0;for(n=101;n<1000;n++){for(i=2;i<=n-1;i++)if(n%i==0) break;if(i>n-1){cout<<setw(4)<<n;count++;if(count%10==0) cout<<endl;}}cout<<endl;}运行结果:第三题:设计一个程序,输入一个任意整数(1~4位),求出各位数字之和,并统计出位数源程序清单:#include<iostream.h>void main(){int n,k,s=0,t=0;cout<<"n=?"<<endl;cin>>n;while(n){k=n%10;n=n/10;s=s+k;t=t+1;}cout<<s<<'\t'<<t<<endl;}运行结果:第四题:设计一个程序,计算组合数:C(m,r)=m!/(r!*(m-r)!),其中m、r为正整数,且m>r。

利用超声C扫描成像技术对缺陷进行定量

利用超声C扫描成像技术对缺陷进行定量

实验报告利用超声C扫描成像技术对缺陷进行定量报告人:彭加福学号: 0640502112指导老师:魏勤江苏科技大学数理学院应用物理学2009年10月29日~ 2009年11月12日利用超声C扫描成像技术对缺陷进行定量彭加福(江苏科技大学,数理学院,应用物理学)目前超声波检测技术正在向自动化以及超声检测设备的数字化、智能化方向发展,同时和其他学科相结合,这将大大拓宽了超声波检测的应用范围。

随着科学技术的发展,新材料、新技术的广泛应用,各种结构零件向高参量、大容量方向发展,这不仅要求不断提高缺陷检测的准确率和可靠性,而且要把传统的无损检测技术和现代信息技术相结合,实现无损检测的数字化、图像化、实时化和智能化。

本实验所采用的超声C扫描成像技术通过将传统的超声检测技术、微机控制与计算机数据采集、存贮、处理、图像显示等技术集合起来,实现了超声检测过程的自动化、数字化、图像化。

采用超声C扫描成像技术能通过对所采集的信息进行处理,从而得到工件内部缺陷的横截面图,同时根据超声波换能器的声场特性对缺陷的形状和大小进行定量化分析。

1.实验目的1.1了解超声C扫描成像装置的设备组成,掌握通过超声C扫描成像技术实现无损检测的数字化、图像化、实时化和智能化的方法及过程;1.2掌握水浸法超声检测的理论知识及实验操作过程,通过超声C扫描成像技术对材料内部缺陷横断面进行成像;1.3学会通过超声C扫描图像分析材料内部缺陷,对缺陷进行定性、定量及评估。

2.实验器材超声C扫描成像装置、水槽、各类受检金属工件(包括铝块,铸件,复合铝板,焊缝)、台式计算机(含数据采集,储存,处理软件、扫面控制软件及图像处理软件等)、数据传输线、水浸聚焦探头、CTS-23型超声波探伤仪、扫描控制仪。

3.实验原理3.1水浸聚焦探头的声场利用超声波成像系统对工件进行检测时,如果利用具有聚焦特性的聚焦探头,不仅能够提高检测的精度,同时可以根据聚焦探头的声场特性判断缺陷的实际形状尺寸。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

江科技大学课程实践报告设计题目:计算机程序设计实验(C++)设计时间: 2016年10月3日至2016年10月4日学院:计算机科学与工程学院专业班级:通信工程 1522107041学生:周祯楠学号:****************:***一、第三题(一)题目:3.建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。

具体要求如下:(1)私有数据成员。

○1float array[20]:一维整型数组。

○2int n:数组中元素的个数。

(2)公有成员函数○1MOVE(float b[],int m):构造函数,初始化成员数据。

○2void average():输出平均值,并将数组中的元素按要求重新放置。

○3void print():输出一维数组。

(3)在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。

(二)源程序:#include<iostream.h>class MOVE{float array[20];int n;public:MOVE(float b[],int m);void average();void print();};MOVE::MOVE(float b[],int m){int i;n=m;for(i=0;i<m;i++)array[i]=b[i];}void MOVE::average(){int i,x;float a = 0;for(i=0;i<n;i++)a+=array[i];a/=n;cout<<"平均值为:"<<a<<endl; //○1float f[20];for(i=0,x=0;i<n;i++)if(array[i]<a){f[x] = array[i];x++;}for(i=0;i<n;i++)if(array[i]>a){f[x] = array[i];x++;} //○2 for(i=0;i<n;i++)array[i] = f[i]; //○3}void MOVE::print(){int i;for(i=0;i<n;i++){cout<<array[i]<<'\t';if((i+1)%5==0) cout<<endl; //○4 }cout<<endl;}void main(){float b[]={1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3};int m = 9;MOVE ff(b,m);ff.average();ff.print();}(三)运行结果:(四)基本分析:1.就结构而言,定义类以及成员函数按照题目要求写即可,注意类作用域符::不可缺失。

2.就算法而言:○1求数组中的数的平均值,就是先求和,再除总个数。

○2“小于平均值的放左边,大于平均值的放右边。

”先新建一个数组f[20]用于存放排列后的数组,通过if条件判断语句进行排序,这里大于平均值和小于平均值是有先后顺序的,因为是依次放入f[20]中,所以要等小于平均值的放完,再放大于平均值的。

○3再把f[20]赋值给array[20],这样array[20]就是排序后的符合题目要求的新数组。

○4每行5个输出,i的初始值是0,所以if条件判断中应该是if((i+1)%5 == 0),直接用i,无需定义其他变量。

二、第四题(一)题目:4.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。

具体要求如下:(1)私有数据成员○1int *array:一维整型数组。

○2int n:数组中元素的个数。

(2)公有成员函数○1MOVE(int b[],int m):构造函数,初始化成员数据。

○2void exchange():输出平均值,并将数组中的元素按要求重新放置。

○3void print():输出一维数组。

○4~MOVE():析构函数。

(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。

(二)源程序#include<iostream.h>class MOVE{int *array;int n;public:MOVE(int b[],int m);void exchange();void print();~MOVE();};MOVE::MOVE(int b[],int m){n = m;array = new int[n]; //○1for(int i=0;i<n;i++)array[i] = b[i];}void MOVE::exchange(){float a = 0;int i,*p1,*p2;for(i=0;i<n;i++)a+=array[i];a/=n;cout<<"The average of the number is:"<<a<<endl;p1 = p2 = array; //○3for(i=0;i<n;i++){if(array[i] < *p1) p1 = &array[i];if(array[i] > *p2) p2 = &array[i];} //○4i = *p1;*p1 = *p2;*p2 = i; //○5}void MOVE::print(){for(int i=0;i<n;i++){cout<<array[i]<<'\t';if((i+1)%5==0) cout<<'\n';}}MOVE::~MOVE(){delete []array; //○2}void main(){int b[] = {21,65,43,87,12,84,44,97,32,55},n = 10;MOVE f(b,n);f.exchange();f.print();}(三)运行结果(四)基本分析1.要注意的函数:○1构造函数中:当要用到指针来操作数组时,要通过new运算符动态申请空间。

格式:指针变量 = new 数据类型[数组大小],指针变量保存该空间的首地址○2析构函数:释放new分配的而动态存,格式:delete []指针变量2.相关算法:○3定义指针变量p1、p2指向数组的首地址,这句话等价于 p1 = p2 =&array[0]; ○4遍历数组,p1指向最小值,p2指向最大值○5交换*p1、*p2的值三、第17题(一)题目:定义一个类SIN。

求sin(x)=x/1-x^3/3!+x^5/5!-x^7/7!+……+(-1)^(n+1)x^(2n+1)/(2n+1)!具体要求如下:(1)私有成员数据。

①double x:输入公式中x的值,求sin(x)。

②int n:输入公式中n的值。

(2)公有成员函数。

①SIN(int x,int n):构造函数,用于初始化x和n的值。

②double power(int q):求q!的值。

③int mi(int m,int n):求m^n的值。

○4fun( ):用于求sin(x)的值。

○5void show( ):输出求得的结果。

(3)在主程序中定义对象test,对该类进行测试。

(二)源程序:#include<iostream.h>class SIN{double x;int n;public:SIN(double x,int n);double power(int q);double mi(int m,int n);double fun();void show();};SIN::SIN(double x,int n){this->x = x;this->n = n; //○1 }double SIN::power(int q){for(int m = 1;m < q;m++)q *= m; //○2 return q;}double SIN::mi(int m,int n){for(int i = 1;i < n;i++)m *= m; //○3return m;}double SIN::fun(){double sinx = 0;for(int i = 1;i <= n;i++)sinx += mi(-1,i+1)*mi(x,2*i-1)/power(2*i-1); //○4 return sinx;}void SIN::show(){cout<<"请输入x:"<<endl;cout<<"sin("<<x<<")="<<fun()<<endl;}void main(){double x,n;cout<<"请输入x和n的值:"<<endl;cin>>x>>n;SIN test(x,n);test.show();}(三)运行结果:(四)基本分析:1.需要注意:○1this指针指向本身对象的数据成员,避免因数据名相同而造成的混乱。

按题目要求,这一题只能用this指针加以区分。

2.相关算法:○2求阶乘○3求m^n。

i < n即可,因为i = 1时,m=m*m,依此类推,i=n-1 时,算的就是m^n○4这个公式看起来比较繁琐,对应着公式调用相关函数写,不要弄错四、第18题(一)题目:18.试建立一个类VAR,用于求n(n<=100)个数的均方差。

均方差的计算公式为,其中平均值为具体要求如下:(1)私有成员数据。

○1double a[100]:用于存放输入的n个数。

○2int n:实际输入数的个数n。

(2)公有成员函数。

○1VAR(double x[], int n1):构造函数,初始化成员数据a和个数n。

○2double average(double x[], int n):求平均值,数组x具有n个元素。

○3void variance(double x[],int n):求均方差,数组x具有n个元素。

○4void show():输出求得的均方差。

(3)在主程序中定义一个对象test,对该类进行测试。

(二)源程序:#include<iostream.h>class VAR{double a[100];int n;public:VAR(double x[],int n1);double average(double x[],int n);void variance(double x[],int n);void show();};VAR::VAR(double x[],int n1){for(int i = 0;i < n1;i++)a[i] = x[i];n = n1;}double VAR::average(double x[],int n){double a = 0;for(int i = 0;i < n;i++)a += x[i];a /=n;return a;}void VAR::variance(double x[],int n){double d = 0; //○1for(int i = 0;i < n;i++)d = (x[i] - average(x,n))*(x[i] - average(x,n));d /= n;cout<<"方差为:"<<d<<'\n';}void VAR::show(){cout<<"平均值为:"<<average(a,n)<<'\n'<<endl;variance(a,n);}void main(){double x[100] = {16,18,25,23,56,14};int n1 = 6;VAR test(x,n1);test.show();}(三)运行结果:(四)基本分析:1.需要注意:○1方差d最好定义成double型2.此题不难,按照题目要求“堆”程序即可,没有复杂的算法,也没有特殊的结构。

相关文档
最新文档