资源描述
实验八
1.实验目的
(1)初步学会指针数组的定义与使用方法。
(2)了解指向一维数组的指针变量的概念,能用指向一维数组的指针变量按行处理二维数组的问题。
(3)理解返回指针值函数的概念、定义格式,学会用返回指针值函数处理字符串问题。
(4)理解函数指针与函数指针变量的概念,学会用函数指针变量处理不同函数数学计算问题。
2.实验要求
(1)编写实验程序
(2)在VC++运行环境中,输入源程序;
(3)编译运行源程序;
(4)输入测试数据进行程序测试;
(5)写出实验输入数据与运行结果。
3.实验内容
(1)定义一个二维字符数组s[3][80]及指针数组p[3],用cin.getline(s[i],80) 输入3个字符串到二维数组3行中,然后用指针数组p对字符串进行降序排列(要求用擂台法),最后用指针数组p输出排序后的结果,用字符数组s输出排序前的三个字符串。
实验数据:"Visual C++" ,"Visual Basic" ,"Delphi"
(2)输入一个二维数组a[3][3],设计一个函数,用指向一维数组的指针变量和二维数组的行数作为函数的参数,求出平均值、最大值和最小值,并输出。
实验数据:10,25,90,80,70,35,65,40,55
(3)设计程序,用函数指针变量完成两个操作数的加、减、乘、除、取余运算。
实验数据:10 + 20
10 - 5
10 * 15
10 / 2
10 % 3
(4)设计一个用梯形法求定积分的通用函数,被积函数的指针、积分的上限、积分的下限和积分的区间等分数作为函数的参数。分别求出下列定积分的值。
4.解答参考
(1)
#include <iostream.h>
# include <string.h>
void main(void)
{ char s[3][80];
char *p[3]={s[0],s[1],s[2]};
char *pc;
int i,j,k;
cout<<"Input 3 String:"<<endl;
for (i=0;i<3;i++)
cin>>p[i];
for (i=0;i<2;i++)
{ k=i;
for (j=i+1;j<3;j++)
if (strcmp (p[i],p[j])<0)
k=j;
if (k!=i)
{ pc=p[i];p[i]=p[k];p[k]=pc;
}
}
for ( i=0;i<3;i++) cout<<p[i]<<endl;
for ( i=0;i<3;i++) cout<<s[i]<<endl;
}
程序运行结果:
Input 3 String:
Visual Basic
Visual C++
Delphi
Visual C++
Visual Basic
Delphi
Visual Basic
Visual C++
Delphi
(3)
解:
# include <iostream.h>
int add(int x,int y)
{ return x+y;}
int sub(int x,int y)
{ return x-y;}
int mul(int x,int y)
{ return x*y;}
int div(int x,int y)
{ return x/y;}
int res(int x,int y)
{ return x%y;}
void main(void)
{ int x,y;
char operate;
int (*f)(int,int);
cout<<"input three 0 end"<<endl;
cout<<"Input x operate y= "<<endl;
while(1)
{
cin>>x>>operate>>y ;
switch (operate)
{
case '+': f=add; break;
case '-': f=sub; break;
case '*': f=mul; break;
case '/': f=div; break;
case '%': f=res; break;
default: return;
}
cout<<x<<operate<<y<<"="<<(*f)(x,y)<<endl;
}
}
程序运行结果:
input three 0 end
Input x operate y=
10 + 20
10+20=30
10 - 5
10-5=5
10 * 15
10*15=150
10 / 2
10/2=5
10 % 3
10%3=1
0 0 0
(3)
方法一:用指向一维数组的指针变量和二维数组的行数作为函数的参数
#include <iostream.h>
float ave(float (*p)[3],float *max,float *min)
{ float sum=0;
int i,j;
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
{ sum+=(*p)[j];
if (*max<(*p)[j]) *max=(*p)[j];
if (*min>(*p)[j]) *min=(*p)[j];
}
p++;
}
return sum/9;
}
void main(void)
{ float a[3][3],max,min,average;
int i,j;
cout<<"Input Data:";
for (i=0;i<3;i++)
for (j=0;j<3;j++)
cin>>a[i][j];
max=min=a[0][0];
average=ave(a+0,&max,&min);
cout<<"ave="<<average<<'\n';
cout<<"max="<<max<<'\n';
cout<<"min="<<min<<'\n';
}
方法二:用数组名为函数参数,在函数内用指向一维数组的指针变量,求出平均值、最大值和最小值,并输出。
解:
#include <iostream.h>
void fun(float a[3][3])
{ float max,min,sum=0,(*p)[3];
int i,j;
max=min=a[0][0];
for(i=0;i<3;i++)
{ p=a+i;
for(j=0;j<3;j++)
{ sum+=(*p)[j];
if (max<(*p)[j]) max=(*p)[j];
if (min>(*p)[j]) min=(*p)[j];
}
}
cout<<"ave="<<sum/9<<'\n'<<"max="<<max<<'\n'<<"min="<<min<<endl;
}
void main(void)
{ float b[3][3];
int i,j;
cout<<"Input Data:";
for (i=0;i<3;i++)
for (j=0;j<3;j++)
cin>>b[i][j];
fun(b);
}
程序运行结果:
Input Data:10 25 90 80 70 35 65 40 55
ave=52.2222
max=90
min=10
(4)
图 用梯形法求定积分面积
y y=f (x) yn-1
y2 yn
y1
y0
△ s0 △s1 △s2 … △sn-1
x=a x=b
x0 x1 x2 x3 xn-1 xn x
0 a h b
分析:由高等数学可知,的定积分值等于由曲线y=f(x)、直线x=a 、x=b、 y=0所围曲边梯形的面积s,如下图所示。现将曲边梯形划分成n个小曲边梯形△s0、△s1、△s2、…、△sn-1。每个曲边梯形的高均为h=(b-a)/n,用矩形近似曲边梯形后各曲边梯形的面积近似为:
△s0=y0*h
△s1=y1*h
△s2 =y2*h
…
△sn-1=yn-1*h
s =△s0+△s1+△s2+…+△sn-1=(y0+y1+y2+…+yn-1)*h
=((f (x0)+(f (x1)+f (x2)+…+f (xn-1))*h
∵x0=a ,xn=b,xi=a+i*h
∴用梯形法求定积分面积的公式为:
其中:a、b分别为积分的下、上限,n为积分区间的分隔数,h=(b-a)/n,h为积分步长;f(x)为被积函数。
程序编写如下:
# include <math.h>
# include <iostream.h>
float f1(float x)
{ return (1+log(x)+x*x*x);}
float f2(float x)
{ return (1/(1+x*x));}
float f3(float x)
{ return (x+exp(x))/(1+sin(x)+x*x);}
float integral(float (*f)(float),float a,float b,int n)
{
float y,h;
int i;
y=0;
h=(b-a)/n;
for (i=0;i<n;i++) y+=f(a+i*h);
return (y*h);
}
void main (void )
{
cout<<"s1="<<integral(f1,1,2,1000)<<endl;
cout<<"s2="<<integral(f2,-1,4,1000)<<endl;
cout<<"s3="<<integral(f3,1,3,1000)<<endl;
}
程序运行结果:
s1=5.13245
s2=2.11232
s3=3.31222
其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。
二.培训的及要求培训目的
安全生产目标责任书
为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标:
一、目标值:
1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。
2、现金安全保管,不发生盗窃事故。
3、每月足额提取安全生产费用,保障安全生产投入资金的到位。
4、安全培训合格率为100%。
二、本单位安全工作上必须做到以下内容:
1、对本单位的安全生产负直接领导责任,必须模范遵守公司的各项安全管理制度,不发布与公司安全管理制度相抵触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。
2、保证公司各项安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。
3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期、质量”发生矛盾时,坚持安全第一的原则。
4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生产任务时,必须安排安全工作内容,并写入记录。
5、在公司及政府的安全检查中杜绝各类违章现象。
6、组织本部门积极参加安全检查,做到有检查、有整改,记录全。
7、以身作则,不违章指挥、不违章操作。对发现的各类违章现象负有查禁的责任,同时要予以查处。
8、虚心接受员工提出的问题,杜绝不接受或盲目指挥;
9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。
10、必须按规定对单位员工进行培训和新员工上岗教育;
11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。
三、 安全奖惩:
1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。
2、每月接受主管领导指派人员对安全生产责任状的落
展开阅读全文