文档库 最新最全的文档下载
当前位置:文档库 › C++语言程序设计实验3(函数)

C++语言程序设计实验3(函数)

C++语言程序设计实验3(函数)
C++语言程序设计实验3(函数)

实验3 函数

在面向过程的传统程序设计中,函数是程序模块的最小单位。而在面向对象的程序设计中,虽然程序的模块化思想被体现的更加淋漓尽致,但是函数仍然是描述解决问题方法的一个重要手段,因为类的功能的抽象结果仍要以函数(成员函数)的形式表现出来。因此,学好函数对掌握类的成员函数是至关重要的。

首先,应该通过函数的定义和调用掌握功能分解的思想。其次,培养自己编程解决小问题的能力,主要是掌握累加、累乘算法,数据交互算法和递归算法。再次,了解形参和实参的本质及其关系。最后,掌握函数的调用机制。

对于函数,可以先从数学中函数的概念入手,引申为程序中完成数学计算的函数,进而再将函数的概念拓展为程序功能模块。

1.函数的定义和调用

(1) 函数的声明格式

类型标识符 函数名(形式参数表)

{

语句序列

}

其中:

?类型标识符是指函数的返回值类型,函数体内通常要有return语句;

?如果没有返回值,类型标识符为void;

?函数名按照标识符的命名方式命名;

?形参列表的格式为:type1 name1, type2 name2, ……, typen namen;

?如果没有形参,则在形参列表出加void。

(2) 函数的调用

函数的调用过程如图1所示:

图1 子函数调用过程

函数调用前要先声明函数原型,格式为:

类型标识符 函数名(形式参数表);

函数的调用格式为:

函数名(实参列表)

函数可以嵌套调用:函数可以嵌套调用,但不允许嵌套定义。

函数可以递归调用:函数直接或间接调用自身。

(3) 函数的参数传递机制

如果函数在定义时有形参,则调用该函数时要赋予实参。

在函数被调用时才分配形参的存储单元。实参可以是常量、变量或表达式。实参与形参在个数上、类型上必须对应相符。有两种传递方式:

○1值传递:传递时只传递参数值,即单向传递。

○2用引用做形参:把形参定义成引用型。

值传递时是单向的,只把实参的结果对应传递给形参,对形参的改变不会反映到实参中,所以这种传递方式也叫单向传递;而引用相当于给实参起了一个别名,形参和实参此时共享内存存储单元,对形参的改变将会反映给实参,所以这种传递方式也叫双向传递。

2.内联函数

在函数声明时使用关键字inline,则在编译时,在调用该函数的地方都会用此函数体进行替换。这样可以节省了参数传递、控制转移等开销,但是可执行文件会变长。

注意:

z内联函数体内不能有循环语句和switch语句。

z内联函数的声明必须出现在内联函数第一次被调用之前。

z对内联函数不能进行异常接口声明。

3.带默认形参值的函数

函数在声明时可以预先给出默认的形参值,调用时如给出实参,则采用实参值,否则采用预先给出的默认形参值。

默认形参值是从右向左顺序声明,并且在默认形参值的右面不能有非默认形参值的参数。因为调用时实参取代形参是从左向右的顺序。

调用出现在函数实现之前时,默认形参值还必须在函数原型中给出;而当调用出现在函数实现之后时,默认形参需要在函数实现时给出。

在相同的作用域内,默认形参值的说明应保持唯一,但如果在不同的作用域内,允许说明不同的默认形参。

4.重载函数

C++允许功能相近的函数在相同的作用域内以相同函数名声明,从而形成重载。方便使用,便于记忆。而不要将不同功能的函数声明为重载函数,以免出现调用结果的误解、混淆。

重载函数的形参必须不同:个数不同或类型不同。

编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用哪一个函数。

5.系统函数

C++的系统库中提供了几百个函数可供程序员使用。但是使用系统函数时要包含相应的头文件。

6.实验内容

(1)实验目的

掌握C++语言的函数的声明、调用、两种参数传递方式、内联函数、带默认值的函数、函数重载,会查阅并使用C++的系统函数。

(2)实验内容

打开实验目录,在文件夹:C++案例教程源代码、case3,对其中的3_15.cpp到3_35.cpp,先分析程序的功能,然后输入到计算机中并运行,最后验证运行结果和预先的分析是否一致。

实验报告上只写其中的一个。

(3)实验步骤

(4)实验的验证

(5)实验总结

7.本章小结

本章主要介绍了函数的声明和调用、函数间的参数传递、内联函数、带默认形参值的函数、函数重载、C++系统函数。

本章的主要目标是学会将一段功能相对独立的程序写成一个函数,为第4章学习类和对象打好必要的基础。

要很好地理解函数的调用和参数传递,比较有效的方法是利用编译器的调试功能(F10或F11)跟踪函数调用的执行过程、观察参数和变量的值。

利用引用(reference)传递参数,是函数间数据共享的一个重要方法。

本章还介绍了一些有用的算法:产生随机数的方法,累加、累乘的方法,递归算法。

本书中对于复杂的程序,都以注释的形式给出了详细说明,在阅读程序的时候务必认真阅读注释文字。本章及本章以后的例题程序需要阅读并上机调试才能更好地理解。

递归算法是一种非常简洁高效的算法,用途广泛,但理解起来可能有一定难度。在学习的时候,最好是先从数学意义上把函数写清楚,然后再用C++语言编写。初学者切忌钻牛角。

本章介绍递归算法主要是为了说明C++语言允许函数的递归调用。如果要全面理解并能熟练编写递归程序,还需要学习“数据结构”——下个学期的课程。

C程序设计实验三实验报告

实验报告 工学院土木工程专业09级2011至2012学年度第1学期学号:xxxxxx姓名:xxxxxx 2011 年10月08日第3~4节综合楼325教室 实验目的:

a的字节数为sizeof (a)或sizeof (int ),用printf 函数语句输出各类型变 量的长度(字节数)。 ①输入程序如下 in clude int mai n() {int a,b,i,j,k,r,s,t,u,v,w,x,y,z; float d,e; char c1,c2; double f,g; long m, n; un sig ned int p,q; a=61;b=62; c1='a';c2='b'; d=3.56;e=-6.78; m=50000;n=-60000; p=32768;q=40000; i=sizeof(a);j=sizeof(b); k=sizeof(d);r=sizeof(e); s=sizeof(c1);t=sizeof(c2); u=sizeof(f);v=sizeof(g); w=sizeof(m);x=sizeof( n); y=sizeof(p);z=sizeof(q); prin tf("a=%d,b=%d\nd=%d,e=%d\nc 1= %d,c2=%d\n",i,j,k,r,s,t); prin tf("f=%d,g=%d\nm=%d, n=%d\nmp=%d,q=%d\n",u,v,w,x,y,z); } 结 果如 下: (2)设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体 积。编程序,用scanf输入数据,输出计算结果。输出时要有文字说明,去小数点后两位数字。 ①编写程序如下: #i nclude int mai n() {float h,r,l,s,sq,vq,vz; float pi=3.141526; prin tf("Please in put r,h:"); sca nf("%f,%f",&r,&h); l=2*pi*r; s=r*r*pi; sq=4*pi*r*r; vq=3.0/4.0*pi*r*r*r; vz=pi*r*r*h; prin tf("The circumfere nce:l=%6.2f\n",l); prin tf("The area of thee circle:s=%6.2f\n ",s); prin tf("The superficial area of the ball:sq=%6.2f\n ",sq); prin tf("The volume of the ball:v=%6.2f\n",vq); prin tf("The volume of the cyli nder:vz=%6.2f\n ",vz); return 0; L

C++上机实验报告实验三

实验三类与对象 1.实验目的 1.掌握类的定义和使用 2.掌握类的定义和对象的声明 3.复习具有不同访问属性的成员的访问方式 4.观察构造函数和析构函数的执行过程 5.学习类的组合使用方法 6.使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。 2.实验要求 1.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,定义为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 2.定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom 为CDROM类的一个对象,定义并实现这个类。 3. (选做)设计一个用于人事管理的People(人员)类。考虑到通用性这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。其中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、组合。 3.实验内容 1.首先定义枚举类型CPU_Rank,例如enum CPU_Rank{P1=1, P2, P3, P4, P5, P6, P7},再定义CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名: 2.使用debug调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。 3.调试操作步骤如下: 1)单击Build | Start Debug | Step Into命令,或按下快捷键F11,系统进入单步执行状态,程序开始运行,一个DOS窗口出现,此时Visual Studio 中光标停在main()函数的入口处; 2)从Debug菜单或Debug工具栏中单击Step Over,此时,光标下移,程序准备执行CPU 对象的初始化; 3)单击Step Into,程序准备执行CPU类的构造函数; 4)连续单击Step Over,观察构造函数; 5)此时程序准备执行CPU对象的run()函数,单击Step Into,程序进入run()成员函数,连续单击Step Over,直到回到main()函数。 6)继续执行程序,参照上述的方法,观察程序的执行顺序,加深对类的构造函数、析构函数、成员函数的执行顺序的认识。 7)再试试Debug菜单栏中别的菜单项,熟悉Debug的各种方法。 4.首先定义CPU类(可使用第二题中的CPU类)、RAM类、CDROM类。再定义Computer类;

实验三综合程序设计方案(一)

实验三综合程序设计(一) 一、实验目的 1熟练掌握子程序的结构。 2?掌握子程序设计的思想、方法及上机调试过程。 3 ?熟练掌握系统功能调用的作用。 4?掌握系统功能调用的思想、方法。 二、实验准备知识 1. 8086/8088汇编语言指令及伪指令的用法 2?子程序设计的思想和方法 (1)子程序是功能相对独立的程序段,它可以实现源程序的模块化,简化源 程序结构,提高编程效率 (2)子程序定义:禾I」用过程伪指令PROC和ENDP,格式如下: 过程名PROC [NEAR|FAR] ……;过程体 过程名ENDP 其中:可选的参数指定过程的调用属性。没有指定过程属性,则采用默认属性NEAR。 NEAR属性:段内近调用,子程序只能被相同代码段的其他程序调用 FAR属性:段间远调用,子程序可以被相同或不同代码段的程序调用 (3)主程序(调用程序)调用子程序(被调用程序):利用CALL指令 (4)子程序返回主程序:利用RET指令 (5)保护现场:子程序开始处应该保护子程序中使用的寄存器(通常利用堆栈),子程序返回前相应进行恢复。 (6)子程序中对堆栈的压入和弹出操作通常成对使用,以保持堆栈的平衡。 (7)子程序允许嵌套和递归

(8)处理好子程序与主程序之间的参数传递问题:利用寄存器、内存缓冲区 及堆栈。 3. DOS和BIOS中断调用是机器及操作系统提供的中断调用功能 4?系统功能调用的步骤: ⑴在AH寄存器中设置系统功能调用号 ⑵ 在指定寄存器中设置入口参数 ⑶ 用中断调用指令(INT i8 )执行功能调用 ⑷ 根据出口参数分析功能调用执行情况 5.DOS利用21H号中断提供给用户近百个系统功能,主要包括设备管理、 目录管理和文件管理三个方面的功能版权文档,请勿用做商业用途 (1 )输入一个字符,01H号功能调用 (2)输出一个字符,02H号功能调用 (3)输入一个字符串,0AH号功能调用 (4)输出一个字符串,09H号功能调用 注意它们的入口参数及出口参数 6.BIOS也以中断服务程序的形式,向程序员提供系统的基本输入输出程序 BIOS功能更加基本,且与操作系统无关,当DOS没有启动或不允许使用DOS 功能调用时,可以使用BIOS功能调用版权文档,请勿用做商业用途 (1)键盘I/O中断调用——INT 16H (2)显示器输入中断调用——INT 10H 注意它们的入口参数及出口参数 三、实验性质 本实验为综合性实验。 四、实验学时 本实验学时为2学时。

实验一简单程序设计实验

实验一:简单程序设计实验 (1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 在 NUM2 中的 16 位无符号数相除,结果存放在 NUM3 和 NUM4 中。 程序流程图略。 参考源程序: DATA SEGMENT NUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ? NUM4 DW ? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA ;数据段寄存器初始化 MOV DS,AX MOV AX, WORD PTR NUM1 MOV DX, WORD PTR NUM1+2 DIV NUM2 MOV NUM3,AX MOV NUM4,DX MOV AH,4CH ;正常返回DOS 系统 INT 21H CODE ENDS END START (2)编写一个拆字程序。要求将存放在 ARY 单元的 2 位十六进制数 X 1X 2 拆为 X 1 和 X 2 两 部分,并以 0X 1 和 0X 2 的形式分别存入 ARY+1 和 ARY+2 单元中。 程序流程图略。 参考源程序: DATA SEGMENT ARY DB 2AH,?,? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET ARY ;取ARY 的偏移地址 MOV AL,[SI] ;取16进制数至AL

MOV BL,AL AND AL,0F0H ;取16进制数的高四位,即X1 SHR AL,4 MOV [SI+1],AL ;存0X1 MOV AL,BL AND AL,0FH ;取16进制数的低四位,即X2 MOV [SI+2],AL ;存0X2 MOV AH,4CH INT 21H CODE ENDS END START

实验3 函数

实验3 函数 一、实验目的 (1).掌握定义函数的方法; (2).掌握函数实参与形参的对应关系以及“值传递”的方式; (3).掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法; 二、实验内容 编写一段程序,用来解决下面提出的问题 (1)用一个函数来实现将一行字符中最长的单词输出。要求主程序从标准输 入设备读入一串字符,并将此字符串传递给该函数,函数处理后将最长 的单词返回给主调函数。 (2)输入10个学生5门课的成绩,分别用函数求: ?每个学生平均分; ?每门课的平均分; 三、实验指导 问题1的提示: ?首先分析从一行字符中,如何区分单词; ?然后确定如何记录一个单词的长度; ?如何返回找到的最长的单词。 问题2的提示:

?分析学生姓名、学生5门课的成绩用什么样的数据结构来保存; ?按学生求平均成绩,相当于求一个成绩表中的某一行的平均值; ?按课程求平均值相当于求成绩表中某一列的平均成绩。 四、预习题(选择题) 1.以下正确的说法是。 A.用户若需要调用标准库函数,调用前必须重新定义 B.用户可以重新定义标准库函数,如若此,该函数将失去原有定义 C.系统不允许用户重新定义标准库函数 D.用户若需要使用标准库函数,调用前不必使用预处理命令将该函数 所在的头文件包含编译,系统会自动调用。 2.以下正确的说法是。 A.实参和与其对应的形参各占用独立的存储单元 B.实参和与其对应的形参共占用一个存储单元 C.只有当实参和与其对应的形参同名时才共占用相同的存储单元 D.形参时虚拟的,不占用存储单元 3.以下正确的函数定义是。 A.double fun(int x , int y) B.double fun(int x ; int y) C.double fun(int x , int y) ; D.double fun(int x,y) 4.若调用一个函数,且此函数中没有return语句,则正确的说法是。 A.该函数没有返回值 B.该函数返回若干个系统默认值 C.能返回一个用户所希望的函数值 D.返回一个不确定的值 5.以下不正确的说法是。 A.实参可以是常量,变量或表达式 B.形参可以是常量,变量或表达式

excel基础应用实验报告

Excel电子表格实验报告 姓名(学号):________201302020112____ 年级(专业):_____ 电商1301 ________成绩:________ 实验时间:_______________________ _实验地点:__________________________ _ 实验1-1: 一、实验目的: 掌握使用Excel进行电子表格处理的基本操作,编辑与格式化工作表和单元格。 二、实验内容: 1.在Excel中新建一个空白工作簿,文件名为“学号.xls”,保存在文件夹“实验4”中; 学号姓名性别班级平时成绩期中成绩期末成绩 男一班85 72 80 女一班86 68 72 男二班76 80 84 女二班89 82 80 女一班92 94 91 女二班98 96 92 男二班60 59 60 女一班90 82 88 男一班71 74 70 65 58 54 男 二班 3.在工作表“成绩1”的最右侧插入两列,标题依次为“总评成绩”、“等级”; 4.调整“学号”、“姓名”、“性别”、“班级”、“等级”列的列宽为80个像素,调整“平时成绩”、“期中成绩”、“期末成绩”、“总评成绩”列的列宽为85个像素; 5.设置“平时成绩”只能为[60-100]的整数,“期中成绩”和“期末成绩”只能为[0-100]的整数; 6.设置标题行:行高为20磅,水平居中,垂直居中,字体为新宋体,字形为加粗,字号为12磅,底纹图案为25%灰色,颜色为浅橙色; 7.在工作表“成绩1”顶部插入一行,输入“学生成绩表”,字体为黑体,字号为20磅,颜色为蓝色,跨列居中(使它位于所制作表格的上方中央位置)。 8.为表格添加表格框线,内部为单实线,外部为双实线。 9.在“学号”列从上到下依次填充文本数据“2009001”至“2009010”,要求水平居中。10.在“姓名”列从上到下依次填充文本数据“某一”至“某十”,要求水平居中。11.要求“期末成绩”列能自动识别高于90分的成绩,并将其显示成蓝色粗体。 12.保存修改后的文件。 三、实验步骤:(学生自己填写) 1.桌面——右键——新建——文件夹——改名为“实验1”——Excel空白工作簿——改名为“20091060257”;

实验3简单的程序设计

实验3简单的程序设计 实验目的: 1.掌握表达式、赋值语句的正确书写规则。 2.掌握VB变量的定义和使用,表达式和常用函数的使用。 3.掌握InputBox与MsgBox的使用。 实验3.1函数考察 实验任务: 考察下列函数的值。 Round(-3.5) Round(3.5) Chr(66) Asc ("c") Asc(Chr(99)) Chr(Asc("K")) Ucase$("abcdefg") Lcase(“ABC”) Str(123.45) Val(“123AB”) Len(“123程序设计ABC”) LenB(“123程序设计ABC”) Ltrim(“ ABC”) String(3, “ABC”) Instr(“EFABCDEFG”, “ef”) Instr(2,“EFABCDEFG”, “ef”,1) Date() Now() Time() 实验步骤: 先自己分析以上函数的功能和可能的结果,然后在立即窗口用Print方法求出相应函数的值,对照比较自己的判断。 22

实验3.2表达式考察 实验任务: 考察下列表达式的值。 Dateadd(“m”,1,#1/30/2000#) Datediff(“y”,#12/03/1999#,#1/03/2000#) ‘计算时间间隔多少日 123 + Mid(“123456”,3,2) 123 & Mid(“123456”,3,2) Ucase(Mid(“abcdefgh”,3,4)) 16 / 4 – 2 ^ 5 * 8 / 4 MOD 5 \ 2 实验步骤: 先自己分析表达式的功能和可能的结果,然后在立即窗口用Print方法求出相应表达式的值,对照比较自己的判断。 实验3.3简单打印图形 实验任务: 使用Print方法、Tab函数和String函数设计一个过程,显示如图3-1所示的图形,并将结果保存到文件中。 图3-1 实验3.2运行界面 参考代码如下: Private Sub Form_Load() Print Tab(15); String(1, "1") Print Tab(14); String(3, "2") Print Tab(13); String(5, "3") Print Tab(12); String(7, "4") End Sub 操作提示: 应先将Form窗体的AutoRedraw属性值设为True。

实验3(函数)

实验三 函数 一、实验目的 (1)、学习函数的声明与定义 (2)、函数的调用 (3)、了解函数的调用过程 (4)、理解函数参数传递机制 (5)、掌握函数重载、参数带有缺省值、内联函数定义、调用和工作机制 (6)、体会函数重载、参数带有缺省值、内联函数作用 二、实验内容及步骤 1、 区分函数定义与声明? 2、 函数调用形式有哪些? 3、 函数的调用过程是怎样的? 4、 什么是内联函数?特点是什么? 5、 重载函数通过什么来区分?作用是什么? 6、 定义带有默认形参函数应注意什么? 7、 制转换:利用函数编写一个输入一个8位二进制数,将其转换为十进制数输出的函数。 例如:11012 = 1(23) + 1(22) + 0(21) + 1(20) = 1310 所以,如果输入1101,则应输出13 8、 编写程序求π的值 其中arctan 用如下形式的级数计算: 直到级数某项绝对值不大于10-15为止;π和x 均为double 型。 9、寻找并输出11~999之间的数m ,它满足m 、 m 2和m 3 均为回文数。 – 回文:各位数字左右对称的整数。 例如:11满足上述条件 112=121,113=1331。 提示:用10取余的方法,从最低位开始,依次取出该数的各位数字。按反序重新构成新的数,比较与原数是否相等,若相等,则原数为回文。 10、编写、输入、检查、调试和运行下列程序,掌握const 使用方法,并区分#define 。 ①、编写程序,实现复制字符串的自定义版 char *strcpy(char *dest,const char *source); //该函数返回dest 的值,即字符串首地址 ②、编写程序,实现比较字符串的自定义版 int strcmp(const char *str1,const char *str2); //str1>str2 返回正数

C上机实验报告实验四

实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。 4.使用string类定义字符串对象,编程实现两字符串的连接。在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。程序名:lab6_4.cpp。 5.在employee.h文件中定义Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,在成员函数中,构造函数用来初始化所有数据成员;display()中使用cout显示

程序设计综合实验报告册

西南交通大学程序设计综合实验 实验地点: 实验学期: 学生班级: 学生学号: 学生姓名: 任课教师:龚勋 信息科学与技术学院 2012年4月

实验一:ATM机用户操作界面、业务逻辑编写 ●实验目的及内容 1、根据ATM的工作流程编写用户界面,掌握文本用户菜单的编写方法; 2、根据ATM的工作流程编写业务罗杰,掌握搭建一个完整的应用系统的方法及软件编程思想。 ●实验要求 1、除提示用户输入的数字外,界面上不能响应、出现任何其他用户输入; 2、每个菜单界面独立显示,不要出现多组菜单重叠显示的现象; 3、每个业务逻辑可以多次执行,直到用户选择退出业务。 ●实验步骤及核心代码 void main() { int bExit=0; char in; //控制语言的选择 while(!bExit) { MainMenu(); in=getch(); system("cls"); switch(in) { .....语言选择} } } void MainMenu() {......} void LanguageMenu(int t) {

int cExit=0; char in; while(!cExit) { if(t==1) { ...... //显示中文功能选择菜单 in=getch(); system("cls"); switch(in) { 中文功能函数的选择} } else { 同上,只需将中文函数改为英文函数} } } //中文的查询函数 void Query1() { printf("======================\n") printf(“此账户有%.2f元\n",sum); //对sum已初始化system("pause"); system("cls"); } //中文的存钱函数 void Deposit1(float *p) { float x; printf("================================\n"); printf(" 输入您要存的数目:"); scanf("%f",&x); *p+=x; system("pause"); system("cls"); } //中文的取钱函数 void WithDraw1(float *p) { float y; int a=1; printf("====================================\n"); printf("输入您要取的数目: "); while(a) { scanf("%f",&y); if(y>sum)

电路实验二实验报告仪器仪表的使用

电路实验二实验报告 实验题目:仪器仪表的使用 实验内容: 1.熟悉示波器和函数信号发生器的使用; 2.测量示波器自带的校准信号; 3.用示波器测量函数信号发生器提供的正弦波、三角波和方波; 4.在面包板上搭接一个积分电路,用示波器观测其波形。 实验环境: 示波器DS1052E,函数发生器EE1641D,面包板SYB-130。 实验原理: 1.示波器是一种用途十分广泛的电子测量仪器。把肉眼看不见的电信号变换成看得见的 图象,便于研究各种电现象的变化过程。利用狭窄的、由高速电子组成的电子束,打在涂有荧光物质的屏面上,产生细小的光点。在被测信号的作用下,电子束就好像一支笔的笔尖,可以在屏面上描绘出被测信号的瞬时值的变化曲线。利用示波器能观察各种不同信号幅度随时间变化的波形曲线,还可以用它测试各种不同的电量,如电压、电流、频率、相位差、调幅度等等。 2.函数发生器是一种多波形的信号源。它可以产生正弦波、方波、三角波、锯齿波,甚

至任意波形。有的函数发生器还具有调制的功能,可以进行调幅、调频、调相、脉宽调制和VCO控制。 3.面包板是专为电子电路的无焊接实验设计制造的。由于各种电子元器件可根据需要随 意插入或拔出,免去了焊接,节省了电路的组装时间,而且元件可以重复使用,所以非常适合电子电路的组装、调试和训练。 实验记录及结果分析: 1.示波器自带的校准信号: 2.函数发生器提供正弦波: 3.函数发生器提供的方波: 最大值:2.40V 最小值:-2.64V 峰峰值:5.04V 频率:2.016kHz 周期:496.0μs 占空比:48.0% 4.函数发生器提供的三角波: 最大值:2.40V 最小值:-2.64V 峰峰值:5.04V 频率:2.016kHz 周期:496.0μs 实验总结: 示波器能够产生波形,把肉眼看不见的电信号转为我们很容易看见的图形,而函数发生器则会产生不同类型的电信号,这样利用示波器和函数发生器就可以对函数发生器所发

实验3(1)

实验二结构化程序设计实验1 实施时间:2014-10-22(第八周)实验学时:2学时 实验类型:设计 实验目的及要求: 1. 掌握赋值语句的使用方法。 2. 掌握各种数据类型的输入输出方法,能够正确使用各种格式转换符。 3. 进一步掌握编写程序和调试程序的方法。 实验内容: 1.输入以下程序:

(1)运行此程序并分析结果。 (2)将10~14行修改为如下代码,再次运行程序,分析结果。 2.设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球提及、圆柱体积。编程,要求用scanf输入数据,输出各项计算结果。且输出时要有文字说明提示,取小数点后两位数字。 3.编程将“China”译成密码,密码规则是:用原来字母后面第四个字母代替原来的字母。例如“China”应译成“Glmre”。要求分别用printf和putchar函数输出5个密码字符。教学方法:讲解与演示 实验指导过程: (一)预备知识 一、输入输出函数 ·C语言本身不提供输入输出语句,输入和输出操作是由C函数库中的函数来实现的。 在使用系统库函数时,要用预编译命令#include将头文件“stdio.h”包括到用户源文件中。1.printf()函数:格式化输出函数,它能够按用户指定的格式输出多种类型的数据。 ·一般格式为:printf(”格式控制字符串”,输出列表); ·printf函数的参数包括两部分: (1)“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括三种信息。

“%”和格式字符组成,如%d、%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%” ②普通字符。普通字符即需要原样输出的字符。例如上面printf函数中双撇号内的逗号、空格和换行符。 ③转义字符:无法用单个字符描述的一些特定操作,如\n(换行)、\t(跳到下一个水平制表位)等。 (2) “输出列表” 2.scanf()函数:格式化输入函数,按用户指定格式从键盘上把数据输入到指定的变量中。·一般格式为:scanf(“格式控制字符串”,地址列表); ·“格式控制”通常只需格式说明而不包含其他字符,“输入列表”是需要输入的变量地址。3.格式字符串由%和格式字符组成,还可以加入一些可选项。 一般形式为:% [*][输入数据宽度][长度] 格式字符 (1)格式字符:指定输入数据的类型。 (2)*:表示该输入项,读入后不赋予相应的变量,即跳过该输入值。 (3)输入宽度:用十进制整数指定输入的宽度(即字符数)。

MATLAB程序设计实验报告

MATLAB实验报告 一、实验名称 实验4图形绘制(1) 二、实验目的: 熟悉和掌握MA TLAB基本的二维图形绘制函数。 三、实验内容: 1.绘制简单的二维图形 2.一个坐标系绘制多幅图形 3.图形标识和坐标控制 4.交互式图形指令 四、回答问题: (本次实验未预留问题) 五、遇到的问题及解决: 遇到了求y=lnx时,输入“y=ln(x)”不被软件识别的问题,查看常用数学函数表后改为y=log(x)成功解决。 在求10x时不知道用什么函数,函数表里也查不到,在老师的点拨下用“y=10.^x”解决。 在绘图时发现默认线型不够明显,查表后使用尖三角、叉号代替默认线型。 六、体会: 本次实验我学会了利用MATLAB绘制图形的基本方法,以及相应的备注方法。 难点是了解各种函数的具体作用并熟练掌握。 体会是:多学多练,孰能生巧,日积月累,必有提高。

思考题: 1.在同一坐标系绘制t3,-t2,t2sint在[0,2π]内的曲线图。 x=0:pi/50:2*pi; y1=t.*t.*t; y2=-t.*t; y3=t.*t.*sin(t); plot(t,y1,'^k',t,y2,'.k',t,y3,'xk'); legend('\ity=t^3','\ity=-t^2','\itt^2*sint'); 2.在一幅图中画出4幅子图,分别绘制sin2x,tanx,lnx,10x的图形,并加上适当的图形注释。注意:把函数变成MATLAB对应的形式。 x=0:pi/50:2*pi; y1=sin(2*t); y2=tan(x); y3=log(x); y4=10.^x; subplot(2,2,1) plot(x,y1); legend('y=sin2x'); subplot(2,2,2) plot(x,y2) legend('y=tanx'); subplot(2,2,3) plot(x,y3)

03实验三 顺序结构程序设计_答案

湖北工业大学实验报告 课程名称:C语言程序设计实验内容实验三顺序结构程序设计 学院:工程技术学院专业班级: 姓名:学号:教师:成绩: 一、实验目的 1、掌握赋值语句、表达式语句、函数调用语句、复合语句、空语句的使用方法。 2、掌握输入、输出函数的格式及格式符的使用。掌握文件包含预处理命令的使用方法。 3、掌握数据的输入、存储、输出之间的关系。 4、掌握顺序程序设计的逻辑结构,掌握数据结构的功能。 二、预习作业 1、程序填空题:试在括号中填入正确的答案,并上机验证程序的正确性。(1) 输入大写字符A,则输出为( )。(文件名:ex3_1.c) (#include ) main( ) { ( char ch,chr; ) chr=(ch= getchar( )) main( ) { ( long int) a =80000 , b = 60000, c, d; ( c) = ( a - b ,a + b ); ( d) = (a + b,a - b); printf(“%ld ,%ld\n”, c, d); }

2、程序改错并上机调试运行 (1)更改下列程序中的位运算符和逻辑运算符,能使变量d、e输出的结果为零。 (文件名:ex3_3.c) #include main( ) { int a = 8, b = 2,c = 3,d,e; /********** found **********/ d = (a % c & ^ a % c); e = a / c - b || && c + + ; printf (“%d, %d\n”, d, e); } (2) 查找改程序中的错误,并修改正确。(文件名:ex3_4.c) #include main( ) { int a = 4, b = 6, c= 3; /********** found **********/ a = a + b = b + c ; b = a < b ?a :b < c ?b :c printf(“%d,%d\n”, a, b); } 3、读程序写结果并上机验证其正确性 (1) 变量 a,b,c,d如下,将变量a以各种格式输出并输出表达式c+a,d – 32的值。(文件名:ex3_5.c) #include main( ) 结果为:(-1,4294967295,37777777777,ffffffff ) { int a = - 1 , b = 2 ; C,B char c = …D?,d = …b?; b = b + c;//??? printf (“%d, %u,%o,%x \n ”,a,a,a,a ); printf (“%c,%c \n ”,c + a, d - 32); } (2) 运行程序后输入”a空格b空格c回车”后,输出结果是(a ,b )。(文件

C实验_函数3

实验 函数(3) 一、实验目的: 1、掌握函数的结构及格式 2、掌握函数的调用; 二、实验时间:2011.11 三、实验地点:院计算机中心 四、实验内容与步骤: 程序填空,说明: (1) 在一对"/**/"之间编写程序,以完成题目的要求; (2) 不得删改程序中的"/**/"注释和其它代码; (3) 源程序均在考生文件夹中,务必以原文件名保存程序; (4) 按Alt+Tab 键,切换考试程序与Turbo C ;按Alt+Enter 键,切换Turbo C 窗口大小。 1.补充程序Ccon011 2.C ,其功能是求下列级数的部分和。 ++++++=!!3!2132m x x x x e m x 例如:当m=100,x=2时,e x =7.389057 -------Ccon0112.C--------------------------------------------------------------------------- #include main() { int i,m; float x,s,tem; printf("Input m and x\n:"); scanf("%d%f",&m,&x); /**/ /**/ for(i=1;/**/ /**/;i++) { tem*=x/i; s+=tem; } printf("e**%.2f=%f\n",x,s); getch(); }

2.补充程序Ccon092.C ,计算s=1+12+123+1234+12345。 -------Ccon092.C--------------------------------------------------------------------------- #define N 5 #include void main() { int t=0,/**/ /**/,i; for(i=1;i<=N;i++) { t=/**/ /**/; s+=t; } clrscr(); printf("\ns=%d\n",s); getch(); } 3.补充程序Ccon072.C ,计算)! (!!n m n m p -=,其中m ,n 为整数且0≥>n m 。 -------Ccon072.C--------------------------------------------------------------------------- #include double fun(unsigned m,unsigned n) { unsigned i; double p=1.0; for(i=1;i<=m;i++) /**/ /**/ for(i=1;i<=n;i++) /**/ /**/ for(i=1;i<=m-n;i++) p=p/i; return p; } void main() { clrscr(); printf("p=%f\n",fun(13,7));

实验三简单程序设计(2)

实验三简单程序设计 【实验目的】 1、掌握scanf、printf函数语句的使用 2、掌握算术表达式和赋值表达式的使用 3、能够编程实现简单的数据处理 【实验性质】验证性 【实验要求】 1、认真阅读本次实验的目的,了解本次实验要求掌握的内容 2、在上机前,需要预习,在程序改错题旁将程序中存在的错误修改过来,将编程题的 代码和流程图写在预习报告中 3、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码, 在VC环境中编写出来 4、在VC中将编写的程序编译、调试,能正确运行结果,各题目的具体要求请看题目下 的要求 5、将正确程序上传FTP服务器(ftp://172.17.9.253) 6、争取完成选作题 【实验内容】 1、程序改错 1) 下面程序需要从键盘输入三个数,计算其平均值在屏幕上显示输出。要求平均值 需要保留两位小数。源代码如下,程序中存在错误,请将其改正写在旁边,并注明为什么错误。 include int Main(){ int x,y,z,float ave; /*定义变量*/ printf("请输入三个数:\n);/*输入提示*/ scanf("%d,%d,%d",x,y,z);/*从键盘输入*/ ave=x+y+z/3;/*计算*/ printf("平均值是:ave=%f",AVE); return 0; }

2、编程题 1)编写程序,在计算机屏幕上显示如下信息。 【要求】 (1)使用printf 函数输出字符 2) 设一个正圆台的上底半径r1,下底半径r2,高h 。请设计一程序,从键盘输入r1,r2,r3;计算并在显示器上输出该圆台的上底面积s 1,下底面积s 2,圆台的体积V 。 【要求】 (1)r1,r2,h 用scanf 函数输入,且在输入前要有提示; (2)在输出结果时要有文字说明,每个输出值占一行,且小数点后取2位数字。 【思路点拔】 (1)圆面积计算公式为 s=πr 2。其中r 为圆半径。 (2)圆台体积计算公式为 V=3 /)r1r2r2r1(h 22++π 3) 鸡兔同笼,已知鸡兔总头数为h ,总脚数为f ,求鸡兔各有多少只? 【要求】

实验3

信号与系统 班级: 学号: 姓名:

实验三 连续时间信号的频域分析 一、 实验目的 1.熟悉傅里叶变换的性质 2.熟悉常见信号的傅里叶变换 3.了解傅里叶变换的MATLAB 实现方法 二、 实验原理 傅里叶变换是信号分析 的最重要的内容之一。从已知信号()f t 求出相应的频谱函数 ()F j ω的数学表示为: ()F j ω()j t f t e dt ω∞ --∞=? ()f t 的傅里叶变换存在的充分条件是()f t 在无限区间内绝对可积,即()f t 满足下式: ()f t dt ∞ -∞<∞? 但上式并非傅里叶变换存在的必要条件。在引入广义函数概念之后,使一些不满足绝对可积 条件的函数也能进行傅里叶变换。 傅里叶反变换的定义为:1 ()()2j t f t F j e d ωωωπ∞ -∞=?。 在这一部分的学习中,大家都体会到了这种数学运算的麻烦。在MATLAB 语言中有专 门对信号进行正反傅里叶变换的语句,使得傅里叶变换很容易在MATLAB 中实现。在 MATLAB 中实现傅里叶变换的方法有两种,一种是利用MATLAB 中的Symbolic Math Toolbox 提供的专用函数直接求解函数的傅里叶变换和傅里叶反变换,另一种是傅里叶变换 的数值计算实现法。下面分别介绍这两种实现方法的原理。 1.直接调用专用函数法 ①在MATLAB 中实现傅里叶变换的函数为: F=fourier( f ) 对f(t)进行傅里叶变换,其结果为F(w) F =fourier(f,v) 对f(t)进行傅里叶变换,其结果为F(v) F=fourier( f,u,v ) 对f(u)进行傅里叶变换,其结果为F(v) ②傅里叶反变换 f=ifourier( F ) 对F(w)进行傅里叶反变换,其结果为f(x) f=ifourier(F,U) 对F(w)进行傅里叶反变换,其结果为f(u) f=ifourier( F,v,u ) 对F(v)进行傅里叶反变换,其结果为f(u) 由于MATLAB 中函数类型非常丰富,要想了解函数的意义和用法,可以用mhelp 命令。 如在命令窗口键入:mhelp fourier 回车,则会得到fourier 的意义和用法。 注意: (1)在调用函数fourier( )及ifourier( )之前,要用syms 命令对所有需要用到的变量(如t,u,v,w ) 等进行说明,即要将这些变量说明成符号变量。对fourier( )中的f 及ifourier( )中的F 也要用 符号定义符sym 将其说明为符号表达式。

图的应用的实验报告

实验六图的应用及其实现 一、实验目的 1.进一步功固图常用的存储结构。 2.熟练掌握在图的邻接表实现图的基本操作。 3.理解掌握AOV网、AOE网在邻接表上的实现以及解决简单的应用问题。 二、实验内容 [题目一]:从键盘上输入AOV网的顶点和有向边的信息,建立其邻接表存储结构,然后对该图拓扑排序,并输出拓扑序列. 试设计程序实现上述AOV网的类型定义和基本操作,完成上述功能。 测试数据:教材图7.28 [题目二]:从键盘上输入AOE网的顶点和有向边的信息,建立其邻接表存储结构,输出其关键路径和关键路径长度。试设计程序实现上述AOE网类型定义和基本操作,完成上述功能。 测试数据:教材图7.29 三、实验步骤 ㈠、数据结构与核心算法的设计描述 基本数据结构: #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 typedef int Status; /* Status 是函数的类型,其值是函数结果状态代码,如OK 等*/ #define INFINITY INT_MAX //定义无穷大∞ #define MAX_VERTEX_NUM 20 typedef int V ertexType; typedef int InfoType; typedef struct ArcNode // 表结点定义 { InfoType info; int adjvex; //邻接点域,存放与V i邻接的点在表头数组中的位置ArcNode *nextarc; //链域,指示依附于vi的下一条边或弧的结点, }ArcNode; typedef struct VNode //表头结点 { int data; //存放顶点信息 struct ArcNode *firstarc; //指示第一个邻接点 }VNode,AdjList[MAX_VERTEX_NUM]; typedef struct { //图的结构定义

相关文档