当前位置:文档之家› 实验4 函数与预处理

实验4 函数与预处理

实验4 函数与预处理
实验4 函数与预处理

中南大学

实验报告

课程名称c++程序设计

实验项目名称实验4 实验5 实验6

指导老师向瑶

实验学生班级电子信息工程1503

实验学生姓名陶韬

学号 0903130309

实验时间2016.4.1至4.10

实验地点校本部科技楼4楼

实验成绩评定

实验4 函数与预处理

实验4.1

4.1.1题目:写一个判别素数的函数,在主函数输入一个整数,输出是否为素数的信息。

4.1.2自己写的代码:

#include

using namespace std;

bool isprime(int x);//函数声明

int main()

{

int x;//定义一个变量来储存等下要输入的数

cout<<"请输入一个整数"<

cin>>x;

if(isprime(x))//用if条件语句根据isprime函数的返回值来输出不同的结果

cout<<"输入的是一个素数"<

else

cout<<"输入的不是一个素数"<

return 0;

}

bool isprime(int x)

{

int i=2;

if(x==2)//特例如果输入的是2 直接返回true

return true;

if(x==1)

return false;

for(;i

{

if(x%i==0)

return false;

}

return true;

}

4.1.3

根据教材优化修改后的代码主要是对素数的算法进行优化-i只需要遍历到x的1/2即可,

这样的算法对于输入的数是2也是可以正确执行的,为了便于测试可以加上一个循环结构#include

using namespace std;

bool isprime(int x);//函数声明

int main()

{

int x;//定义一个变量来储存等下要输入的数

cout<<"当输入的数不为负数时一直进行循环"<

cout<<"请输入一个整数"<

cin>>x;

while(x>=0)

{

if(isprime(x))//用if条件语句根据isprime函数的返回值来输出不同的结果cout<<"输入的是一个素数"<

else

cout<<"输入的不是一个素数"<

cout<<"请继续输入一个整数:"<

cin>>x;

}

return 0;

}

bool isprime(int x)

{

int i=2;

if(x==1||x==0)

return false;

for(;i

{

if(x%i==0)

return false;

}

return true;

}

4.1.4测试结果

当输入的数不为负数时一直进行循环

请输入一个整数

17

输入的是一个素数

请继续输入一个整数:

34

输入的不是一个素数

请继续输入一个整数:

2

输入的是一个素数

请继续输入一个整数:

1

输入的不是一个素数

请继续输入一个整数:

输入的不是一个素数

请继续输入一个整数:

实验4.2

4.2.1题目:写一个函数验证哥德巴赫猜想,一个不小于6的偶数可以表示为两个素数之和,如6=3+3,8=3+5,10=3+7,。。。。在主函数中输入一个不小于6的偶数n,然后调用函数gotbaha,在gotbaha函数中再调用prime函数,prime函数的作用是判别一个数是否为素数。在gotbaha函数中输出以下形式的结果

34=3+31;

运行时输入该偶数的值为6,12,20,458,分析运行结果。如果输入2,4,会出现什么情况?修改程序,使之能输出相应的信息

4.2.2代码部分

#include

using namespace std;

bool isprime(int x);//判断一个数是否是素数的函数声明

void gotbaha(int y);//验证哥德巴赫猜想的函数

int main()

{

cout<<"请输入一个不小于6的偶数"<

cout<<"当输入的数不为负数时一直循环"<

int x;

cin>>x;

while(x>=0)//循环直到输入的数为负数

{

gotbaha(x);

cout<<"请输入一个新的数据进行验证";

cin>>x;

}

}

bool isprime(int x)

{

int i=2;

if(x==1||x==0)

return false;

for(;i<=x/2;i++)

{

if(x%i==0)

return false;

}

return true;

}

void gotbaha(int y)

{

int x1,x2;

for(x1=2,x2=y-x1;x1<=y/2;x1++,x2=y-x1)/*这里的算法是设出x1 那么x2自然也就等于y-x1分别验证这两个数都满足素数即可*/

{

if(isprime(x1)&&isprime(x2))

cout<

else

continue;

}

}

4.2.3运行结果1

请输入一个不小于6的偶数

当输入的数不为负数时一直循环

6

6=3+3

请输入一个新的数据进行验证

12

12=5+7

请输入一个新的数据进行验证

20

20=3+17

20=7+13

请输入一个新的数据进行验证

458

458=19+439

458=37+421

458=61+397

458=79+379

458=109+349

458=127+331

458=151+307

458=181+277

458=229+229

请输入一个新的数据进行验证

4.2.4本题第二问:

如果输入2,和4 会输出什么情况?修改程序使之能输出相应的信息

4.2.5运行结果2

请输入一个不小于6的偶数

当输入的数不为负数时一直循环

2

请输入一个新的数据进行验证4

4=2+2

请输入一个新的数据进行验证

4.2.6修改代码使之能输出相应的信息

分析:因为哥德巴赫猜想是针对大于或者等于6的偶数而言所以如果用户输入一个小于6的偶数时只要提示其输入错误需要重新输入即可。

4.2.7代码2

#include

using namespace std;

bool isprime(int x);//判断一个数是否是素数的函数声明

void gotbaha(int y);//验证哥德巴赫猜想的函数

int main()

{

cout<<"请输入一个不小于6的偶数"<

cout<<"当输入的数大于或者等于6时一直循环"<

int x;

cin>>x;

if(x<6)

cout<<"请根据哥德巴赫猜想的前提条件输入一个大于或者等于6的偶数"<

while(x>=6)//循环直到输入的数为负数

{

gotbaha(x);

cout<<"请输入一个新的数据进行验证";

cin>>x;

if(x<6)

cout<<"请根据哥德巴赫猜想的前提条件输入一个大于或者等于6的偶数"<

}

return 0;

}

bool isprime(int x)

{

int i=2;

if(x==1||x==0)

return false;

for(;i<=x/2;i++)

{

if(x%i==0)

return false;

}

return true;

}

void gotbaha(int y)

{

int x1,x2;

for(x1=2,x2=y-x1;x1<=y/2;x1++,x2=y-x1)/*这里的算法是设出x1 那么x2自然也就等于y-x1分别验证这两个数都满足素数即可*/

{

if(isprime(x1)&&isprime(x2))

cout<

else

continue;

}

}

4.2.8 运行结果

请输入一个不小于6的偶数

当输入的数大于或者等于6时一直循环

6

6=3+3

请输入一个新的数据进行验证4

请根据哥德巴赫猜想的前提条件输入一个大于或者等于6的偶数

Press any key to continue

实验4.3

4.3.1题目:

解决汉诺塔问题。古代有一个梵塔,塔内有3个座,A,B,C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在下小盘在上。在移动过程中可以利用B座,要求编程序打印出移动的步骤。

在运行时分别指定盘子数为3.,5,7,。并统计在不同盘子数的情况下,移动盘子多少次。请试一下如果盘子数为16,在你所用的计算机上要运行多少时间。设想一下,如果盘子数为63,会出现什么情况?

4.3.2代码

#include

using namespace std;

void hannuota(int x,char one,char two,char three);//汉诺塔函数表示one座借助two座把x个盘子移动到three座

void move(char a,char b);//移动函数输出从a移动到b

int times=0;//全局变量用来统计一共搬运了多少次

int main()

{

cout<<"请输入一共有多少个盘子在A座"<

int x;

cin>>x;

cout<<"具体的操作步骤:"<

hannuota(x,'A','B','C');

cout<<"一共执行了"<

return 0;

}

void hannuota(int x,char one, char two,char three)

{

if(x==1)

move(one,three);//当盘子数只为1的时候显然只需要从one搬到three else

{

hannuota(x-1,one,three,two);//递归把x-1个盘子从one借助tree移动到two

move(one,three);//把剩下的一个盘子从one搬到three

hannuota(x-1,two,one,three);//把x-1个盘子从two借助one移动到three }

}

void move(char a,char b)

{

cout<"<

times++;

}

4.3.3运行结果

4.3.3.1当输入3

请输入一共有多少个盘子在A座

3

具体的操作步骤:

A->C

A->B

C->B

A->C

B->A

B->C

A->C

一共执行了7次

Press any key to continue

4.3.3.2当输入5

请输入一共有多少个盘子在A座

5

具体的操作步骤:

A->C

A->B

C->B

A->C

B->A

B->C

A->C

A->B

C->B

C->A

B->A

C->B

A->C

A->B

C->B

A->C

B->A

B->C

A->C

B->A

C->B

C->A

B->A

B->C

A->C

A->B

C->B

A->C

B->A

B->C

A->C

一共执行了31次

Press any key to continue

4.3.3.3

考虑篇幅原因就不复制过来当x=7 一共搬运127次

如果盘子数为16

在我的pc上需要运行大约5s

4.3.4 如果盘子数为16 要运行多久?如果盘子数为64 会出现什么情况

如果盘子数为64 需要执行(264-1=1084467x1019),将会运行几十分钟左右。

实验4.4

4.4.1题目:输入一个字母字符,设置条件编译,使之能根据需要将小写字母改写为大写字母输出,或将大写字母改写为小写字母输出。

4.4.2代码:

#include

using namespace std;

//#define UPPER// 如果需要将大写改为小写把这一行注释即可

int main()

{

char c;

cout<<"请输入一个字符字母"<

cin>>c;

#ifdef UPPER

if(c>='a'&&c<='z')

c-=32;

#else

if(c>='A'&&c<='Z')

c+=32;

#endif

cout<

}

4.4.3 运行结果

请输入一个字符字母

A

a

Press any key to continue

请输入一个字符字母

a

A

Press any key to continue

实验4.5

4.5.1题目:

求a×b和a m的值,其中b的值在程序中给出,a和m值由键盘输入,卸一个power函数求a m的值,在主函数中求a×b,并调用power函数得到a m的值。要求将主函数和power 函数分别写成两个文件file1.cpp和file2.cpp,用extern将外部变量作用域扩展到其他文件。建立一个项目文件,包含file1.cpp和file2.cpp,按照本书第2部分中介绍的对包含多文件的程序的处理办法,对包含多文件的程序进行编译、连接和运行。

通过这个简单的程序,初步掌握处理包含多文件程序的方法。

4.5.2 file1.cpp的代码

#include

using namespace std;

int a;

extern int power(int);

int main()

{

int b=2;

cout<<"请输入a和m的值"<

int m;

cin>>a>>m;

cout<

int result;

result=power(m);

cout<

}

4.5.3 file2的代码

extern a;

int power(int m)

{

int i=1,result=1;

for(i=1;i<=m;i++)

result*=a;

return result;

}

4.5.4运行结果

extern a;

int power(int m) {

int i=1,result=1;

for(i=1;i<=m;i++)

result*=a;

return result;

}

实验九 Servlet应用

实验九 Servlet应用 1.实验目标 1.掌握Servlet的编写与配置 2.理解Servlet的生命周期 3.理解Servlet与JSP的区别 2.实验内容与要求 1.主要通过实践掌握对servlet的使用、编写 2.创建一个简单的servlet程序并在tomcat中进行配置 3.创建一个可以接收客户端提交参数,处理后返回给客户端的servlet程序。 4.使用request.getParameterValues(“”)获取复选框数据,实现用户注册功能 3.实验步骤 1. 实现一个简单的HelloServlet,要求在IE中显示“Hello XXX”字符串。 1)通过继承HttpServlet类创建自己的servlet类 2)在servlet类的doGet()方法中输出自己的信息 3)将生成的HelloServlet.java类编译成HelloServlet.class类,注意编译的时候要用到servlet-api.jar文件。

2.创建和部署Servlet 1)在Tomcat\webapps\目录下创建自己的项目名称myExample 2)在Tomcat\webapps\myExample目录下创建WEB-INF目录,并在该目录下创建一个classes目录,将编译后的HelloServlet.class文件拷贝到这里。 3)在Tomcat\webapps\myExample目录下创建WEB-INF目录并创建一个web.xml文件。 内容为 HelloServlet是我们自己定义的servlet-name,指定HelloServlet类(如果有报名要包含包名) 中指定的是我们在IE中所用的地址。 3.启动tomcat,测试运行 输入:http://localhost:8080\myExample\HelloServlet 2.编写一个处理登录请求的Servlet 1.编写Servlet,并接收从http中传递过来的参数 说明: 1、response.setContentType("text/html;charset=GB2312"); 和request.setCharacterEncoding("GB2312");两个方法主要是设置从客户端接收的字符编码和从服务器端返回的信息的编码,以防止中文出现乱码的的情况。 2、通过request.getParameter(" ") 方法分别得到从客户端传递过来的name和 password。 3、最后用out.println()方法输出显示给客户的信息。 4、编译LoginServlet.java,注意编译的时候使用到servlet-api.jar文件,将编译生成 的LoginServlet.class 文件拷贝到tomcat\webapps\myproject\WEB-INF\classes目录 下。

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

实验9 使用T-SQL编写程序

实验9 使用T-SQL编写程序 【实验目的】 1)掌握常用函数的使用方法。 2)掌握流程控制语句的使用方法。 【实验环境】 Sql server 2005 【实验重点及难点】 1)启动SQL Server 2005查询编辑器。 2)应用转换函数。 3)应用聚合函数。 4)应用字符串函数。 5)应用IF〃〃〃ELSE语句。 6)应用WHILE语句。 【实验内容】 (1)应用转换函数 1)打开“SQL Server Manageement Studio”窗口。 2)单击“标准”工具栏上的“新建查询”按钮,打开“查询编辑器”窗口。 3)在窗口内直接输入以下语句,求Course表中课程号为“7”的课程名称的长度,并输入结果。 declare @课程名称长度int select @课程名称长度=len(Cname) from course where Cno ='7' print'课程名称长度为'+str(@课程名称长度); 4)单击“SQL编辑器”工具栏上的“分析”按钮,检查输入的T-SQL语句是否有语法错误。如果有语法错误,则进行修改,直到没有语法错误为止。 5)确保无语法错误后,单击“SQL编辑器”工具栏上的“执行”按钮。将执行结果记录下来。 (2)应用聚合函数 1)在“查询编辑器”窗口内输入以下语句,统计Student表中的学生人数,并输出结果。 declare @学生人数int select @学生人数=count(*) from Student print'学生人数为'+str(@学生人数); 2 )单击“SQL编辑器”工具栏上的“执行”按钮。将执行结果记录下来。

数值分析实验四(龙格函数)

实验名称:龙格反例的数值实验 实验目的与要求: 1、了解切比雪夫多项式零点插值; 2、运用切比雪夫多项式零点插值法避免龙格现象。 3、与等距节点构造插值多项式比较。 实验内容: 龙格反例的数值实验 在区间[–5,5 ]上分别取11阶切比雪夫多项式的零点 22 )12(cos 5π+=k x k ( k = 0,1,2,……,10) 和等距节点作插值结点,计算函数211)(x x f +=在结点处的值 y k = f (x k )。构造插值多项式L 10(x ), ∑==10 010)()(k k k y x l x L 其中,∏≠=--=n k j j j k j k x x x x x l 0)()()(。取自变量点 t k = – 5 + 0.05k ( k =0,1,…,201),分别计算切比雪夫零点、等距节点插值多项式L k (x )和被插值函数f (x )在离散点t k ( k =0,1,…,201)上的值,并绘出三条曲线比较。 实验环境与器材: 9#505机房、《数值分析》 实验过程(步骤)或程序代码: function y=Lagrange(x,n,xx,yy) sum=0; %初始化 for k=1:n+1 lk=1; %初始化 for i=1:n+1 if k~=i lk=lk*(x-xx(i))/(xx(k)-xx(i)); end end sum=lk*yy(k)+sum; end y=sum; clc

clear for i=1:11 %下标只能从1开始 x1(i)=-5+10*(i-1)/10; x2(i)=5*cos((2*i-1)*pi/22); y1(i)=1/(1+x1(i)*x1(i)); y2(i)=1/(1+x2(i)*x2(i)); %y1,y2分别是在两种节点处得到的函数值 end h=0.05; for k=1:202 x3(k)=-5+(k-1)*h; y11(k)=Lagrange(x3(k),10,x1,y1); y22(k)=Lagrange(x3(k),10,x2,y2); y(k)=1/(1+x3(k)*x3(k)); %y11,y22分别为利用切比雪夫零点和等距节点构造出的插值多项式在离散点处的值 end plot(x3,y11,'r'); hold on plot(x3,y22,'g'); hold on plot(x3,y,'b') %被插值函数在离散点处值的曲线图 hold on xlabel('-5<=x<=5'); ylabel('y'); legend('f(x)=1/(1+x^2)','等距节点插值多项式','切比雪夫多项式零点插值多项式'); xlim([-5,5]) 实验结果与分析:

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

实验四 MATLAB程序设计

实验四 MATLAB 程序设计 1.实验目的 (1)熟练掌握MATLAB 的程序流程控制结构。 (2)掌握M 文件的结构,M 函数文件编写、使用。 (3)熟练掌握函数调用和参数传递。 2.实验仪器 (1)Matlab6.5应用软件安装版 一套 (3)PC 机 一台 3. 实验原理 依据MA TLAB 的编程的原理,编写M 函数文件,调用M 函数文件,完成曲线绘制。 4. 实验步骤 (1)利用for 、while 控制语句和sum 指令求和。 (2)使用MA TLAB 函数文件绘图。 (3)利用置换指令绘制脉冲响应曲线. (4)利用feval 指令实现指定的函数。 5. 实验报告内容(选做其中两题) (1)分别用for 和while 循环语句计算∑==630i i 2 K 的程序,再写出一种避免循环的计算程序。 (提示:可考虑利用MA TLAB 的sum (X,n )函数,实现沿数组X 的第n 维求和。)保存为M 文件. (2)将课本例4-8子函数编程及调用演示,三个子图上的圆和多边形绘制在同一坐标系中。并保存为M 文件。保存输出结果图。 (3)利用置换指令subs(X,new),例4-18中的脉冲响应在t=[0,18]的曲线。并保存为M 文件。保存输出结果图。 (4)试利用feval ()指令计算F(x)+F 2(x),其中F 可取‘sin ’、‘cos ’。(提示:先编写以个M 函数function y=trif(F,x)实现F(x)+F 2(x)的计算,在编写调用函数完成F 为‘sin ’、‘cos ’的计算),并保存为M 文件。(指定完成sin(pi/2)+sin(pi/2)^2; cos(pi/3)+cos(pi/3)^2)

Excel实验2表格格式设置及公式和函数的应用

表格格式设置及公式和函数的应用 实验目的:1、熟练掌握公式和函数的应用 2、熟练掌握数据的填充、复制和移动 3、熟练掌握对表格的格式设置以及格式刷的使用 实验内容共包括四项,总分100分。 实验内容一:以自己的学号和姓名建立一个电子表格,如在工作薄“050123456789张三.xls”中的sheet1工作表中完成下列操作,其中职员工资一览表如下:(25分) 操作要求: 1.输入正确数据,按要求设置单元格和表头文字。表格标题:黑色、黑体、 加粗、合并、居中。(5分) 2.在“税收”列计算税收,当月收入超过1600元,征收5%的个人所得税,保 留2位小数。(5分) 3.在“实发金额”列计算实际发放金额,保留2位小数。(4分) 4.合计“工资”、“奖金”、“税收”、“实发金额”列,保留2位小数。(5分) 5.在表格中将工资少于1600元的职工工资用红色标出(4分) 6.将工作表的名字“sheet1”改为“职工工资一览表”(2分)

说明。(共计15分) 1.标题设为20磅红色行文行楷。把第一行设置为合并居中。(2分) 2.在“姓名”前插入一列,标题为“学号”,数据从2005001开始,按步长为3 的等差数列有上至下填充。(3分) 3.所有数据都设置对齐方式为水平和垂直居中。将表的外边框设置为蓝色双线, 内部为蓝色单线,表格底纹为浅青绿色。如下图所示(5分) 4.正确计算各位同学的总分。(2分)

(共计40分) 1、第一行字体要求16磅、黑体、合并及居中;(3分) 2、第一行和第二行分别加上底纹,如下图所示;(3分) 3、第二行8磅、华文细黑,自动换行,调整列宽如下图所示;(5分) 4、取消08普本通信内部的边框线,前6列合并单元格,第7、8、9列要求 左对齐,缩小字体填充,其余居中对齐,自动换行;(5分) 5、“07普本通信工程”的格式设置如“08普本通信工程”;(5分) 6、第一列加上虚线、绿色边框;(3分) 7、工作表名称“sheet3”修改为“开课计划”;(1分) 8、“合计”项使用求和函数,分别求出各年级“学分”,“课程总学时”, “理论学时”,“实践学时”的总和,并设置格式为蓝色加粗。(9分)

实验4函数文件

实验四 函数文件 1.定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。 函数文件: function [e,ln,s,c]=plural(x) e=exp(x); ln=log(x); s=sin(x); c=cos(x); End 命令文件: x=input('请输入一个复数:'); [e,ln,s,c]=plural(x); e ln s c 运行结果: 请输入一个复数:3+4i e = -13.1288 -15.2008i ln = 1.6094 + 0.9273i s = 3.8537 -27.0168i c = -27.0349 - 3.8512i 2.一物理系统可用下列方程组来表示: ? ?????????????=??????????????????????????----g g m m N N a a m m m m 2121212111001cos 000sin 00cos 0sin 0sin cos θθ θθ θθ 从键盘输入m 1、m 2和θ的值,求N a a 121、、和N 2的值。其中g 取9.8,输入 θ时以角度为单位。 函数文件: function [a1,a2,N1,N2]=physis(m1,m2,t) g=9.8; A=[m1*cos(t*pi/180),-m1,-sin(t*pi/180),0;... m1*sin(t*pi/180),0,cos(t*pi/180),0;... 0,m2,-sin(t*pi/180),0;... 0,0,-cos(t*pi/180),1]; B=[0;m1*g;0;m2*g];

实验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 返回正数

实验九-可逆计数器的功能测试及应用电路

实验九可逆计数器的功能测试及应用电路 实验目的: (1)掌握可逆计数器74LS191、74LS191、74LS192、74LS193的逻辑功能及使用方法。 (2)熟悉可逆计数器实现任意进制的数码倒计时电路的工作原理。 实验仪器与器件: 实验箱一个;双踪示波器一台;稳压电源一台;函数发生器一台。 74LS191、74LS191、74LS191或74HC48、74LS00和74LS04。 实验内容: 1测试74LS190和74LS191的逻辑功能,并用数码管显示,验证是否与表2-9-4一致,分别画出各单元的电路图,写出各自的状态 实验原理:单时钟74LS191二进制同步加/减计数器的功能表如下: 表2-9-4 单时钟74LS191二进制同步加/减计数器的功能表 单时钟74LS191二进制同步加/减计数器是十进制的,其他功能与74LS191一样。它的有效状态为0000~1001. 实验电路: 如图所示是减计数时当计数器的状态变为0时的电路状态:RCO=0,MAX/=1; MIN

实验现象与结果: 该结果是当CTEN =0,D L =1,D U /=1时,A B C D Q Q Q Q 的 波形图; 该结果是当CTEN =0,D L =1,D U /=1时, RCO 与MIN MAX /的波形图

需要说明的是:当CTEN= D L=1时,电路保持原来的状态。 2测试74LS192和74LS193的逻辑功能,并用数码管显示,验证是否与表2-9-3及2-9-5一致。画出测试电路图。 实验原理: 双时钟74LS192同步十进制可逆计数器的功能表如下表所示,74LS192是十进制计数器。 表2-9-3双时钟74LS192同步十进制可逆计数器的功能表 输入输出工作 状态 U CP UP D CP DOW N CLR D L DCBA A B C D Q Q Q Q U TC D TC **H H ****0000 H H 异步 清零**L L 1001 1001 H H 异步 置数 H ↑L H ****1001→ 0001→ 0000H H H L 减法 计数 ↑H L H ****0000→ 1000→ 1001H L H H 加法 计数 双时钟74LS193二进制同步加/减法计数器的功能表如下表所示,74LS193是一个十六进制的计数器。

实验四 用窗函数法设计FIR数字滤波器

实验四 用窗函数法设计FIR 数字滤波器 实验项目名称:用窗函数法设计FIR 数字滤波器 实验项目性质:验证性实验 所属课程名称:数字信号处理 实验计划学时:2 一. 实验目的 (1)掌握用窗函数法设计FIR 数字滤波器的原理与方法。 (2)熟悉线性相位FIR 数字滤波器的特性。 (3)了解各种窗函数对滤波特性的影响。 二. 实验容和要求 (1) 复习用窗函数法设计FIR 数字滤波器一节容,阅读本实验原理,掌握设计步骤。 (2) 用升余弦窗设计一线性相位低通FIR 数字滤波器,截止频率 rad c 4 π ω= 。窗口长度N =15,33。要求在两种窗口长度情况下,分别求出()n h ,打印出相应的幅频特性和相频特性曲线,观察3dB 带宽和20dB 带宽。总结窗口长度N 对滤波器特性的影响。 设计低通FIR 数字滤波器时,一般以理想低通滤波特性为逼近函数()ωj e H ,即 ()?????≤<≤=-π ωωωωωα ω c c j j d ,,e e H 0 其中2 1 -= N α ()() ()[]() a n a n d e e d e e H n h c j j j j d d c c --= = = ??- -- πωωπ ωπ ωαωω ωαωπ π ωsin 2121

(3) 33=N ,4πω=c ,用四种窗函数设计线性相位低通滤波器,绘制相应的幅频特性曲线,观察3dB 带宽和20dB 带宽以及阻带最小衰减,比较四种窗函数对滤波器特性的影响。 三. 实验主要仪器设备和材料 计算机,MATLAB6.5或以上版本 四. 实验方法、步骤及结果测试 如果所希望的滤波器的理想的频率响应函数为()ωj d e H ,则其对应的单位脉冲响应为 ()()ωπ ω ωπ πd e e H n h j j d d ?- = 21 (4.1) 窗函数设计法的基本原理是用有限长单位脉冲响应序列()n h 逼近 ()n h d 。由于()n h d 往往是无限长序列,而且是非因果的,所以用窗函数() n ω将()n h d 截断,并进行加权处理,得到: ()()()n n h n h d ω= (4.2) ()n h 就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率 响应函数()ωj e H 为 ()()n j N n j e n h e H ωω ∑-==1 (4.3) 式中,N 为所选窗函数()n ω的长度。 我们知道,用窗函数法设计的滤波器性能取决于窗函数()n ω的类型及窗口长度N 的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的

Excel 实验指导——函数的使用

实验八学生成绩表------数学函数、统计函数 一、实验目的 1、掌握数组公式、Sum()函数 2、掌握Averageif()和Sumif() 3、掌握COUNT()、COUNTA()、COUNTIF()、Countblank() 4、RANK.EQ 5、数据库函数的使用 二、实验内容 1、利用数组公式或Sum()函数来统计每个同学上学期的总分。 2、利用Averageif()和Sumif()统计平均分和总分。 3、利用统计函数统计班级人数,每门课程不及格人数,缺考科目数。 4、对班级同学的考试情况进行排名。 5、选择合适的数据库函数统计信息 三、实验任务 小王是班级学习委员,现正值新学期评优时期,班主任委托小王统计班级同学上学期的考试成绩情况。小王要应用函数分析学生信息、计算考试成绩,分析每科成绩的最高分、最低分和平均分,统计每个学生的总分排名,并统计不同寝室的学习情况。 本例效果图如图9- 1所示,小王需要完成的工作包括: (1)统计每个同学各门课程的总分并排名。 (2)统计每个寝室的平均分。 (3)统计每门课程的不及格人数和缺考人数。 (4)统计符合特定条件的学生信息。 图9- 1 学生成绩表效果图

9. 3 案例实现 9.3.1统计班级每个学生的考试总分 1.使用一般公式方法 公式是Excel工作表中进行数值计算的等式,公式输入是以“=”开始的,简单的公式有加、减、乘、除等计算。 我们可以在I3单元格中编辑公式,输入“=D3+E3+F3+G3+H3”,回车后即可,其他同学的总分可以通过填充柄拖动来求得。 2.数组公式计算总分 Excel中数组公式非常有用,尤其在不能使用工作表函数直接得到结果时,数组公式显得特别重要,它可建立产生多值或对一组值而不是单个值进行操作的公式。 输入数组公式首先必须选择用来存放结果的单元格区域(可以是一个单元格),在编辑栏输入公式,然后按Ctrl+Shift+Enter组合键锁定数组公式,Excel将在公式两边自动加上花括号“{}”。注意:不要自己键入花括号,否则,Excel认为输入的是一个正文标签。 利用数组公式计算I3:I32单元格的总分。选中I3:I32单元格,然后按下“=”键编辑加法公式计算总分,因为数组公式是对一组值进行操作,所以直接用鼠标选择D3:D32,按下“+”号,再用鼠标选择其余科目成绩依次累加,然后按Ctrl+Shift+Enter组合键完成数组公式的编辑,如图9- 2所示。 图9- 2 数组公式 在数组公式的编辑过程中,第一步选中I3:I32单元格尤为关键。绝不能开始只选中I3单元格,在最后用填充柄填充其他单元格,那样其他单元格的左上角将会出现绿色小三角,是错误的方法。 3.使用Sum()函数计算总分 Sum()求和函数,可以用来计算总分列。选择I3单元格,使用“公式”→“插入函数”或“自动求和”按钮,可选择Sum()函数,选中求和区域D3:H3,如图9- 3所示,按Enter 键,求和结果显示在单元格中。 通过填充操作完成其余各行总分的计算。

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

实验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)输入宽度:用十进制整数指定输入的宽度(即字符数)。

实验十函数应用答案

实验十函数应用 一?实验目的 1.掌握函数的定义和调用; 2.理解形参和实参的使用和传值调用; 3.理解函数声明的使用; 4.掌握函数的嵌套调用; 5.了解函数的嵌套与递归调用,掌握递归函数的编写规律; 6.了解数组元素、数组名作函数参数。 二?实验学时数 2学时 三?实验步骤 (一)阅读程序 1.#include int fun (int x, int y, int z) { z=x * x + y * y; } main() { int a=38; fun(7,3,a); printf("%d",a); 2.#include void fun (int x,int y ); main() {int x=5,y=3; fun(x,y); printf("%d,%d\n",x,y); } void fun (int x,int y ) { x=x+y; y=x-y;

x=x-y; printf("%d,%d\n",x,y); 3.#include int f (int a); main() { int s[ 8 ] = {1,2,3,4,5,6} ,i, d=0; for (i=0; f( s[i] ) ; i++) d+=s[i]; printf("%d\n",d); } int f(int a) { return a%2; } 4.#include long f( int g) { switch(g) { case 0:return 0; case 1: case 2: return 1; } return ( f(g-1)+ f(g-2)); } main ( ) { long int k; k = f(7); printf("\nk= %d\n",k); }

C语言实验四实验报告——函数

一、实验项目名称 函数 二、实验目的 1.掌握C函数的定义方法、函数的调用方法、参数说明以及返回值。掌握实参与形参的对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法; 2.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法; 3.在编程过程中加深理解函数调用的程序设计思想。 三、实验内容 1.多模块的程序设计与调试的方法; 2.函数的定义和调用的方法; 3.用递归方法进行程序设计。 具体内容: 1.编写一个函数primeNum(int num),它的功能是判别一个数是否为素数。如果num 是素数,返回该数;否则返回0值。 要求: (1)在主函数输入一个整数num,调用该函数后,输出num是否是素数的信息。输出格式为:num is prime或num is not prime。 (2)分别输入以下数据:0,1,2,5,9,13,59,121,运行程序并检查结果是否正确。 2.编写函数computNum( int num),它的功能是计算任意输入的一个正整数的各位数字之和,结果由函数返回(例如:输入数据是123,返回值为6)。 要求:num由主函数输入,调用该函数后,在主函数内输出结果。 3.编写函数,mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。 要求: (1)在主函数中输入一对数据a和b,调用该函数后,输出结果并加以相应的说明。例如:在主函数中输入:10,5 ,则输出:10 is multiple of 5. (2)分别输入下面几组数据进行函数的正确性测试:1与5、5与5、6与2、6与4、20与4、37与9等,并对测试信息加以说明。 4.编写一个计算组合数的函数combinNum(int m,int n)。计算结果由函数返回。 计算组合数的公式是: c(m,n)=m!/(n!*(m-n)!) 要求: (1)从主函数输入m和n的值。对m>n、m

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

C语言:函数的应用实验报告

课程名称:结构化程序设计与C语言开课实验室:年月日 一、实验目的 用C语言编写和调试函数的程序。从而对函数的定义、调用、全局变量的灵活运用有比较深入的了解。 二、内容及结果 1、程序一素数函数 1)程序要求:写一个判断是否是素数的函数,在主函数输入一个整数,调用它后输出结果。2)代码: #include #include int prime(int n) { int i,k; k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0) break; if(i<=k) return 0; else

return 1; } int main() { int prime(int n); int n; printf("Please enter n:"); scanf("%d\n",&n); if(prime(n)==1) printf("%d is a prime number",int(n)); else printf("%d is not a prime number",int(n)); } 3)运行截图: 2、程序二用递归方法求n阶勒让德多项式的值 1)程序要求: 递归公式为: 当n=0,= ) (x P n 1 当n=1, = ) (x P n x; 当n>=1, = ) (x P n((2n-1)x-P n-1(x)-(n-1)P n-2 )x))/n 2)代码: #include

#include int p(int n,int x); void main() { int n,x; scanf("%d",&x); for(n=0;n<=10;n++) printf("p(%d,%d)=%d\n",n,x,p(n,x)); } int p(int n,int x) { if(n==0) return 1; else if(n==1) return x; else return((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n; } 3)运行截图:

相关主题
文本预览
相关文档 最新文档