文档库 最新最全的文档下载
当前位置:文档库 › 实验3(函数)

实验3(函数)

实验3(函数)
实验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 返回正数

//str1=str2 返回0

//str1

11、学习函数重载、参数带有缺省值、内联成员函数定义与调用

(1)、编写一个程序,其中包含三个重载的display()函数,第一个函数输出一个double值;第二个函数输出一个int值;第三个函数输出一个char值。在主函数中分别用double、float、int、char和short类型去调用display()函数,注意重载函数的运用规则和输出时区分。

(2)、试编写一个求两个双精度浮点数中最大值的函数,要求将该函数定义为内联函数。并回答利用内联函数的原则和理由。

12、写出下列程序的运行结果

#include

void fun(char PrCh='$',int num=10);

void main()

{

char ch;

int num;

ch='#';

num=20;

fun(ch,num);

fun();

fun('&');

return;

}

void fun(char ch,int num)

{

for(int i=0;i

{

cout<

}

cout<

}

13、投骰子的随机游戏

游戏规则是:每个骰子有六面,点数分别为1、2、3、4、5、6。游戏者在程序开始时输入一个无符号整数,作为产生随机数的种子。

每轮投两次骰子,第一轮如果和数为7或11则为胜,游戏结束;和数为2、3或12则为负,游戏结束;和数为其它值则将此值作为自己的点数,继续第二轮、第三轮...直到某轮的和数等于点数则取胜,若在此前出现和数为7则为负。

由rolldice函数负责模拟投骰子、计算和数并输出和数。

提示:随机函数rand

函数原型:int rand(void);

所需头文件:

功能和返回值:求出并返回一个伪随机数

产生随机数的种子srand

函数原型:void srand(unsigned int seed);

参数:seed产生随机数的种子。

所需头文件:

功能:为使rand()产生一序列伪随机整数而设置起始点。使用1作为seed参数,可以重新初化rand()。

14、用递归法计算从n个人中选择k个人组成一个委员会的不同组合数。

提示:由n个人里选k个人的组合数= 由n-1个人里选k个人的组合数+由n-1个人里选k-1个人的组合数。当n==k或k==0时,组合数为1

15、P88 3_14

16、P89 3_15

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.掌握常用函数的功能及使用方法,并能用它们来解决一些实际问题。 二、实验内容与操作步骤 在Excel环境下完成以下各操作: (一)序列填充及公式的使用 1.在Excel中创建一个空白工作簿 2.利用Excel提供的数据填充功能,在Sheet1工作表中输入以下数据: ⑴在区域A1:A9中从上到下填入:2,4,6,8,10,12,14,16,18 ⑵在区域B1:B9中从上到下填入:1,2,4,8,16,32,64,128,256 ⑶在区域C1:C12中从上到下填入:JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC ⑷在区域D1:D7中从上到下填入:星期日,星期一,星期二,星期三,星期四,星期五,星期六 3.在Sheet2工作表中,利用公式计算二次函数ax2+bx+c的值,其中a=2,b=3,c=5,x从-3到4变化,每隔0.5取一个函数值。操作方法写出如下: 4.把工作簿以E81.XLS为文件名存入D:\EX8中。 (二)函数的使用 在Excel环境下打开D:\EX8\E82.XLS文件,依次完成以下各操作后按E83.XLS为文件名存入D:\EX8中。 1、统计函数的使用 ⑴单击“统计函数”工作表;

⑵在区域F3:G8中用“统计函数”计算出各分店的统计值。 操作方法是:先在F3单元及G3单元输入的计算公式,然后选定区域F3:G3后双击其填充柄。其中F3单元的公式为,G3单元的公式为。 ⑶在区域B9:E12用“统计函数”计算出各季度的统计值。 2、条件函数的使用 ⑴单击“条件函数”工作表。 ⑵计算出各学生的平均分; ⑶给定各学生的成绩等级,规则如下:平均分≥90为“A”,80≤平均分<90为“B,70≤平均分<80为“C”,60≤平均分<70为“D”,平均分<60为“E”。以此规则在区域F3:F62用IF函数确定各学生的等级。 ⑷用FREQUENCY函数在区域I2:I5中统计出平均分0~59,60~79,80~99,100各分数段的学生人数。 3、文本函数的使用 ⑴单击“文本函数”工作表; ⑵在区域A2:F32给出的数据清单中,编号的前3位为系别信息,101为数学系,102为物理系,103为化学系,据此在区域B3:B32用函数求出每位教师的系别。其中B3单元使用的公式为。 ⑶已知身份证号的第7至第10位数为出生年份,据此在区域F3:F32用函数求出每位教师的出生年份。其中F3单元使用的公式为。 4、日期函数的使用 ⑴单击“日期函数”工作表; ⑵在区域A2:F32给出的数据清单中,在区域E3:E32用日期函数求出每位职工的工龄。其中E3单元使用的公式为。 ⑶在区域F3:F32用日期函数求出每位职工的工作天数(即自参加工作以来已经过的总天数。其中F3单元使用的公式为。 5、财务函数的使用 使用 PMT 函数完成以下有关的操作: ⑴单击“财务函数”工作表; ⑵某企业向银行贷款5 万元,准备4年还清,假定当前年利率为 4 % ,在 B5 单元 计算每个月应向银行偿还贷款的数额,根据条件在 B2 : B4 补充所需内容。其中单元格B5 使用的公式为。 ⑶假定当前年利率为 5 %,为使 5 年后得到 10 万元的存款,在 D5 单元计算现在开

实验九 函数的重载和变量的作用域

实验九函数的重载和变量的作用域 一、实验目的 1、了解内联函数、重载函数、带默认参数函数的定义及使用方法。 2、掌握作用域的概念、变量的存储类型及它们之间的差别。 3、掌握程序的多文件组织。 二、实验内容 1、重载函数允许不同的函数使用相同的名字,这使得完成类似的任务时可以使用相同的函数名。 范例:编写几个计算面积的函数,分别计算圆、矩形、梯形和三角形的面积,计算边长为1的正方形及其内切圆、内接等腰三角形和等腰梯形面积。 函数原型如下: double area(double radius=0); //圆面积,参数为半径,默认参数为0,表示点面积 double area(double a, double b); // 计算矩形面积,参数为长和宽 double area(double a, double b, double h); //计算梯形面积,参数为两底和高 double area(double a, double b, double c, int); //计算三角形面积,参数为三边长,int 型参数起标示作用,以区别于梯形,不参加计算。 #include #include using namespace std; const double PI=3.14159; double area(double radius=0); double area(double a,double b); double area(double a,double b,double h); double area(double a,double b,double c,int); int main(){ cout<<"Area of point is"<

实验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.形参可以是常量,变量或表达式

实验九 数组

实验九数组 一、实验目的 ①掌握数组的声明、数组元素的引用。 ②掌握静态数组和动态数组的使用差别。 ③掌握用数组解决与数组有关的常用算法,如:求最大(最小)值、求和、求平均值、排序(冒泡法排序、选择法排序和插入法排序)和查找等。 二、实验任务 实验内容1: 设有如下两组数据:A:2,8,7,6,4,26,24B:79,27,32,40,57,66,82 编写一个程序,把上面两组数据分别读入两个数组中,然后把两个数组中对应下标的元素相加,即2+79,8+27,…,24+82,并把相应的结果放入第三个数组中,最后输出第三个数组的值。分别以姓名1.frm 和姓名1.vbp为窗体名和工程名保存在计算机上。 【分析】 两个一维数组中下标相同的元素相加之和是第三个一维数组中对应下标的元素。 实验内容2: 使用Array函数给数组进行初始化为:6,2,5,8,9,15,26,18,然后计算数组各元素的和,并在窗体上输出数组各元素的值和数组元素的和。分别以姓名 2.frm 和姓名2.vbp为窗体名和工程名保存在计算机上。 【分析】 ?Array函数只能给variant类型的数组变量进行初始化,只能给一位数组进行初始化 ?数组的元素类型必须相同,单如果数组类型是variant时,可以包含不同类型的元 素 ?数组的下界缺省为0,也可用option语句将数组的下界设置为1.数组的上界可通过 ubound函数获得。 实验内容3: 从键盘上输入10个整数,并放入一个一维数组中, 然后将其前5个元素与后5个元素对换,即:第1个 元素与第10个元素互换,第2个元素与第9个元素互 换……第5个元素与第6个元素互换。分别输出数组 原来各元素的值和对换后各元素的值。 【分析】 同一数组中元素的互换与变量交换值是类同的, 需要借助与第三个变量来作为中转的对象。

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(函数)

实验三 函数 一、实验目的 (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、学会用构造函数对类对象进行初始化 2、掌握析构函数,并了解构造函数和析构函数的调用顺序 3、了解对象数组和对象指针的用法 4、学会共用数据的保护,了解常对象、常成员函数等的使用限制 二实验内容和要求 1.回顾课本知识,掌握重点和难点,认真分析例题熟悉本章内容。 2.完成本章课后习题2、6、7题,认真分析每一题的代码。 三实验环境 Visual C++6.0开发环境 四源程序 2、 #include using namespace std; class Date { public: Date(int,int,int); Date(int,int); Date(int); Date(); void display(); private: int month; int day; int year; }; Date::Date(intm,intd,int y):month(m),day(d),year(y) {} Date::Date(intm,int d):month(m),day(d) {year=2005;} Date::Date(int m):month(m) { day=1; year=2005; }

Date::Date() { month=1; day=1; year=2005; } void Date::display() { cout< using namespace std; class Student { public: Student(intn,float s):num(n),score(s) {}; void change(intn,float s) { num=n; score=s; } void display() { cout<

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显示

Python 实验8 函数1

实验8 函数(一)实验目的: 1、理解自定义函数过程的定义与调用方法; 2、掌握自定义函数的定义与调用方法; 3、理解函数中的参数的作用; 实验内容: 1、编写一函数Fabonacci(n),其中参数n代表第n 次的迭代。While循环 def fib(n): if n==1 or n==2: return 1 a=1 b=1 i=2 while True: c=a+b a=b b=c i+=1 #第i次迭代,也就就是第i个数 if i==n: return c break def main(): n=input("Enter a number of generation:") print fib(n) main() 或者用for循环 def fib(n): a=1 b=1 c=0 if n==1 or n==2: return 1 else: for i in range(3,n+1): c=a+b a=b b=c return c def main(): n=input("enter n:") print fib(n) main() 2、编写一函数Prime(n),对于已知正整数n,判断该数就是否为素数,如果就是素数,返回True,否则返回 False。 def prime(n): if n<2: return False a=0 for i in range(1,n+1): if n%i==0: a+=1 if a>2: return False else: return True def main(): n=input("Enter a number:") print prime(n) main() Or: def prime(n): if n<2: return False if n==2: return True for i in range(2,n): if n%i==0: return False return True def main(): n=input("Enter a number:") print prime(n) main()

实验报告9答案

实验报告 课程名称:高级语言程序设计 实验九:函数与数组 班级: 学生姓名: 学号: 专业: 指导教师: 学期:2010-2011学年上学期 云南大学信息学院

一、实验目的 1、掌握数组作为参数的函数编写与调用方法 2、掌握数组作为参数的特殊性 3、掌握字符串作为参数的函数编写与调用方法 二、知识要点 1、地址传递的概念及使用 2、数组元素和数组名作为函数参数的特点与区别 3、字符串作为参数的特点:‘\0’字符的使用 三、实验预习(要求做实验前完成) 1、数组作为函数参数时,其特殊性是 2、定义作为参数的函数时,通常需要提供长度作为参数;而定义 作为参数的函数时,通常不需要提供长度参数 3、写出满足如下要求函数的函数首部: ①函数名为fmax,求一个实型数组的最大元素值: ②函数名为scount,求一个字符串中大写字母的个数: ③函数名为delf,删除一个字符串的第一个字符: 四、实验内容 1、编写一个函数,其功能是将字符串中的大写字母改为小写字母,其他字 符不变。 2、编写一个函数,求出给定的二维数组中每一行最大的元素,并显示出来。 3、在主函数中输入N个人的某门课程的成绩,分别用函数求:①平均分、最 高分和最低分;②分别统计90~100分的人数、80~89分的人数、70~ 79分的人数、60~69分的人数及59分以下的人数。结果在主函数中输出。 五、实验结果(要求写出运行界面及输出的运行结果) 六、实验小结

1.#include #include void change(char a[]) {int i; for(i=0;i='A'&&a[i]<='Z') a[i]+=32; } void main() {char c[30],k; printf("请输入一个包含大写字母的字符串:\n"); gets(c); change(c); puts(c); } 2.#include void max(int b[3][3]) {int i,j,max[3]; for(i=0;i<3;i++) max[i]=b[i][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(b[i][j]>max[i]) max[i]=b[i][j]; for(i=0;i<3;i++) printf("第%d行最大值为:%d\n",i+1,max[i]); printf("\n"); } void main() {int i,j,a[3][3]; printf("输入3行3列的数组:"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); printf("数组元素为:\n"); for(i=0;i<3;i++) {for(j=0;j<3;j++) printf("%d ",a[i][j]); printf("\n"); } max(a); } 3. #include

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

电路实验二实验报告 实验题目:仪器仪表的使用 实验内容: 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)

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));

实验八 函数含答案

实验八函数 【目的与要求】 1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2.了解主调函数和被调函数之间的参数传递方式。 【上机内容】 【一般示例】 【例1】将打印18个"*"组成星形线定义为一个返回值和形参列表都为空的函数,通过主函数调用它。 #include void Star(void) //画星形线。函数没有返回值,形参列表也为空 { int i; for(i=1;i<=18;i++) printf("*"); //18个"*"组成星形线 printf("\n"); return ; //返回值类型为void,return后不带表达式,此句可省略 } int main() { Star( ); //单独的函数调用语句,实参表为空,但必须保留括号 printf("I love C language!\n"); Star( ); return 0; } 【例2】调用prime 函数以每行5个素数的格式输出100到200之间的所有素数。

#include #include int prime(int m) //判断素数函数定义 { int i,k,f=1 ; //函数内定义3个变量 if (m==1) //形参若为1 f=0 ; //形参若为1,非素数 k=(int)sqrt(m); for (i=2; i<=k;i++) if (m%i==0) //m被某除数整除 f=0 ; //则不是素数 return f ; //用return语句返回 } //函数体结束 int main( ) { int i,count=0; for (i=101;i<200;i=i+2) //用i作为循环控制变量,从101开始,步长为2 if (prime(i)) //对每一个i,调用prime函数判断它是否为素数 { printf("%5d",i); //如果是素数,输出该素数i count++ ; //素数个数加1 if (count%5==0 ) //每输出5个素数换一行 printf("\n"); }

实验九 利用函数电路实现波形变换

实验九利用函数电路实现波形变换 —、实验目的 1 、利用二极管非线性特性 , 实现三角波→正弦波的变换。 2 、利用差分对管的饱和与截止特性,实现三角波→正弦波变换。 二、预习要求 1 、预习方波产生电路和方波→三角波的变换电路工作原理。 2 、预习三角波→正弦波的变换电路和工作原理。 三、实验仪器设备 1 、双踪示波器 2 、万用表 3 、高频电路实验装置 四、实验电路和工作原理 1 、二极管波形变换电路工作原理 从三角波和正弦波的波形上看 , 二者主要的差别在波形的峰值附近 , 其余部 分都很相似 . 因此只要设法将三角波的幅度按照一定的规律逐段衰减 , 就能 将其转换为近似正弦波 . 见图 9.1 所示 . 用二极管将三角波近似转换为正弦波的实验电路见图 9.2 。图中 , R4 ~ R7,D1 ~ D3 负责波形的正半周, R8 ~ R11,D4 ~ D6 负责波形的的下半周, R2 和 R3 为正负半周共用电阻, R1 对输入的三角波进行降压。在正半周的变换过程中,设 R4 ~ R7 都取值为 1.2K Ω, 在正半周 , 当 D1 ~ D3 都不导通时, C 、 B 、 A 点的电压分别为 1.25V,2.5V,3.75V 。在波形变换的过程中 , 由于二极管的非线性特性,加上输入函数的时间关联性 , 不同时刻二极管上所承受的电压是不同的。为了分析的方便 , 我们假设二极管的正向导通电压为 0.5V, 则当输入电压高于 1.75V 时 , 二极管 D3 导通,输出电压高于 1.75V ;当输入电压高于 3V 后 , 二极管 D2 导通 , 输出电压高于 3V; 当输入电压高于 4.25V 后 , 二极管 D1 导通 , 输出高于 4.25V. 以此类推 , 便可近似得到正弦波形 . 若增大电阻 R4 的值 , 可以降低波峰时的电压降 , 以适应不同输入电压的变换要求 . 负半周的变换原理与此相类似 , 读者可以自行分析。

实验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 将其说明为符号表达式。

相关文档