文档库 最新最全的文档下载
当前位置:文档库 › 实验六

实验六

实验六
实验六

实验六下下周(第十

四周)必须周四交,

前五次实验这周六交

实验六ODBC数据库编程

Visual c++6.0为用户提供了ODBC、DAO及OLE DB三种数据库方式,这三

种方式中最简单、最常用的是ODBC。

1、MFC的ODBC数据库概述

ODBC(Open Database Connectivity 开放数据库连接),是一种使用SQL的

程序设计接口,使用ODBC能使用户编写数据库应用程序变得容易、简单、避

免了与数据源相连接的复杂性。在Visual C++中,MFC的ODBC数据库类CDatabase(数据库类)、CRecordSet(记录集类)和CRecordView(记录视图类)可为用户管理数据库提供切实可行的解决方案。

用MFC AppWizard(exe)创建一个数据库处理的SDI/MDI程序,只需在向导

的第二步中选中“Database view without file support”或“Database view with filesupport”即可。当然,在创建之前预先构造好一个数据库,然后进行ODBC

的数据源定义。

1、1 数据库基本概念

(1)、数据库和DBMS

数据库是指以一定的组织形式存放在计算机存储介质上的相互关联的数据集合。例如,把一个学校的教师、学生和课程等数据有序地组织起来,存储在计算

机磁盘上,就构成了一个数据库。

为了有效地管理数据库,常常需要一些数据库管理系统(DBMS)为用户提

供对数据库操作的各种命令、工具及方法,包括数据库的建立和记录的输入、修改、检索、显示、删除和统计等。流行的DBMS都提供一个SQL接口。

(2)、SQL(结构化查询语言)

作为用在DBMS中访问和操作的语言,SQL(结构化查询语言)语句分为2类:一类是DDL(Data Definition Language,数据定义语句,它用于创建表、索引

等,另一类是DML(Data Manipulation Language,数据操作语言)语句,这些语句用于读取数据、更新数据和执行其他类似操作的语句。

1、2 MFC ODBC向导过程

用MFC AppWizard使用ODBC数据库的一般过程是:(1)用Access或其他数据库工具构造一个数据库;(2)在Windows中为刚才构造的数据库定义一个ODBC数据源;(3)在创建数据库处理的文档应用程序向导中选择数据源;(4)设计界面,并使控件与数据表字段关联。

一、设计数据库

下面我们开始用Access2003设计数据库:

(1)开机正常屏幕状态→开始→程序→Microsoft Office→Microsoft Office Access 2003→新建文件→空数据库→文件名处写:student→点右边的创建→新建→设计视图→确定→出现表,按下面数据敲入即可:

字段名称数据类型字段大小说明

stuid 文本 6 学号

name 文本8 姓名

sex 文本 2 性别

profcode 文本 6 专业代号

(2)关闭此表→提问:你是否保存对表1的设计更改?→是→表名写xs→是→便在数据库中建立了表xs

(3)双击xs出现设计视图表,之后按上面的表1即下面的数据敲进去

学号姓名性别专业代号

990101 李林男102001

990102 高山男102001

990201 王平男109003

990202 丁玲女109003

二、创建ODBC的数据源

用户安装Visual C++的同时也会装上ODBC程序,但它不是出现在Visual C++程序组中,而是出现在系统的“控制面板”中。

桌面左下角→开始→设置→控制面板→管理工具→双击ODBC图标,进入ODBC数据源管理器,在这里用户可以设置ODBC数据源的一些信息,其中的“用户DNS”页面是用户定义自己在本地计算机使用的数据源名(DNS)。(1)单击[添加]按钮,弹出有一驱动程序列表的“创建新数据源”对话框。(2)在该对话框中选择要添加用户数据源的驱动程序,这里选择“Microsoft Access Driver”。单击[完成]按钮,进入特定驱动程序的安装对话框。

(3)在对话框中,单击[选择]按钮将前面创建的数据库student调入,见下图所示。

(4)单击[确定]按钮,给刚才创建的用户数据源起名“stuodbc”写在数据源名处,单击[确定]便使其添加在“ODBC数据源管理器”的“用户数据源”列表中。三、在MFC AppWizard中选择数据源

用MFC AppWizard(exe)可以很容易地创建一个支持数据库的SDI/MDI的应用程序,过程如下:

(1)文件->新建->MFC AppWizard(exe),在project name中输入工程名称:stutest,点击“确定”,接下来选择“single document”

(2)在向导的第2步对话框中加入数据库的支持。

(3)选中“数据库查看使用文件支持Database view with file support”项,单击[Data Source]按钮,弹出“Database Options”对话框。

(4)从中选择你刚才起好名的ODBC的数据源“stuodbc”,单击[OK]按钮,弹出“Select Database Table”对话框,从中选择要使用的表(选择xs )。

(5)单击[OK]按钮,又回到了向导的第2步对话框,保留默认设置,单击[Finish]按钮。

(6)编译运行结果如下图所示。

说明:MFC AppWizard创建的“stutest”应用程序与一般默认的单文档应用

程序相比较,在类结构方面,有如下几点不同:

1)添加了一个CStutestSet类,它与上述过程中所选择的数据表xs进行数据绑定,也就是说,CStutestSet对象的操作实质上对数据表进行操作。

2)将CStutestView类的基类设置成CRecordView,由于CRecordView的基类是CFormView,因此它需要与之相关联的表单资源。

3)在CStutestView类中添加了一个全局的CStutestSet对象指针变量m_pSet,目的是在表单视图和记录集之间建立联系,使得记录集中的查询结果能够很容易地在表单视图上显示出来。

四、设计浏览记录界面

在“数据库”应用程序中,MFC为用户自动创建了用于浏览数据表记录的工具按钮和相应的“记录”选单项。若用户选择这些浏览记录命令,系统会自动调用相应的函数来移动数据库表的当前位置。若在表单视图C Stutest View中添加控件并与表的字段相关联,就可以根据表的当前记录位置显示相应的数据。(1)打开“stutest”应用程序

(2)切换到项目工作区窗口的ResourceView页面,双击用于表单视图C Stutest View的对话框资源IDD_ STUTEST_FORM.

(3)参看下图1向对话框中添加下列控件:

控件ID号标题属性

组框默认学生表默认

静态文本默认学号:..

编辑框IDC_STU_ID ……..

静态文本默认姓名:..

编辑框IDC_STU_NAME …..

静态文本默认性别..

编辑框IDC_STU_SEX …..

静态文本默认专业代号..

编辑框IDC_PROF_CODE ….. ....

图1:控件的设计

(4)加数据成员:选择“View”选单->“Class Wizard”命令或按快捷键Ctrl+W,弹出ClassWizard对话框,切换到Member Varibles页面,在Class name框中选择CStutestView,为上述控件添加相关联的数据成员。这里添加的数据成员都是由系统自动定义的,并与数据库表字段相关联。例如,双击IDC_PROF_CODE,在弹出的“Add Member Variable”对话框中的成员变量下拉列表中选择要添加的成员变量名m_pSet->m_profcode。

(5)按上步添加成员变量的方法将下列表中所列控件依次添加相关联的数据成员。

控件ID号变量类型变量名字符长度

IDC_PROF_CODE CString ->m_profcode 6

IDC_STU_NAME CString ->m_name 8

IDC_STU_ID CString ->m_stuid 6

IDC_STU_SEX CString ->m_sex 2

注意:字符长度应与上面建地数据库表1的字段大小相同

(6)编译并运行,结果如下图2所示:

图2:浏览记录结果

2 MFC的ODBC应用编程

上述过程虽没有添加任何代码,但却能浏览表中的记录内容,这些MFC AppWizard创建的功能。但在MFC AppWizard创建的数据库处理的基本程序框架中,只提供了程序和数据库记录之间的关系映射,却没有操作的完整界面。如果要增加操作功能,还必须加入一些代码。这时就需要使用MFC提供的ODBC 类:CDatabase(数据库类)、CRecordSet(记录集类)和CRecordView(可视记录集类)。

CDatabase类用于提供对数据源的连接,通过它可以对数据源进行操作CRecordView类用于控制并显示数据库记录,该视图是直接连到一个CRecordSet 对象的表单视图

CRecordSet 类是用户最关心的,它为用户提供了对表记录进行操作的许多功

能,如:查询记录、添加记录、删除记录、修改记录等,并能直接

为数据源中的表映射一个CRecordSet类对象,方便用户的操作。

CRecordSet类对象提供了从数据源中提取出表的记录集,并提供了

2种操作形式:动态行集(Dynasets)和快照集(Snapshots)。动态

行集能与其他用户所进行的更改保持同步,而快照集则是数据的一

个静态视图。这2个形式在记录集被打开时都提供一组记录。所不

同的是:当在一个动态行集里滚动一条记录时,由其他用户或应用

程序中的其他记录对该记录所进行的更改会相应地显示出来,而快

照集则不会。

下面从显示记录总数和当前记录号、查询记录、编辑记录和处理多个表等几个方面讨论MFC ODBC数据库编程的方法和技巧。

2.1查询记录

使用CRecordSet类的成员变量m_strFilter、m_strSort和成员函数Open可以对表进行记录的查询和排序。示例如下图4所示:

图4:添加查询控件

(1)在上面项目中,打开资源栏,点开Dialog,双击IDD_STUTEST_FORM,在学生表下面,加一静态控件写:要查询的学号,接着再加一个编辑控件,ID 为:IDC_EDIT_QUERY,再加一个按钮控件,ID号为:IDC_BUTTON_QUERY Caption标题处写:查询

(2)打开MFC ClassWizard对话框,为控件IDC_EDIT_QUERY添加CString类型的关联变量m_strQuery。

(3)在View类中添加按钮控件IDC_BUTTON_QUERY的BN_CLICKED消息映射,并加下列代码:

void CMyView::OnButtonQuery()

{

// TODO: Add your control notification handler code here

UpdateData();

m_strQuery.TrimLeft();

if(m_strQuery.IsEmpty())

{

MessageBox("要查询的信息不能为空");

return;

}

if(m_pSet->IsOpen())

m_pSet->Close();//如果记录集打开,则先关闭

m_pSet->m_strFilter.Format("stuid='%s'",m_strQuery);

//stuid是xs表的字段名,用来指定查询条件

m_pSet->m_strSort="name";

//name是xs表的字段名,用来按name字段从小到大排序

m_pSet->Open();

if(!m_pSet->IsEOF())//如果打开记录集,有记录

UpdateData(FALSE);//自动更新表中控件显示的内容

else

MessageBox("没有没有该学号!");

}

其中:m_strFilter和m_strSort是CRecordSet的成员变量,用来执行条件查询和排序。

m_strFilter称为"过滤字符串",相当于SQL语句中WHERE后的条件串。

m_strSort称为"排序字符串",相当于SQL语句中ORDER BY后的字符串。

若字段的数据类型是文本,则需要在m_strFilter字符串中用单引号将查询的内容括起来;对于数字,则不需要用单引号。需要注意的是:只有在调

用Open函数之前设置m_strFilter和m_strSort才能保证查询和排序有效。

如果有多个条件查询,则可以使用AND、OR、NOT来组合,例如:m_pSet->m_strFilter="stuid>='990103'AND stdio<='990101'";

需要说明的是,如果查询的结果有多条记录,则可以用CRecordSet类的MoveNext (下移一个记录)、MovePrev(上移一个记录)、MoveFirst(定位到第一个记录)和MoveLast(定位到最后一个记录)等函数来移动当前记录位置进行操作。(4)编译运行

2.2编辑记录

CRecordset类为用户提供了编辑记录所需要的成员函数,但在编程时还应注意两个方面的内容:

(1)理解“删除”。CRecordset类的成员函数Delete只是将记录进行“逻辑”删除,而不是“物理”删除。逻辑删除的记录还可以恢复,而物理删除则不能。(2)控件与字段数据成员的相互影响。

在MFC创建的数据库处理的应用程序框架中,表的字段总是和系统定义的默认数据成员相关联,例如表xs字段stuid与CStutestSet的m_stuid相关联。另外,在表单视图CStutestView中添加一些控件用于记录的浏览,其中控件IDC_STU_ID的成员变量也是CStutestSet的m_stuid,因而控件数据成员与字段

数据成员必然相互影响。合理利用这些影响能简化编程,例如下面的代码是用来增加记录的:

m_pSet->AddNew(); //在表的末尾增加新记录

UpdateData(TRUE); //将控件中的数据传给字段数据成员

m_pSet->Update(); //将新记录存入数据库

m_pSet->MoveLast(); //将当前记录位置定位到最后一个记录

UpdateData(FALSE); //将字段数据成员的数据传给控件,即在控件中显示上述的相互影响有时也给编程带来不便,因为稍不留神就会产生错误。因此,在修改和添加记录数据之前,往往设计一个对话框用以获得所需要的数据,然后用该数据进行当前记录的编辑。这样就能避免它们的相互影响,且保证代码的相对独立性。

一、增加记录

增加记录是使用AddNew函数,但要求数据库必须是以“可增加”的方式打开的。以下代码是在表的末尾增加新记录:

m_pSet->AddNew();//在表的末尾增加新记录

m_pSet->SetFieldNull(&(m_pSet->m_studentno),FALSE);//设定m_studentno值不

//为空(NULL)

m_pSet->m_studentno=”21010503”;

….. //输入新的字段值

m_pSet->Update();//将新记录存入数据库

m_pSet->Requery();//刷新记录集,这在快照集方式下是必须的

二、删除记录

可以直接使用CRecordSet::Delete函数来删除记录。需要说明的是,要使删除操作有效,还需要移动记录函数。例如下列代码:

CRecordsetStatus status; //建立记录状态对象

m_pSet->GetStatus(status);//获取当前记录状态

m_pSet->Delete(); //删除当前记录

if(status.m_lCurrentRecord==0) //若当前记录索引号为0(0表示第1条记录)则m_pSet->MoveNext(); //下移一个记录

else

m_pSet->MoveFirst(); //移到第1个记录处

UpdateData(FALSE);

三、修改记录

函数CRecordSet::Edit可以用于修改记录,例如:

m_pSet->Edit(); //修改当前记录

m_pSet->m_name=”刘向东”;//修改当前记录字段值

……

m_pSet->Update(); //将修改结果存入数据库

m_pSet->Requery();

四、撤消操作

如果用户在进行增加或者修改记录后,希望放弃当前操作,则在调用CRecordSet::Update

函数之前调用CRecordSet::Move(AFX_MOVE_REFRESH)来撤消操作,便可恢复在增加或修改操作之前的当前记录。

在编写程序时应注意控件与字段数据成员的相互影响。在MFC创建的数据库处理的应用程序框架中,表的字段总是和系统定义的默认数据成员相关联。例如:本程序中,表xs字段stuid(学号)与CMySet指针的m_stuid相关联。而且,在表单视图CMyView添加用于记录内容显示的一些控件中,在定义其控件变量时,使用的也是m_pSet中的成员变量。例如编辑框IDC_STU_ID定义的控件变量是m_pSet的m_stuid。虽然,共用同一个成员变量能简化编程,但有时也给编程带来不便,稍不留神就会产生误操作。例如以下代码是用于增加一条记录:m_pSet->AddNew();//在表的末尾增加新记录

UpdateData(TRUE);//将控件中的数据传给字段数据成员

m_pSet->Update();//将新记录存入数据库

m_pSet->MoveLast();//将当前记录位置定位到最后一个记录

UpdateData(FALSE);//将字段数据成员的数据传给控件,即在控件中显示。

由于增加和显示记录在同一界面中出现,容易造成误操作。因此,在修改和添加记录数据之前,往往设计一个对话框用于获得所需要的数据,然后用该数据进行当前记录的编辑。这样就能避免它们的相互影响,且保证代码的相对独立性。例:在表单视图中增加3个按钮:[添加记录]、[修改记录]、[删除记录],如下图5所示:。单击[添加记录]或[修改记录]都将弹出一个如下图6所示的对话框,在对话框中可以进行数据的添加或修改,单击对话框的[确定]按钮则数据有效。(1)用前面的单文档应用程序:stutest

(2)切换到项目工作区窗口的ResourceView页面,打开用于表单视图CStutestView的对话框资源IDD_STUTEST_FORM。参看下面图5向表中添加3个按钮:添加记录(IDC_REC_ADD)、修改记录(IDC_REC_EDIT)和删除记录(IDC_REC_DEL)。

图5:记录编辑

(3)添加一个对话框资源,打开属性对话框将其字体设置为“宋体9号”,标题

定为“学生表”,ID设为IDD_STU_TABLE(添加、修改、删除都弹出此对话框)(4)将图5表单中的控件复制到刚添加的对话框中(参看下图6),并将[OK]和[Cancel]按钮的标题分别改为“确定”和“取消”。双击对话框模板或按Ctrl+W 快捷键,为对话框资源IDD_STU_TABLE创建一个对话框类CStuDlg。

图6:“学生表”

(5)打开ClassWizard的Member Variables标签,在Class name中选择CStuDlg,选中所需的控件ID号,双击鼠标或单击Add Variables按钮,依次为上图控件的ID按下表中形式增加成员变量。

控件ID号变量类型变量名字符长度

IDC_PROF_CODE CString m_ProfCode 6

IDC_STU_ID CString m_StuID 6

IDC_STU_NAME CString m_StuName 8

IDC_STU_SEX CString m_StuSex 2

(6)切换到ClassWizard的Message Maps标签页,为CStuDlg中的控件IDOK 增加BN_CLICKED的消息映射,并添加代码:UpdateData(TRUE);

(7)用ClassWizard为CStutestView类中的3个按钮:IDC_REC_ADD,IDC_REC_EDIT 和IDC_REC_DEL增加BN_CLICKED的消息映射,并添加下列代码:

void CStutestView::OnRecAdd()

{

// TODO: Add your control notification handler code here

CStuDlg dlg;

if(dlg.DoModal()==IDOK)

{

m_pSet->AddNew();

m_pSet->m_stuid = dlg.m_StuID;

m_pSet->m_name = dlg.m_StuName;

m_pSet->m_gender= dlg.m_StuGender;

m_pSet->m_profcode = dlg.m_ProfCode;

m_pSet->Update();

m_pSet->Requery();

}

}

void CStutestView::OnRecEdit()

{

// TODO: Add your control notification handler code here CStuDlg dlg;

dlg.m_StuID = m_pSet->m_stuid;

dlg.m_StuName = m_pSet->m_name;

dlg.m_StuGender = m_pSet->m_gender;

dlg.m_ProfCode = m_pSet->m_profcode;

if(dlg.DoModal()==IDOK)

{

m_pSet->Edit();

m_pSet->m_stuid = dlg.m_StuID;

m_pSet->m_name = dlg.m_StuName;

m_pSet->m_sex = dlg.m_StuSex;

m_pSet->m_profcode = dlg.m_ProfCode;

m_pSet->Update();

UpdateData(FALSE);

}

}

void CStutestView::OnRecDel()

{

// TODO: Add your control notification handler code here CRecordsetStatus status;

m_pSet->GetStatus(status);

m_pSet->Delete();

if(status.m_lCurrentRecord==0)

m_pSet->MoveNext();

else

m_pSet->MoveFirst();

UpdateData(FALSE);

}

(8)在CStutestView.cpp最上面加:#include “StuDlg.h”(9)编译运行

附加:

实验六数据库表的内容:

实验6+过程_函数和程序...

实验6过程、函数和程序包 姓名:学号: 专业:班级: 同组人:无实验日期:2013/7/21 【实验目的与要求】 ?掌握过程的创建与调用 ?掌握PL/SQL函数的编写与调用 ?熟悉程序包的使用 【实验内容与步骤】 6.0.实验准备工作:PL/SQL程序文件的编辑与执行 1.使用文档编辑器编辑以下文件,并保存为aa.sql: 2.以scott身份登录,在SQ L Plus中执行@aa命令运行程序: 注:测试时,文件名请用全名(即包含路径,如:@c:\aa) 给出运行结果:

6.1.存储过程 1.最简单的存储过程编写与执行 (1)创建测试表 drop table Exam_Table; create table Exam_Table( e_id number(5), e_name varchar2(20), e_salary number(8,2) ); (2)创建存储过程 create or replace procedure insert_salary (v_id number,v_name varchar2,v_salary number) is begin insert into Exam_Table values (v_id,v_name,v_salary); commit; dbms_output.put_line('数据插入成功'); end; / (3) 执行(调用)存储过程 exec insert_salary(6,'g',2000); (4)查询执行结果

select * from Exam_Table; 给出执行的最后结果: 2.参数的使用:in/out/in out参数 阅读以下程序,理解不同类型参数使用的不同,运行程序,给出运行结果。 (1) 用两个参数:in ,out 传入一个姓名,输出:某某人你好: create or replace procedure mp(v_in varchar2,v_out out varchar2) is begin v_out:=v_in||'你好'; end; declare v_name varchar2(10); begin mp('scott',v_name); dbms_output.put_line(v_name); end;--输出:scott你好 给出运行结果:

2020-2021成都七中实验学校(初中部)七年级数学上期末模拟试卷(含答案)

2020-2021成都七中实验学校(初中部)七年级数学上期末模拟试卷(含答案) 一、选择题 1.若x 是3-的相反数,5y =,则x y +的值为( ) A .8- B .2 C .8或2- D .8-或2 2.若x =5是方程ax ﹣8=12的解,则a 的值为( ) A .3 B .4 C .5 D .6 3.如图的正方体盒子的外表面上画有3条黑线,将这个正方体盒子的表面展开(外表面朝上),展开图可能是( ) A . B . C . D . 4.如图所示运算程序中,若开始输入的x 值为48,我们发现第1次输出的结果为24,第2次输出的结果为12,…第2017次输出的结果为( ) A .3 B .6 C .4 D .2 5.商店将进价2400元的彩电标价3200元出售,为了吸引顾客进行打折出售,售后核算仍可获利20%,则折扣为( ) A .九折 B .八五折 C .八折 D .七五折 6.若单项式2x 3y 2m 与﹣3x n y 2的差仍是单项式,则m+n 的值是( ) A .2 B .3 C .4 D .5 7.如图,数轴上有A ,B ,C ,D 四个点,其中表示互为相反数的点是( ) A .点A 和点C B .点B 和点D C .点A 和点D D .点B 和点C 8.下面结论正确的有( ) ①两个有理数相加,和一定大于每一个加数. ②一个正数与一个负数相加得正数. ③两个负数和的绝对值一定等于它们绝对值的和. ④两个正数相加,和为正数. ⑤两个负数相加,绝对值相减.

⑥正数加负数,其和一定等于0. A .0个 B .1个 C .2个 D .3个 9.运用等式性质进行的变形,正确的是( ) A .如果a =b ,那么a +2=b +3 B .如果a =b ,那么a -2=b -3 C .如果 ,那么a =b D .如果a 2=3a ,那么a =3 10.如图,每个图案均由边长相等的黑、白两色正力形按规律拼接面成,照此规律,第n 个图案中白色正方形比黑色正方形( )个. A .n B .(5n+3) C .(5n+2) D .(4n+3) 11.如图,将一副三角板叠放在一起,使直角的顶点重合于O ,则∠AOC+∠DOB=( ) A .90° B .180° C .160° D .120° 12.关于的方程的解为正整数,则整数的值为( ) A .2 B .3 C .1或2 D .2或3 二、填空题 13.若一件商品按成本价提高40%后标价,又以8折优惠卖出,结果仍可获利15元,则这件商品的实际售价为______元. 14.已知:﹣a =2,|b |=6,且a >b ,则a +b =_____. 15.若 13 a +与273a -互为相反数,则a=________. 16.6年前,甲的年龄是乙的3倍,现在甲的年龄是乙的2倍,甲现在_________岁,乙现在________岁. 17.一件衣服售价为200元,六折销售,仍可获利20%,则这件衣服的进价是_____元. 18.如图,在∠AOB 的内部有3条射线OC 、OD 、OE ,若∠AOC =60°,∠BOE = 1n ∠BOC ,∠BOD =1 n ∠AOB ,则∠DOE =_____°.(用含n 的代数式表示)

实验报告6答案

实验报告 课程名称:高级语言程序设计 实验六:一维数组和二维数组班级:学生姓名: 学号: 专业: 指导教师: 学期:2009-2010 学年上学期 云南大学信息学院 一、实验目的 1掌握一、二维数组的定义及初始化 2、掌握数组元素的输入、输出及引用方法 3、掌握使用循环对数组元素进行访问 4、掌握一、二维数组的简单应用

二、知识要点 1 一、二维数组的定义与赋值(初始化、循环键盘输入) 2、访问数组元素(下标的正确使用) 3、数组的典型应用(复制、求和、统计某种元素个数、求数组中的最大/最小值、 元素的查找与排序) 三、实验预习(要求做实验前完成) 1定义一个有四个元素的float型数组: 2、定义一个具有五个元素的整型数组并将其初始化为{1,2,3,4,5} 3、要用循环从键盘输入整型数组s的元素值(共6个),应该使用语句: 4、交换数组元素d[2]和d[4],使用语句: 5、语句for(k=0;k<3;k++)x[2][k] = 0;将把哪些元素变为0? 四、实验内容(要求提供:① 算法描述或流程图② 源程序) 1已知一个数组有10个元素,值分别是3, 6, 8, 4, 5, 66, 80, 72, 69, 70。 编程,将数组元素逆置后输出。(提示:第一个与最后一个交换位置,第二个与倒数第二个交换位置,...... ) 2、编程序求Fibo nacci数列的前30项,Fib on acci数列的定义为: 1 5=1) fn = * 1 (n =2) Jnj + fnd (n >2) 要求将数列存放在数组中,并按每行5个数的格式输出该数列。 3、输入一个4行4列的二维数组,统计偶数的个数,并输出所有小于5的数。 4、已知一个二维数组:{{14,26,18,17},{24,37,21,8},{19,31,22,16},{7,19,14,26}}, 编 程,输出该二维数组的最小元素的行下标与列下标。 五、实验结果(要求写出运行界面及输出的运行结果) 六、实验小结 1.#define N 10 #include main() {int i, t,a[N]; for(i=0;i

实验六

6.1一维数组 【实验目的】 1.熟练掌握使用一维数组编程的方法。 2.熟练掌握排序算法。 【实验内容】 1调试示例 输入一个正整数n,再输入n个整数,将它们排序后由小到大输出。(error07_1.cpp) 源程序(有错误的程序) #include void main() { int i,j,num,a[num]; int change,t; printf("Enter Number: "); scanf("%d",&num); printf("Enter Data: \n"); for(i=0;i0 && change;i--) { change=0; for(j=0;j<=i;j++) if(a[j]>a[j+1]) { /*调试时设置断点*/ t=a[j]; a[j]=a[j+1]; a[j+1]=t; change=1; } } /*调试时设置断点*/ printf("Sorted data:\n"); for(i=0;i

成都七中实验学校必修第二册第五单元《概率》检测卷(有答案解析)

一、选择题 1.抛掷一个质地均匀的骰子的试验,事件A 表示“小于5的偶数点出现”,事件B 表示“不小于5的点数出现”,则一次试验中,事件A 或事件B 至少有一个发生的概率为( ) A . 23 B . 13 C .1 2 D . 56 2.甲乙两运动员进行乒乓球比赛,采用7局4胜制.在一局比赛中,先得11分的运动员为胜方,但打到10平以后,先多得2分者为胜方.在10平后,双方实行轮换发球法,每人每次只发1个球.若在某局比赛中,甲发球时甲得分的概率为 2 3 ,乙发球时甲得分的概率为1 2 ,各球的结果相互独立,在某局双方10:10平后,甲先发球,则甲以13:11赢下此局的概率为( ) A . 29 B . 19 C . 16 D . 118 3.若5个人按原来站的位置重新站成一排,恰有两人站在自己原来的位置上的概率为( ) A . 12 B . 14 C . 16 D . 18 4.从1,2,3,4这四个数字中依次取(不放回)两个数字,a b ,使得()()lg 3lg 4a b ≥成立的概率是( ) A . 13 B . 512 C . 12 D . 712 5.设两个独立事件A 和B 同时不发生的概率是p ,A 发生B 不发生与A 不发生B 发生的概率相同,则事件A 发生的概率为( ) A .2p B . 2 p C .1 D .16.设A ,B ,C 是三个事件,给出下列四个事件: (Ⅰ)A ,B ,C 中至少有一个发生; (Ⅱ)A ,B ,C 中最多有一个发生; (Ⅲ)A ,B ,C 中至少有两个发生; (Ⅳ)A ,B ,C 最多有两个发生; 其中相互为对立事件的是( ) A .Ⅰ和Ⅱ B .Ⅱ和Ⅲ C .Ⅲ和Ⅳ D .Ⅳ和Ⅰ 7.从一批产品中取出三件产品,设事件A 为“三件产品全不是次品”,事件B 为“三件产品全是次品”,事件C 为“三件产品不全是次品”,则下列结论正确的是( ) A .事件A 与C 互斥 B .事件B 与C 互斥 C .任何两个事件均互斥 D .任何两个事件均不互斥 8.“三个臭皮匠,赛过诸葛亮”,这是我们常说的口头禅,主要是说集体智慧的强大. 假设

实验六答案

实验六答案 1、创建一个表示雇员信息的employee类,其中包含数据成员name、empNo和salary,分 别表示雇员的姓名、编号和月薪。再从employee类派生出3个类worker、technician 和salesman,分别代表普通工人、科研人员、销售人员。三个类中分别包含数据成员productNum、workHours和monthlysales,分别代表工人每月生产产品的数量、科研人员每月工作的时数和销售人员每月的销售额。要求在employee类中声明虚成员函数pay,并在各个派生类中覆盖pay函数,用来计算雇员的月薪,并假定: 普通工人的月薪=每月生产的产品数×每件产品的赢利×20% 科研人员的月薪=每月的工作时数×每小时工作的酬金 销售人员的月薪=月销售额×销售额提成。 创建一个通用函数CalculateSalary,用来计算并返回各种不同类型雇员的月薪。函数CalculateSalary的原型如下: float CalculateSalary(employee *emptr) ; 在main函数中分别声明worker类、technician类和salesman类的对象代表各种类型的雇员,并调用函数CalculateSalary计算他们的月薪。 解:程序代码如下: #include using namespace std; class employee { protected: char name[20]; int empNo; float salary; public: employee(char *cp="",int no=1001); employee(employee&); void setname(char *cp); void setempNo(int no); void setsalary(float sa); char*getname(); int getempNo(); float getsalary(); virtual float pay(){ return 0;} }; employee::employee(char *cp,int no) { int i=0; while(*cp) { name[i]=*cp; i++; cp++;

实验六 高层绘图操作答案

实验六 高层绘图操作 实验目的: 1. 掌握绘制二维图形的常用函数 2. 掌握绘制三维图形的常用函数 3. 掌握绘制图形的辅助操作 实验内容: 1. 1. 设x x x y cos 2^1sin 35.0????? ? ++=,在π 2~ 0=x 区间取101点,绘制函数曲 线。 x=0:pi/100:2*pi; y=(0.5+3*sin(x)./(1+x..^2)).*cos(x); plot(x,y); 2. 已知2 1x y = ,)2cos(2x y =,213y y y ?=,完成下列操作: (1) 在同一坐标系下用不同的颜色和线型绘制三条曲线。 (2) 以子图形式绘制三条曲线。 (3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。 (1).在同一坐标系下用不同的颜色和线型绘制三条曲线。 x=0:pi/1000:2*pi; y1=x.^2; y2=cos(2*x); y3=y1.*y2;

plot(x,y1,'r',x,y2,'b-.',x,y3,'k--'); (2). 以子图形式绘制三条曲线。 x=0:pi/10:2*pi; y1=x.^2; subplot(2,2,1);plot(x,y1,'r'); title('y1=x^2'); y2=cos(2*x); subplot(2,2,2);plot(x,y2,'b-.'); title('y2=cos(2*x)'); y3=y1.*y2; subplot(2,2,3);plot(x,y3,'k--'); title('y3=y1.*y2'); (3). 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。x=0:pi/10:2*pi; y1=x.^2; subplot(2,2,1);bar(x,y1,'r'); title('y1=x^2'); subplot(2,2,2);stairs(x,y1,'r'); title('y1=x^2'); subplot(2,2,3);stem(x,y1,'r'); title('y1=x^2'); subplot(2,2,4);fill(x,y1,'r');

成都七中实验学校七年级上学期数学期末试卷及答案-百度文库

成都七中实验学校七年级上学期数学期末试卷及答案-百度文库 一、选择题 1.若34(0)x y y =≠,则( ) A .34y 0x += B .8-6y=0x C .3+4x y y x =+ D . 43 x y = 2.﹣3的相反数是( ) A .13 - B . 13 C .3- D .3 3.如图,一副三角尺按不同的位置摆放,摆放位置中∠α与∠β不相等...的图形是( ) A . B . C . D . 4.直线3l 与12,l l 相交得如图所示的5个角,其中互为对顶角的是( ) A .3∠和5∠ B .3∠和4∠ C .1∠和5∠ D .1∠和4∠ 5.下列选项中,运算正确的是( ) A .532x x -= B .2ab ab ab -= C .23a a a -+=- D .235a b ab += 6.如图,数轴的单位长度为1,点A 、B 表示的数互为相反数,若数轴上有一点C 到点B 的距离为2个单位,则点C 表示的数是( ) A .-1或2 B .-1或5 C .1或2 D .1或5 7.在实数:3.1415935-π251 7 ,0.1313313331…(每2个1之间依次多一个3)中,无理数的个数是( ) A .1个 B .2个 C .3个 D .4个 8.一张普通A4纸的厚度约为0.000104m ,用科学计数法可表示为() m

A.2 1.0410- ?B.3 1.0410- ?C.4 1.0410- ?D.5 1.0410- ?9.在下边图形中,不是如图立体图形的视图是() A.B. C.D. 10.下列四个数中最小的数是() A.﹣1 B.0 C.2 D.﹣(﹣1)11.﹣3的相反数是() A. 1 3 -B. 1 3 C.3-D.3 12.某中学进行义务劳动,去甲处劳动的有30人,去乙处劳动的有24人,从乙处调一部分人到甲处,使甲处人数是乙处人数的2倍,若设应从乙处调x人到甲处,则所列方程是() A.2(30+x)=24﹣x B.2(30﹣x)=24+x C.30﹣x=2(24+x)D.30+x=2(24﹣x) 13.某商店有两个进价不同的计算器都卖了135元,其中一个盈利25%,另一个亏本25%,在这次买卖中,这家商店( ) A.不赔不赚B.赚了9元C.赚了18元D.赔了18元14.下列计算正确的是() A.-1+2=1 B.-1-1=0 C.(-1)2=-1 D.-12=1 15.如图,下列各三角形中的三个数之间均具有相同的规律,根据此规律,最后一个三角形中y与n之间的关系是() A.y=2n+1 B.y=2n+n C.y=2n+1+n D.y=2n+n+1 二、填空题

实验六答案

实验六函数与编译预处理答案 一、断点的设置和取消、单步执行跟踪进入函数和跳出函数方法 练习 2、调试练习: 要求:模仿示例调试以下程序,直到输出正确结果,源程序名为error6_2.c 程序功能:利用函数调用求“1!+2!+3!+4!+...+10!”的值(参见实验教材72页程序填空题第(1)小题) 源程序(有错误的程序——不是语法错误,而是算法错误或逻辑错误): 改正错误后的源程序: void main() { long s=0,i; long mm(int k); for(i=1;i<=10;i++) s=s+mm(i); printf("1!+2!+3!+...+10!=%ld\n",s); } long mm(int k) { long t=1, j; for(j=1;j<=k;j++) t=t*j; return (t); } 3、综合调试、改错练习: 以下程序有多处错误,请综合运用前面所学过的所有知识和VC++的调试手段,改正程序的各种错误,使其运行出正确的结果。程序的功能是:利用函数调用求任意两个整数的和。 改正错误后的源程序:

main() { int sum(int a,int b); int x,y; scanf("%d,%d",&x,&y); printf("x=%d,y=%d\n",x,y); printf("%d+%d=%d\n",x,y,sum(x,y)); } int sum(int a,int b) { return (a+b); } 二、编程练习 利用VC++编写程序,并调试、运行,直到输出正确结果。编程练习1: 注意: 这里提供了以填空的形式出现源程序参考清单,目的是给同学们一个思路。最好不要将此源程序清单复制到VC++中,否则会出现多处语法错误。同学们可以据此思路来填写有关语句,从而完成程序。在调试程序时,一定要运用前面学过的方法。 下面函数是实现求[1,3000]能被17或23整除的整数的个数。请将程序补充完整,并调试运行,直到输出正确结果。(源文件名为blank6_1.c) 完成填空后的源程序: #include int f(int m, int n) { int i, count=0; for(i=m; i<=n; i++) if(i%17==0||i%23==0) count++; return count; } main() {int m,n; scanf("%d%d",&m,&n); printf("count=%d\n", f(m,n)); }

JAVA实验6答案

广东海洋大学学生实验报告书(学生用表) 实验名称实验六. Java的接口与实现课程名称Java程序设计与开发 技术 课程号16232204 学院(系) 信息学院专业计算机科学与技术班级计科 学生姓名学号实验地点钟海楼 04019 实验日期 2015年 10月26日 一、实验目的 (1)学习掌握Java中类怎样实现接口、接口回调技术; (2)学习掌握Java 程序中面向接口的编程思想。 二、实验任务 完成实验六指导上实验1、实验2、实验3的实验任务。 三、实验仪器设备和材料 安装有J2SE开发工具的PC机。 四、实验内容和步骤 实验1 代码如下: Estimator.java interface CompurerAverage{ public double average(double x[]); } class Gymnastics implements CompurerAverage{ public double average(double x[]){ int count=x.length; double aver=0,temp=0; for(int i=0;i

for(int i=1;i2) aver=aver/(count-2); else aver=0; return aver; } } class School implements CompurerAverage{ public double average(double[] x){ int count=x.length; double sum=0; for(int i=0;i

matlab 实验6 函数及其调用

数学实验练习六:函数 一、1)写一个 MATLAB 函数 piFun01.m 来计算下列级数: f(n) = 4*(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...) 其中 n 为函数的输入,代表上述级数的项数,级数和 f(n) 则是函数的输出。 解:function f=pifun01(n) f=0; for i=1:n f=f+4*(-1)^(i+1)/(2*i-1); end >> piFun01(100000) ans = 3.1416 2)使用 tic 和 toc 指令来测量 piFun01(100000) 的计算时间。如果你不知道如何使用这两个指令,请使用 help tic 及 help toc 来查出它们的用法。我的旧计算机是 Pentium 450MHz,所得的计算时间约为 2 秒。请说明你的计算机规格以及其计算时间。

解:function f=pifun01(n) tic f=0; for i=1:n f=f+4*(-1)^(i+1)/(2*i-1); end f=toc 二、写一个 MATLAB 的递归函数 fibo.m 来计算 Fibonacci 数列, 其定义如下: fibo(n+2) = fibo(n+1)+fibo(n) 此数列的启始条件如下: fibo(1) = 0, fibo(2) = 1. a) fibo(25) 的返回的值是多少? 解:function f=fibo(n) if n==1 f=0; elseif n==2

f=1; else f=fibo(n-1)+fibo(n-2); end >> clear >> fibo(25) ans = 46368 b)使用 tic 和 toc 指令来测量 fibo(25) 的计算时间。我的计 算机是 Pentium 2GHz,所得的计算时间约为 3.35 秒。请说明你的计算机规格以及其计算时间。 解: function f=fibo(n) tic if n==1 f=0; elseif n==2 f=1; else f=fibo(n-1)+fibo(n-2); end

成都七中实验小升初数学试题

◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆装◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆订◆◆◆◆◆◆◆◆◆◆◆◆◆线◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 成都七中实验学校小学部 数 学 20分,全卷总分120分.考试时间60分钟。 A 卷(100分) 1、一种商品的价格先提高10%,再降价10%,结果与原价相比是( ) A 、不变 B 、提高了 C 、降低了 D 、无法确定 2、在a 与b 两个整数中,a 的所有的质因数2、 3、5、7、11,b 的所有质因数是2、3、7、13,那么a 与b 的最大公约数是( ) A 、210 B 、6 C 、55 D 、42 3、如果0>>>>>>> 4、把你的一个拳头慢慢地伸进装满水的面盆中,溢出的水的体积是( ) A 、小于1毫升,大于1升, B 、大于1立方米,小于1升 C 、大于1升、小于1立方米, D 、大于1毫升、小于1升 5、定义运算※为a ※b = a b b a +-,且3※2,那么m 的值是 ( ) A 、3 B 、6 C 、9 D 、2 二、填空题(每题2分,共10分) 6、把一个最简分数的分子2倍,分母缩小2倍后等于4 2 5 ,这个分数是。 7、边长为整数并且最大边长是5的三角形共有个。 8、一个圆锥高2分米,底面周长9.42分米,它的体积是。 9、4时10分,时针与分针的夹角的度数是。 10、有一串分数1121123211234321;,,;,,,,;,,,,,, 1222333334444444;……中,6 19 是第个数。 三、判断题(正确的画∨,错误的画×,每题2,共10分) 11、图中的长方形中的甲与乙两个三角形比较,甲比乙大。( ) 12、五个连续整数的和是m ,则其中最大的数是 25 m +。 ( )

JAVA实验6答案

GDOU-B-11-112 广东海洋大学学生实验报告书(学生用表) 实验名称 实验六.Java 的接口与实现 课程名称JaVa 程序设计与开发 课程号16232204 技术 实验地点钟海楼实验日期 2015年 04019 10 月 26 日 、实验目的 (1) 学习掌握Java 中类怎样实现接口、接口回调技术; (2) 学习掌握Java 程序中面向接口的编程思想。 二、实验任务 完成实验六指导上实验1、实验2、实验3的实验任务。 三、实验仪器设备和材料 安装有J2SE 开发工具的PC 机。 四、实验内容和步骤 实验1 代码如下: Estimator.java in terface Compu rerAverage{ p ublic double average(double x[]); } class Gymn astics imp leme nts Compu rerAverage{ p ublic double average(double x[]){ int coun t=x.le ngth; double aver=0,te mp=0; for(i nt i=0;i

aver=aver+x[i]; } if(cou nt>2) aver=aver/(co un t-2); else aver=0; retur n aver; } } class School impi eme nts Compu rerAverage{ p ublic double average(double[] x){ int coun t=x.le ngth; double sum=0; for(i nt i=0;i

实验六:广域网协议配置(2012最新版)

大连理工大学本科实验报告 课程名称:网络综合实验学院(系):软件学院 2012年3月22日

大连理工大学实验报告 学院(系):专业:班级: 姓名:学号:组:___ 实验时间:实验室:实验台: 指导教师签字:成绩: 实验六:广域网协议配置 一、实验目的 两台路由器之间的PPP和Frame Relay协议配置 二、实验原理和内容 1、路由器的基本工作原理 2、配置路由器的方法和命令 3、PPP的基本原理及配置 4、Frame Relay协议的基本原理及配置 三、实验环境以及设备 2台路由器、2台Pc机、双绞线若干 四、实验步骤(操作方法及思考题) {警告:路由器高速同异步串口(即S口)连接电缆时,无论插拔操作,必须在路由器电源关闭情况下进行;严禁在路由器开机状态下插拔同/异步串口电缆,否则容易引起设备及端口的损坏。} 1、请在用户视图下使用“reset saved-configuration”命令和“reboot”命令分别 将两台路由器的配置清空,以免以前实验留下的配置对本实验产生影响。2、在确保路由器电源关闭情况下,按照下图联线组建实验环境。配置IP地址, 以及配置PC 202.0.0.2 的缺省网关为202.0.0.1,PC 202.0.1.2 的缺省网关为202.0.1.1。

202.0.0.2/24202.0.1.2/24 AR18-12 AR28-11 3、在两台路由器上都启动 RIP ,目标是使两台PC 机之间能够ping 通。请将为达到此目标而在两台路由器上执行的启动RIP 的命令写到实验报告中。你们的两台PC 机之间ping 通了吗?在缺省情况下,两台路由器的串口之间使用的是哪种广域网协议?(15分) 答: AR18-12: [RA]rip [RA-rip]network all AR28-11: [RB]rip [RB-rip]network 0.0.0.0 缺省情况下,两台路由器之间使用PPP 协议。ping 通截图如下: 4、PPP 协议PAP 验证配置: (1) 配置AR18-12为验证方,AR28-11为被验证方,然后测试两台PC 机 之间是否能够ping 通。请将在两台路由器上执行的配置命令写到实验报告中。(15分) 答:

实验六、用窗函数法设计FIR滤波器分析解析

实验六 用窗函数法设计 FIR 滤波器 一、实验目的 (1) 掌握用窗函数法设计FIR 数字滤波器的原理和方法。 (2) 熟悉线性相位FIR 数字滤波器特性。 (3) 了解各种窗函数对滤波特性的影响。 二、实验原理 滤波器的理想频率响应函数为H d (e j ω ),则其对应的单位脉冲响应为: h d (n) = ?-π π ωωωπ d e e H n j j d )(21 窗函数设计法的基本原理是用有限长单位脉冲响应序列h(n)逼h d (n)。由于h d (n)往往是无 限长序列,且是非因果的,所以用窗函数。w(n)将h d (n)截断,并进行加权处理: h(n) = h d (n) w(n) h(n)就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函数H(e j ω )为: H(e j ω ) = ∑-=-1 )(N n n j e n h ω 如果要求线性相位特性,则h (n )还必须满足: )1()(n N h n h --±= 可根据具体情况选择h(n)的长度及对称性。 用窗函数法设计的滤波器性能取决于窗函数w(n)的类型及窗口长度N 的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。 三、实验步骤 1. 写出理想低通滤波器的传输函数和单位脉冲响应。 2. 写出用四种窗函数设计的滤波器的单位脉冲响应。 3. 用窗函数法设计一个线性相位FIR 低通滤波器,用理想低通滤波器作为逼近滤波器,截止频率ωc =π/4 rad ,选择窗函数的长度N =15,33两种情况。要求在两种窗口长度下,分别求出h(n),打印出相应的幅频特性和相频特性曲线,观察3dB 带宽和阻带衰减; 4 用其它窗函数(汉宁窗(升余弦窗)、哈明窗(改进的升余弦窗)、布莱克曼窗) 设计该滤波器,要求同1;比较四种窗函数对滤波器特性的影响。 四、实验用MATLAB 函数 可以调用MATLAB 工具箱函数fir1实现本实验所要求的线性相位FIR-DF 的设计,调用一维快速傅立叶变换函数fft 来计算滤波器的频率响应函数。

成都七中实验学校七年级数学上册期末测试卷及答案

成都七中实验学校七年级数学上册期末测试卷及答案 一、选择题 1.如图,直线AB ⊥直线CD ,垂足为O ,直线EF 经过点O ,若35BOE ∠=,则 FOD ∠=( ) A .35° B .45° C .55° D .125° 2.晚上七点刚过,小强开始做数学作业,一看钟,发现此时时针和分针在同一直线上;做完数学作业八点不到,此时时针和分针又在同一直线上,则小强做数学作业花了多少时间( ) A .30分钟 B .35分钟 C . 420 11 分钟 D . 360 11 分钟 3.9327-,3-,(3)--,化简后结果为3-的是( ) A 9B 327- C .3- D .(3)-- 4.下列说法中正确的有( ) A .连接两点的线段叫做两点间的距离 B .过一点有且只有一条直线与已知直线垂直 C .对顶角相等 D .线段AB 的延长线与射线BA 是同一条射线 5.已知关于x 的方程mx+3=2(m ﹣x )的解满足(x+3)2=4,则m 的值是( ) A . 1 3 或﹣1 B .1或﹣1 C . 13或73 D .5或 73 6.有 m 辆客车及 n 个人,若每辆客车乘 40 人,则还有 25 人不能上车;若每辆客车乘 45 人,则还有 5 人不能上车.有下列四个等式:① 40m +25=45m +5 ;② 2554045n n +-=;③255 4045 n n ++=;④ 40m +25 = 45m - 5 .其中正确的是( ) A .①③ B .①② C .②④ D .③④ 7.下列方程变形正确的是( ) A .方程 110.20.5x x --=化成1010101025 x x --= B .方程 3﹣x=2﹣5(x ﹣1),去括号,得 3﹣x=2﹣5x ﹣1 C .方程 3x ﹣2=2x+1 移项得 3x ﹣2x=1+2

实验六压缩试验

实验六 压缩试验(快速法) 1 试验目的 测定土的湿密度、含水率,计算土样干密度、初始孔隙比,并用此密度、含水率条件下的试样进行压缩试验,根据试验数据绘制孔隙比与压力的关系曲线(即压缩曲线),确定土的压缩系数、压缩模量,评价土体的压缩性。 ⑴掌握以磅秤式(或杠杆式)加压设备测定土压缩系数的方法,并根据试验数据绘制孔隙比与压力的关系曲线(即压缩曲线); ⑵根据求得的压缩系数21-a 评定土的压缩性。 2 试验方法 ⑴密度试验——环刀法; ⑵含水率试验——烘干法; ⑶压缩试验——快速固结试验法。 3 试验原理 土样在外力作用下便产生压缩,其压缩量的大小是与土样上所加的荷重大小以及土样的性质有关。如在相同的荷重作用上,软土的压缩量就大,而坚密的土则压缩量小;又如在同一种土样的条件下,压缩量随着荷重的加大而增加。因此,我们可以在同一种土样上,施加不同的荷重,一般情况下,荷重分级不宜过大。视土的软硬程度及工程情况可取为12.5、25、50、100、200、300、400、600、800 kPa 等。最后一级荷重应大于土层计算压力的100~200kPa 。这样,便可得不同的压缩量,从而可以算出相应荷重时土样的孔隙比。如图6-1可见,当土样在荷重P 1作用下,压缩量为h ?。一般认为土样的压缩主要由于土的压密使孔隙减少产生的。因此,与未加荷前相比,可得:10e e h -=?。 而土样在荷重P 1作用下产生的应变为 h h ?= ε,从图6-1可得: ) 1(100 100 1 00e h h e e e e e h h +?=-+-=? 式中:1e ——在荷重P 1作用下,土样变形稳定时的孔隙比; 0e 、0 h ——分别为原始土样的孔隙比和高度; h ?——在荷重P 1作用下,土样变形稳定时的压缩量。

实验六 函数

实验六 函数 一、实验目的 1.掌握自定义函数的一般结构及定义函数的方法。 2.掌握形参、实参、函数原型等重要概念。 3.掌握函数声明、函数调用的一般方法。 4. 了解函数的嵌套调用以及函数的递归调用的格式。 二、实验预习 1 .理解为什么要在程序中引入函数?函数的引入对程序的整体结构有什么样的影响? 2. 函数的定义格式,理解函数的类型说明符根据什么来确定? 3. 充分理解函数实参和形参的联系和区别,掌握单向值传递的意义。 4. 了解针对不同返回类型的函数返回值的应用,尤其是有无return 语句的区别。 5. 掌握函数调用与函数声明的格式,了解什么情况下需要进行函数声明?什么情况下不需要? 6. 了解函数嵌套调用和递归调用的原理及使用原则。 三、实验内容 (一)阅读并调试下列程序,根据要求给出程序结果。 1.求三角形面积函数。 ⑴ 编程分析 ① 设三角形边长为a 、b 、c ,面积area 的算法是s=(a+b+c)/2, area=))()((c s b s a s s --- ,其中 显然,要计算三角形面积,需要用到三个参数,面积函数的返回值的数据类型应为实型。 ② 尽管main()函数可以出现在程序的任何位置,但为了方便程序阅读,通常将主函数放在程序的开始位置,并在它之前集中进行自定义函数的原型声明。 ⑵ 参考程序 /* 定义和使用求三角形面积函数的程序 */ #include "math.h" #include "stdio.h" float area(float,float,float); /*函数的声明*/ void main() { float a,b,c; printf("请输入三角形的三个边长值:\n") scanf("%f,%f,%f",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a&&a>0.0&&b>0.0&&c>0.0) printf("Area=%-7.2f\n",area(a,b,c)); /* 以下是计算任意三角形面积的函数 */ float area(float a,float b,float c) { float s,area_s; s=(a+b+c)/2.0;

相关文档