实验七 函数
函数的应用实验报告
一、实验目的1. 理解函数的概念及其应用。
2. 掌握函数的基本性质和运算。
3. 应用函数解决实际问题。
4. 提高数学思维能力和解决问题的能力。
二、实验内容本次实验主要围绕以下内容展开:1. 函数的定义及性质2. 常见函数的图像和性质3. 函数的运算4. 函数在实际问题中的应用三、实验步骤1. 函数的定义及性质(1)首先,我们学习了函数的定义:设A、B是两个非空数集,如果按照某种确定的对应关系f,使得对于集合A中的任意一个数x,在集合B中都有唯一确定的数y与之对应,则称这种对应关系f为从集合A到集合B的一个函数,记作f:A→B。
(2)接着,我们探讨了函数的基本性质,如单调性、奇偶性、周期性等。
(3)最后,我们分析了函数的图像,了解函数图像与函数性质之间的关系。
2. 常见函数的图像和性质(1)我们学习了幂函数、指数函数、对数函数、三角函数等常见函数的图像和性质。
(2)通过绘制函数图像,我们观察了函数的增减性、对称性、周期性等特征。
(3)我们掌握了如何根据函数图像分析函数性质的方法。
3. 函数的运算(1)我们学习了函数的加法、减法、乘法、除法、复合等基本运算。
(2)通过练习,我们熟练掌握了函数运算的技巧。
(3)我们了解了函数运算在实际问题中的应用。
4. 函数在实际问题中的应用(1)我们学习了如何利用函数解决实际问题,如优化问题、增长率问题等。
(2)通过实例分析,我们掌握了函数在实际问题中的应用方法。
(3)我们提高了运用数学知识解决实际问题的能力。
四、实验结果与分析1. 函数的定义及性质通过实验,我们掌握了函数的定义和基本性质,如单调性、奇偶性、周期性等。
同时,我们了解了函数图像与函数性质之间的关系。
2. 常见函数的图像和性质通过绘制函数图像,我们直观地观察了函数的增减性、对称性、周期性等特征。
这有助于我们更好地理解函数的性质。
3. 函数的运算通过练习,我们熟练掌握了函数的加法、减法、乘法、除法、复合等基本运算。
DSP实验7
实验七:窗函数及其在谱分析中的作用实验目的:在理论学习的基础上,掌握不同窗函数的性质、特点,并通过实验认识它们在克服FFT 频谱分析的能量泄漏和栅栏效应误差中的作用,以便在实际工作中能根据具体情况正确选用窗函数。
实验任务:1.执行下面例程,分析不同窗函数的特点并比较结果。
2.编程实现汉宁窗。
演示其时域和频域波形。
信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。
下图是几种常用的窗函数的时域和频域波形,其中矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高。
下面是四个常用窗函数的示例程序,可在Matlab下执行,注意比较它们的特点。
1.矩形窗:wp=0.2*pi;ws=0.3*pi;rp=.25;as=50;delta1=(10^(rp/20)-1)/(10^(rp/20)+1);delta2=(1+delta1)*(10^(-as/20));deltah=max(delta1,delta2);deltal=min(delta1,delta2);weights=[delta2/delta1 1];deltaf=(ws-wp)/(2*pi);M=ceil((-20*log10(sqrt(delta1*delta2))-13)/(14.6*deltaf)+1); M=M+4;f=[0 wp/pi ws/pi 1];m=[1 1 0 0];h=remez(M-1,f,m,weights);delta_w=2*pi/1000;wsi=ws/delta_w+1;wpi=wp/delta_w;asd=-max(db(wsi:501));figure(4);subplot(211);stem([0:M-1],h);title('actual impulse response') axis([0 M-1 -0.1 0.3]),xlabel('n');ylabel('h(n)')set(gca,'xtick',[0,M-1])set(gca,'ytick',[-0.1 0 0.1 0.2 0.3]),gridsubplot(212);plot(w/pi,db),title('magnitude response in db'), axis([0 1 -80 10]),xlabel('frequency in pi units')ylabel('decibels')set(gca,'xtick',[0 .2 .3 1])set(gca,'ytick',[-50,0])%set(gca,'YTickLabels',['50';'0'])grid2.汉明窗wp=0.2*pi;ws=0.3*pi;tr_width=ws-wp;m=ceil(8*pi/tr_width)+1;n=[0:m-1];wc=(ws+wp)/2;hd=ideal_lp(wc,m);w_ham=(hamming(m))';h=hd.*w_ham;delta_w=2*pi/1000;rp=-(min(db(1:1:wp/delta_w+1)));as=-round(max(db(ws/delta_w+1:1:501)));figure(1)subplot(221);stem(n,hd);title('ideal impuse response')axis([0 m-1 -.1 .3]);ylabel('hd(n)')subplot(222);stem(n,w_ham);title('hamming window')axis([0 m-1 0 1.1]);ylabel('w(n)')subplot(223);stem(n,h);title('actual impulse response')axis([0 m-1 -0.1 .3]);ylabel('h(n)')subplot(224);plot(w/pi,db);title('magnitude response in db');grid axis([0 1 -100 10]);ylabel('decibels')set(gca,'xtickmode','manual','xtick',[0,.2,.3,1])set(gca,'ytickmode','manual','ytick',[-50,0])%set(gca,'yticklabelmode','manual','yticklabels',['50';'0'])3.布莱克曼窗ws1=.2*pi;wp1=.35*pi;wp2=.65*pi;ws2=.8*pi;as=60;tr_width=min((wp1-ws1),(ws2-wp2));m=ceil(12*pi/tr_width)+1;n=[0:m-1];wc1=(ws1+wp1)/2;wc2=(ws2+wp2)/2;hd=ideal_lp(wc2,m)-ideal_lp(wc1,m);w_bla=(blackman(m))'; h=hd.*w_bla;delta_w=2*pi/1000;rp=-min(db(wp1/delta_w+1:wp2/delta_w));as=-round(max(db(ws2/delta_w+1:501)));figure(2)subplot(221);stem(n,hd);title('ideal impulse response')axis([0 m-1 -0.4 0.5]);ylabel('hd(n)')subplot(222);stem(n,w_bla);title('blackman window')axis([0 m-1 0 1.1]);ylabel('w(n)')subplot(223);stem(n,h);title('actual impulse response')axis([0 m-1 -0.4 0.5]);ylabel('h(n)')subplot(224);plot(w/pi,db);title('magnitude response in db');grid ylabel('decibels'),axis([0 1 -150 10])set(gca,'xtickmode','manual','xtick',[0,.2,.35,.65,.8,1])set(gca,'ytickmode','manual','ytick',[-60,0])%set(gca,'yticklabelmode','manual','yticklabels',['60';'0'])4.凯泽窗m=45;as=60;n=[0:m-1];beta=0.1102*(as-8.7);w_kai=(kaiser(m,beta))';wc1=pi/3;wc2=2*pi/3;hd=ideal_lp(wc1,m)+ideal_lp(pi,m)-ideal_lp(wc2,m);h=hd.*w_kai;figure(3)subplot(2,2,1);stem(n,hd);title('ideal impulse response') axis([-1 m -0.2 0.8]);xlabel('n');ylabel('hd(n)')subplot(2,2,2);stem(n,w_kai);title('kaiser window')axis([-1 m 0 1.1]);xlabel('n');ylabel('w(n)')subplot(2,2,3);stem(n,h);title('actual impulse response') axis([-1 m -0.2 0.8]);xlabel('n');ylabel('h(n)')subplot(2,2,4);plot(w/pi,db)title('magnitude response in db');grid;xlabel('frequency in pi units');ylabel('decibels') axis([0 1 -80 10]),set(gca,'xtickmode','manual','xtick',[0,1/3,2/3,1]) set(gca,'ytickmode','manual','ytick',[-60,0])。
实验七连续信号与系统复频域分析的MATLAB实现1
实验七 连续信号与系统复频域分析的MATLAB 实现一、实验目的1. 掌握连续时间信号拉普拉斯变换的MATLAB 实现方法;2. 掌握连续系统复频域分析的MATLAB 实现方法。
二、实验原理1. 连续时间信号的拉普拉斯变换连续时间信号的拉普拉斯正变换和逆变换分别为:⎰∞∞--=dt e t f s F st )()(⎰∞+∞-=j j stds e s F j t f σσπ)(21)(Matlab 的符号数学工具箱(Symbolic Math Toolbox )提供了能直接求解拉普拉斯变换和逆变换的符号运算函数laplace()和ilaplace ()。
下面举例说明两函数的调用方法。
(1)拉普拉斯变换例1.求以下函数的拉普拉斯变换。
)()()2()()()1(221t te t f t e t f t t εε--==解:输入如下M 文件:syms tf1=sym('exp(-2*t)*Heaviside(t)'); F1=laplace(f1) %求f1(t)的拉普拉斯变换 f2=sym('t*exp(-t)*Heaviside(t)'); F2=laplace(f2) 运行后,可得如下结果:F1 = 1/(s+2) F2 = 1/(s+1)^2 (2)拉普拉斯逆变换例2.若系统的系统函数为1]Re[,231)(2->++=s s s s H 。
求冲激响应)(t h 。
解:输入如下M 文件:H=sym('1/(s^2+3*s+2)');h=ilaplace(H) %求拉普拉斯逆变换运行后,可得如下结果:h=exp(-t)-exp(-2*t) 2. 连续系统的复频域分析 若描述系统的微分方程为∑∑===Mj j j Ni i i t f b t ya 0)(0)()()(则系统函数为)()()()()(00s A s B sa sb s F s Y s H Ni ii Mj jj===∑∑== 其中,∑∑====Mj j j Ni i i s b s B s a s A 0)(,)(。
大学生C语言程序设计(第四版 谭洪强)实验7 答案
实验七 参考答案(参考答案)(1) (sy7-1.c )请编写函数fun ,它的功能是:计算并输出n (包括n )以内能被5 或9 整除的所有自然数的倒数之和。
例如,若主函数从键盘给n 输入20后,则输出为s=0.583333。
注意:n 的值要求不大于100。
算法分析:使用for 循环i ,遍历n 包含n 以内的所有整数,逐一判断每个i ,是否满足条件(能被5 或9 整除),如果满足,则把它的倒数累加到累加器里。
注意:i 的倒数要表示成:1.0/i;参考子函数如下:double fun(int n){double sum=0;int i;for(i=5;i<=n;i++)if(i%5==0||i%9==0)sum=sum+1.0/i;return sum;}(2) (sy7-2.c ) 请编写函数fun ,其功能是:根据以下公式计算s ,并计算结果作为函数值返回,n 通过形参传入。
n s ⋯++++⋯++++++=321132112111例如:若n 的值为11时,函数的值为1.83333算法分析:等式右边从第二项(i=2)开始,其分母等于前一项的分母加上i ;一共有n 项;求出每项的分母,然后把每项进行累加。
参考子函数如下:float fun(int n){float sum=1; //sum 中已经累加了第一项的值int i,m=1; //m 表示每项的分母;for(i=2;i<=n;i++){ m=m+i;sum=sum+1.0/m;}return sum;}(3) (sy7-3.c)请编写函数fun,其功能是:将两个两位数的正整数a、b 合并形成一个整数放在c 中。
合并的方式是:将 a 数的十位和个位依次放在c 数的十位和千位上,b 数的十位和个位数依次放在c 数的个位和百位上。
例如,当a=45,b=12,调用该函数后,c=5241。
算法分析:对一个两位数n,它的各位可以通过n%10求的,它的十位数可以通过n/10求的;所以分别用上述方法求的a和b的个位和十位,同时按照要求累加到c里。
MATLAB实验。
MATLAB实验班级:11电气(2)姓名:幸劲昆学号:201124122201实验一 MATLAB 运算基础(一)一、实验目的1、掌握建立矩阵的方法。
2、掌握MATLAB 各种表达式的书写规则以及各种运算方法。
二、实验内容1、求下列表达式的值。
(1)e=2.73;z1=2*sin((85/360)*2*pi)/(1+e^2) z1 =0.2357 (2)()x x z ++=1ln 212,其中⎢⎣⎡-=45.02x ⎥⎦⎤+521i x=[2 ,1+2i;-0.45,5]x =2.0000 1.0000 + 2.0000i -0.4500 5.0000z2=0.5*log(x+sqrt(1+x)) z2 =0.6585 0.6509 + 0.4013i -0.6162 1.0041 (3)a=[-3.0:0.1:3.0];z3=(exp(0.3*a)-exp(0.2*a))./2.*sin(a+0.3);plot(z3)2、已知⎢⎢⎢⎣⎡=33412A 65734 ⎥⎥⎥⎦⎤-7874 和 ⎢⎢⎢⎣⎡=321B 203- ⎥⎥⎥⎦⎤-731 求下列表达式的值:(1)A+6*B 和A-B+I (其中I 为单位矩阵)。
a=[12 34 -4;34 7 87;3 65 7] b=[1 3 -1;2 0 3;3 -2 7] I=eye(3)a =b = I =12 34 -4 1 3 -1 1 0 02 03 34 7 87 0 1 03 -2 7 3 65 7 0 0 1z1=a+6*b z2=a-b+Iz1 = z2 =18 52 -10 12 31 -346 7 105 32 8 8421 53 49 0 67 1(2)A*B和A.*B。
>> a*b >> a.*bans = ans =68 44 62 12 102 4309 -72 596 68 0 261154 -5 241 9 -130 49(3)A^3和A.^3。
实验7JavaScript
实验七 JavaScript程序设计一、实验目的:深刻理解有关函数中变量的作用域和各类控制语句的功能;理解和灵活运用JavaScript中常用的几个对象及浏览器对象的属性和方法;二、实验要求:回顾和复习以前C语言的基本语法知识;进一步加深理解Javascript语法知识;三、实验器材:Windows 2000 Server计算机系统;安装IIS、Dreamweaver MX 2004、Access 2000数据库系统等。
四、实验内容:1、关于变量的作用域调试下列程序,观察并说明窗口中显示的结果;<scr ipt la ngu age="j ava scr ipt">var x=13,y=29;fun cti on tes t(){var nu m,y=10;num=x+y;x++doc ume nt.wri te("内部的num的值为:"+num+”<br>”);}tes t();docu men t.w rit e("测试x的值为:"+x+”<br>”);docu men t.w rit e("测试y的值为:"+y+”<br>”);docu men t.w rit e("外部的n um的值为:"+n um+”<br>”);</sc rip t>2、控制语句与函数的应用,用3种方式实现(if语句、条件表达式、函数调用);根据时间段的不同,在网页中显示不同的问候语,若小时数在12点以前,则输出“早上好!”的问候语,颜色为绿色;若在12点至18点,则输出“下午好!”颜色为黄色;18点以后输出“晚上好!”颜色为黑色。
[参考代码]方法1:<scr ipt la ngu age="j ava scr ipt">v ar cur day=ne w D ate();h our s=c urd ay.get Hou rs();d ocu men t.w rit e("现在是:"+ho urs+"点,");i f (hou rs<=12) {doc ume nt.wri te("<f ont co lor='00ff00'>早上好!</fo nt>");}e lse if(hou rs<=18){d ocu men t.w rit e("<fo nt col or='ff ff00'>中午好!</fo nt>");}e lse{d ocu men t.w rit e("<fo nt col or='000000'>晚上好!</fon t>");}</sc rip t>3、运用windows对象的属性与方法实现动感网页效果;(1)运用JavaScript和windows对象setTimeout方法编程实现在网页中不断显示不同图片的动画效果,有几个按钮控制该动画的不同效果,分别为:放大、缩小、向前、向后、停止、启动;[参考代码]<bod y><img sr c="" a lt="" nam e="my_ima ge" wi dth="32" hei ght="32" i d="my_ima ge" /><Scr ipt La ngu age="J ava Scr ipt">va r i mag e,i=1func tio n i mag e_c han ge() {i f(i==5) {i=1;}my_ima ge.src="I mag e"+i+".jp g";i=i+1;ima ge=setT imeo ut('ima ge_c hang e()',1000);}imag e_c han ge(); //函数调用;</Sc rip t></bo dy>按钮代码:(2)运用JavaScript和windows对象status属性编程实现网站状态行跑马灯式文字效果的显示:“欢迎光临本站”。
实验七 用Maple解常微分方程
实验七用Maple解常微分方程1. 实验目的本实验旨在通过使用数学建模软件Maple来解常微分方程,加深对常微分方程解法的认识和理解。
通过实际操作和观察结果,提高对Maple软件的运用能力。
2. 实验原理常微分方程是描述物理、化学、工程等领域中的连续变化过程的常见数学工具。
解常微分方程可以帮助我们理解系统的演化规律,从而进行预测和控制。
Maple是一款强大的数学软件,其中包含了丰富的求解常微分方程的函数。
通过输入常微分方程的表达式,Maple可以直接给出解析解或数值解。
在本实验中,我们将使用Maple来解常微分方程。
3. 实验步骤3.1 安装Maple软件3.2 打开Maple软件双击桌面上的Maple图标,打开软件。
3.3 输入常微分方程点击菜单栏中的"输入",选择"数学输入",在弹出的对话框中输入常微分方程的表达式。
例如,我们要解的方程是一阶线性常微分方程`dy/dx + y = 0`,则输入表达式为:diff(y(x),x) + y(x) = 03.4 求解方程点击菜单栏中的"执行",选择"执行工作表",Maple将根据输入的方程进行求解。
3.5 查看解析解或数值解Maple会给出方程的解析解或数值解。
根据实验需求,可以选择相应的解进行查看和分析。
3.6 导出结果点击菜单栏中的"文件",选择"导出为",选择导出格式和保存路径,点击"保存",将结果导出为文档或图像文件。
4. 实验结果根据实验中输入的常微分方程,Maple求解得到如下解析解:y(x) = C exp(-x)其中C为任意常数。
5. 实验总结通过本次实验,我们研究了使用Maple软件求解常微分方程的方法。
Maple的强大功能和简便操作使得解常微分方程变得更加容易。
通过实际操作,我们可以深入理解常微分方程的解法和物理意义。
实验七-运算符重载参考答案
实验七-运算符重载参考答案实验七多态性—函数与运算符重载7.1 实验目的1.理解掌握成员函数方式运算符重载;2.理解掌握友元函数方式运算符重载;3.理解掌握++、--运算符的重载。
7.2 实验内容7.2.1程序阅读1.理解下面的程序,并运行查看结果,回答程序后面的问题。
#include <iostream>using namespace std;class CComplex{public:CComplex(){real = 0;imag = 0;}CComplex(int x,int y){real = x;imag = y;}int real;int imag;CComplex operator + (CComplex obj1)//---------------------------------------------①{CComplex obj2(real - obj1.real, imag - obj1.imag);return obj2;}};int main(){CComplex obj1(100,30);CComplex obj2(20, 30);CComplex obj;obj = obj1+obj2; //------------------------------------------------------------------②cout << obj.real <<endl;cout << obj.imag << endl;return 0;}问题一:①处的运算符重载,为什么该函数的返回值要设计成CComplex类型?答:因为在函数中return obj2,obj2是CComplex 类型,所以函数返回值要与return返回的类型相同,即设计成CComplex类型。
问题二:②处的运算符重载函数调用就相当于“obj=operator+(obj1,obj2);”,但是为什么CComplex类中的运算符重载函数只设计了一个参数?答:因为成员函数经编译后会产生this指针,this指针会指向调用该函数的obj1对象,该obj1对象就是就相当于函数的第一个参数。
实验七 虚函数及应用
实验七虚函数及应用一、实验目的1.理解虚函数与运行时(动态)多态性之间的关系,掌握虚函数的定义及应用;2.理解纯虚函数与抽象类的概念,掌握抽象类的定义及应用;3.理解虚析构函数的概念及作用。
二、实验学时课内实验:2课时课外练习:2课时三本实验涉及的新知识㈠虚函数与动态多态性在C++中,如果将基类与派生类的同名成员函数定义为虚函数,就可以定义一个基类指针,当基类指针指向基类对象时访问基类的成员函数,当基类指针指向派生类对象时访问派生类的成员函数,实现在运行时根据基类指针所指向的对象动态调用成员函数,实现动态多态性。
换句话说,虚函数与派生类相结合,使C++能支持运行时(动态)多态性,实现在基类中定义派生类所拥有的通用“接口”,而在派生类中定义具体的实现方法,即“一个接口,多种方法”。
㈡虚函数的定义1.在基类中定义在定义函数的前面加上“virtual ”。
即:virtual 返回类型函数名(参数表){ …… }2.在派生类中定义函数的返回类型、函数名、参数的个数、参数类型及顺序必须与基类中的原型完全相同。
3.说明:⑴在派生类中定义虚函数时,可用“virtual”也可不用“virtual”(最好都使用)。
⑵虚函数在派生类中重新定义时,其原型必须与基类中相同。
⑶必须用基类指针访问虚函数才能实现运行时(动态)多态性;当用普通成员函数的调用方法(即用圆点运算符)调用虚函数时,为静态调用;⑷虚函数在自身类中必须声明为成员函数(不能为友元函数或静态成员函数),但在另一个类中可以声明为友元函数。
⑸虚函数可以公有继承多次,其虚函数的特性不变。
⑹构造函数不能定义为虚函数,但析构函数可以定义为虚函数。
⑺虚函数与重载函数的关系①普通函数重载是通过参数类型或参数的个数不同实现的;重载一个虚函数时,其函数原型(返回类型、参数个数、类型及顺序)完全相同。
②当重载的虚函数只有返回类型不同时,系统将给出错误信息;如果定义的虚函数只有函数名相同,而参数个数或类型不同时,则为普通函数重载。
C程序设计实验题目(下)[宝典]
实验七函数程序设计(二)练习1.用递归方法解决猴子吃桃子的问题(P129习题6.10)。
运行结果:1534练习2.编写一个程序,其中包含一个子函数,功能为删除字符串中指定的某个字符,并显示删除后的字符串。
子函数要求:形式为:vo id delete_string(cha r str[],char ch);运行结果示例:练习3.编写一个程序,其中包含一个子函数,功能为求出一个二维数组(从键盘读入)中每列的最小元素,并依次放入一个一维数组中。
例:子函数要求:形式为:vo id fun(int tt[M][N],int pp[N]);(其中,tt是一个M行N列的二维数组,pp为存放结果的一维数组。
)*练习4.编写一个程序,功能为将一个无序数组b(包含5个元素)中的每个元素插入另一个有序数组a (包含10个元素)中的适当位置,使插入后的数组a依然有序。
其中,包含3个子函数,各函数要求如下:●子函数1:功能为读入一包含n个元素的数组;形式为:voi d i np ut(int a[],i nt n);●子函数2:功能为将一个数值x插入到包含n个元素的有序数组中;●形式为:voi d ins ert(int a[],i nt n,int x);●子函数3:功能为输出一包含n个元素的数组;形式为:voi d o ut p ut(int a[],i nt n);实验八指针程序设计(一)练习1.用指针变量的处理方法编写一个程序,功能为读入一组(10个)数据后,逆向输出。
程序要求:练习2.用指针变量的处理方法编写一个程序,功能为将数组s(共10个元素,由随机数生成)中的数据位置两两对倒,并输出结果。
程序要求:程序中对数组的处理全部使用指针方式。
练习3.用指针变量的处理方法编写一个子函数,功能为从键盘读入一个已经排好序的数组(共10个数),再输入一个数,将此数按次序规律将它插入到数组中后输出结果。
函数要求:实参为指针变量,形参为数组名,且形式为:vo id insert(int x[ ], int m);其中:形参m为要插入的数据;函数无返回值。
C语言上机实验5-12
17.5实验5循环结构程序设计1.实验目的(1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。
(2)掌握在程序设计中循环的方法实现一些常用的算法(如穷举、迭代、递推等)。
(3)进一步学习调试程序。
2.实验内容编程并上机调试运行(1)输入一行字符、分别统计出其中的英文字母、空格、数字和其他字符的个数(本题是教材第5章第4题)在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。
(2)输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。
例如,153是一个水仙花数,因为153=1³+5³+3³(本题是教材第五章第8题)。
(3)猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃,只剩一个桃子了。
求第一天共摘了多少桃子(本题是教材第五章第12题)。
再得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。
请修改程序并运行,检查结果是否正确。
(4)用牛顿迭代法求方程2X³=4x²+3x-6=0在1.5附近的根(本题是教材第五章第13题,学过高等数学的读者可选做此题)。
再得到正确结果后,请修改程序所设的X初始值由1.5改为100,1000,1000,再运行,观察结果,分析不同的x初值对结果有什么影响,为什么?修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。
3.预习内容预习教材第5章。
17.6实验6数组1.实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。
(2)掌握字符数组和字符串函数的使用。
(3)掌握与数组有关的算法(特别是排序算法)。
2.实验内容编程序并上机调试运行。
C语言程序设计实验教学改革申请
《C语言程序设计》实验教学改革申请教务处、理学院:《C语言程序设计》是我校理工科类专业一门重要的基础课,也是其第一门程序设计课程,开课学院及专业见表1,2012-2013-1开课学生人数达1336人(不含2012级专升本学生)。
C语言课程学习终极目标是让学生拥有程序设计的基本思想和方法,能使用C语言来分析和解决实际问题,并能在今后学习和工作中解决和处理现实世界中与其相关的实际问题,因此对学生程序设计能力有很高的要求。
而学生的程序设计能力来自大量的程序设计实践。
为更好地提高学生程序设计能力和配合我校应用型本科教学,建议将《C语言程序设计》实验课程进行改革,改革方案如下:1、C语言程序设计实验学时为24学时,建议独立设课,独立考核;期末单独上成绩。
2、授课方式采用自主学习结合在线答疑方式;3、考核方式(1)实验学习20%,完成规定学习项目即可获得满分(2)实验考核40%,11个实验项目每个实验项目100分,每个实验项目有若干实验题目,满分100分,实验项目得分为实验题目的平均分。
备注:平时考勤计算到实验题目中,实验题目如果不在实验课时间完成,该实验题目最终成绩×80%(3)期末考试40%考试方式为上机考试:考试时间为:90分钟(随堂考试),120分钟(单独安排考试);考试题型:选择题、填空题、改错题、编程题;4、计划安排学时和课外开放学时采用1:1配对实施,详细见表3。
备注:建议改革实施年级自2012级(2013年秋季)开始改革需要学校支持的配套方案1、需要采购高性能服务器两台(一台为在线提交WEB服务器和数据库服务器),增加微机150台;2、购置或定制开发软件系统:C语言实验自主学习平台、C语言在线实验提交平台、C语言实验考试系统、实验室开放管理系统,详细见表2;3、C语言实验自主学习教学工作量计算办法。
附C语言程序设计改革历程(见表4)计算机公共教学部C语言程序设计课程组2012年6月18日表3计划安排和课外开放学时表4 C语言程序设计实验改革历程经过上述改革也取得一定效果,学生玩游戏现象大大降低,学生主动、独立完成实验和实验报告抄袭现象大大减少。
实验七 函数的定义及调用
实验七函数的定义及调用一、实验目的1. 掌握函数的定义、声明及调用方法。
2. 理解实参与形参之间的参数传递过程。
3. 掌握函数的嵌套调用与递归调用方法。
二、实验要点1. 函数的定义格式:数据类型名函数名([形式参数列表]){函数体}2. 函数的调用格式:函数名(实参列表)3. 简单变量和数组作为函数参数时实参与形参之间的参数传递过程。
4. 函数的嵌套调用与递归调用的过程。
5. 局部变量和全局变量、动态变量和静态变量的区别。
三、实验要求1. 上机输入和调试程序并存在自己的软盘上。
2. 检查实验结果是否正确。
四、实验内容(以下内容在实验报告中的实验预习报告内容中完成)1.调试程序,分析输出结果(1)函数reverse 的功能是将a 数组中的内容进行逆置,分析运行结果。
void reverse(int a[],int n){int i,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){int i,b[10]={1,2,3,4,5,6,7,8,9,10};reverse(b,8);for(i=0;i<10;i++)printf("%4d",b[i]);}说明:数组名作实参时,是将数组b 的首地址传给形参数组a,两个数组共占同一段内存单元,形参数组的值发生改变将会影响到实参数组。
(2)输入下面程序,按F7 键跟踪程序的运行过程,分析运行结果。
int f1(int x){int a;a=x*x;return(a);}int f2(int y,int z){int b;b=f1(y+z);printf(“b=%d \n”,b);return(b);}main(){int h;h=f2(5,-3)*f1(8);printf(“%d”,h);(以下内容在实验报告中的实验操作原始记录中完成)2.完成以下填空,并把程序调通,写出运行结果(1) 以下程序的功能是计算下面表达式的值。
C语言实验七函数实验报告
C语言实验七函数实验报告一、实验目的本次 C 语言实验七函数实验的目的在于深入理解和掌握 C 语言中函数的定义、声明、调用以及参数传递等重要概念和操作。
通过实际编写和调试函数相关的程序,提高编程能力和问题解决能力,培养良好的编程习惯和代码结构组织能力。
二、实验环境本次实验使用的编程环境为 Visual Studio 2019 集成开发环境,操作系统为 Windows 10 专业版。
三、实验内容与步骤(一)函数的定义和声明首先,学习了函数的定义格式和声明方法。
函数的定义包括函数头和函数体两部分,函数头指定了函数的返回值类型、函数名和参数列表,函数体则包含了函数的具体实现逻辑。
例如,定义一个计算两个整数之和的函数:```cint add(int a, int b) {return a + b;}```在使用函数之前,需要在程序的适当位置进行函数声明,以告知编译器函数的存在及其参数和返回值类型。
```cint add(int, int);```(二)函数的调用掌握了函数的调用方法,通过传递实际参数来执行函数,并获取返回值。
```cint num1 = 5, num2 = 10;int result = add(num1, num2);printf("两数之和为:%d\n", result);```(三)参数传递学习了值传递和地址传递两种参数传递方式。
值传递是将实参的值复制给形参,在函数内部对形参的修改不会影响实参的值;地址传递则是将实参的地址传递给形参,通过指针在函数内部可以修改实参的值。
```cvoid swap(int a, int b) {int temp = a;a = b;b = temp;}int num3 = 20, num4 = 30;printf("交换前:num3 =%d, num4 =%d\n", num3, num4);swap(&num3, &num4);printf("交换后:num3 =%d, num4 =%d\n", num3, num4);```(四)函数的嵌套调用和递归调用了解了函数的嵌套调用和递归调用的概念和应用。
中国农业大学(烟台)
中国农业大学(烟台)学 大 纲课程名称:C 语言程序设计适用专业:计算机科学与技术(本科)计算机科学技术教研室制2006.6《C 语言程序设计》理论课教学大纲课程名称:C 语言程序设计(The C Programming Language ) 课程类别:基础课学 时:48 学时(总学时72,其中理论48学时、实验课24学时) 学 分:2.5学分(总学分4分,其中理论2.5学分、实验课1.5学分) 考核方式:考试适用专业:计算机科学与技术本科专业 前修课程:高等数学 建议开课学期:第2学期一、课程性质、目的任务《C 语言程序设计》是计算机科学与技术专业的一门必备基础课。
通过系统讲授C 语言的语法和编程方法,使学生掌握程序设计的步骤和方法;通过严格的训练,养成良好的程序设计风格;学会结合专业的实际,编制应用软件等。
下基础。
二、教学基本要求在学习本课程过程中,应按照大纲的要求掌握程序设计基本理论,注重各章节间的联系,同时加强实践技能的训练,达到对本课程系统掌握的目的。
1. 了解C 语言的发展及特点;2. 掌握C 语言程序的组成及上机操作步骤;3. 掌握C 语言的数据及运算;4. 熟练掌握C 语言程序的三种基本结构,设计简单程序;5. 熟练掌握数组、指针、函数的操作应用;6. 掌握C 程序模块化设计方法;7. 了解位运算;8. 掌握C 文件的基本操作; 9. 能设计开发简单应用程序。
四、参考教材及图书资料1. …… 2. ……五、教学方法与考核1.教学方法为充分发挥学生的积极性、主动性,启发引导、培养学生具有自我开拓和获得知识的能力,在内容的讲授上本着“少而精”的原则,突出重点,分解难点,深入浅出,举一反三,着重培养学生分析问题和解决问题能力。
并就课程的各部分内容,分别采用细讲法,培养学生的基本功;采用精讲法,培养学生主动获取知识的能力;采用引导启发式,培养学生分析问题、解决问题的能力。
另不同程度采取课堂讨论式、自学提问式。
实验七 管道pipe和popen通信
实验七管道pipe和popen通信实验目的1. 掌握无名管道pipe的原理2. 掌握管道的应用及重定向。
3. 熟悉popen创建管道的方式及应用程序设计;实验内容1.(1)在命令行下执行ls –l |grep .c命令,查看运行结果。
(2)设计一个程序,要求创建一个管道PIPE,复制进程,父进程运行命令“ls -l”,把运行结果写入管道,子进程从管道中读取“ls -l”的结果,把读出的作为输入运行“grep .c”。
即实现“ls –l |grep .c”功能。
参考课件ch4 P52,54。
#include <stdio.h>#include<signal.h>#include<unistd.h>int main (){int pipe_fd[2];char buf[1000];pid_t result;if(pipe(pipe_fd)<0){printf("用pipe创建管道错误\n");return -1;}result=fork();if(result<0){perror("创建子进程失败");return -1;}else if (result==0){close(0);dup2(pipe_fd[0],0);execlp("grep","grep",".c",NULL);}else{close(1);dup2(pipe_fd[1],1);execlp("ls","ls","-l",NULL);wait(0);}return 0;}2.(1)在命令行下执行$touch file.txt $ls –l >file.txt, cat命令查看file.txt内容。
(2)设计一个程序,要求利用popen函数,实现“ls –l > file.txt”的重定向功能,file.txt在程序中创建。
《程序设计基础》课程标准
《程序设计基础》课程标准课程编号:030501ZB适用专业:计算机、电子、电气课程类型:专业基础课课程性质:必修课课程学时:60 课程学分:4一、课程定位本课程是计算机、嵌入式、电子以及电气专业的一门专业基础课程,也是其它相关专业研究计算机控制以及嵌入式、物联网技术等的一门基础和工具课程。
本课程的主要任务是使学生掌握模块化、结构化编程的基本思想,学会使用C语言编制简单的应用程序,解决一般性应用问题,并有一定的上机操作及调试程序能力。
本课程的先导课程为计算机信息基础,后续课程为android、软件工程、单片机、嵌入式开发技术。
通过掌握C语言的各种语法、数组、函数、位运算等知识,为后续课程奠定语言基础。
二、课程目标1. 能力目标(1)能用C语言进行结构化的程序设计;(2)能用C语言解决一维数据的存储;(3)能用C语言解决库函数及自定义函数的调用;(4)能用C语言解决二进制数据的位运算。
2. 知识目标(1)理解模块化、结构化程序设计思想;(2)掌握C语言的数据类型、语句格式、程序设计结构等基本内容;(3)掌握C语言的数组、函数、位运算等基本内容;(4)熟悉C语言的环境和常规调试方法。
3.素质目标(1)初步具备复用性设计、模块化思维能力;(2)具有热爱科学,团队意识、创新意识和创新精神;(3)具有规范化的代码编写和文档书写习惯;(4)加强职业道德意识;三、课程内容与学时分配四、教学设计1.整体教学设计以结构化程序设计为框架,首先,以顺序结构、选择结构、循环结构为核心,突出程序设计的基本理念及技能,其次,采用项目牵引的方法,让学生理解和学习数组、函数和位运算等知识,最终的目的是使学生能应用C语言程序解决实际问题。
教学过程中,通过分组讨论、知识问答、单元测试等教学活动,课外,通过第二课堂、兴趣小组、技能培训等多种途径,并且充分开发学习资源,包括PPT、动画、在线课程等,给学生提供丰富的学习机会。
教学方法主要采用知识讲授法、引导启发法、案例教学等方法,每章配有实验课,让学生消化吸收理论知识,进一步提高编程水平。
[练习]C语言实验七、函数程序设计答案
实验七 函数及程序结构(二)一、实验目的1.掌握函数的嵌套调用和递归调用2.掌握数组做函数参数的用法3.掌握全局变量和局部变量的用法。
?4.掌握变量的存储类别。
?二、实验内容1.[目的]掌握函数的嵌套调用方法。
[题目内容] 编写程序计算cb a 。
要求设计主函数main()读取a 、b 、c 的值,并调用ratio 函数计算a/(b-c)的值。
如果(b-c)=0那么ratio 就不能计算,因此,ratio 函数调用另一个函数dif ,以测试(b-c)的差是否为零,如果b 不等于c ,dif 返回1,否则返回0。
[输入] a 、b 、c 的值[输出] 计算结果[提示] main 函数调用ratio 函数,ratio 函数调用dif 函数。
三个函数平行定义,嵌套调用。
#include <stdio.h>void main(){float ratio(int x,int y ,int z);int dif(int x,int y);int a,b,c;float d;printf("请输入a,b,c:");scanf("%d%d%d",&a,&b,&c);d=ratio(a,b,c);if(d==0.0) printf("b-c 为零。
");else printf("%d/(%d-%d)=%f\n",a,b,c,d);}float ratio(int x,int y ,int z){if(dif(y ,z)==1) return (float)x/(float)(y-z);else return 0.0;}int dif(int x,int y){if(x==y) return 0;else return 1;}2.[目的]利用标准库提供的随机数功能。
[题目内容]编写程序,帮助小学生练习乘法计算。
实验七4编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)。。。
请将同一次作业或实验放到一起不分开发布实验和作业不要混交实验和作业要有运行结果提交的作业和实验标题不清楚请用下面命名方式修改每次作业和实验的标题
实验七 4编写程序,输入一批学生的成绩,遇 0或负数则输入结 束,要求统计并输出优秀(大于 85)。。。
#include<stdio.h> int main(void) {
if(scores>85){/*判断满足条件*/ x=x+1; } else if((scores>=60)&&(scores<=84)){ y=y+1; }
else{ z=z+1;
} scanf("%lf",&scores); }
printf(">=85:%d ",x);
printf("60-84:%d ",y);
printf("<60:%d ",z);
return 0;
}
x=0;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七函数(一)
1.实验目的
(1)熟悉定义函数的方法
(2)熟悉声明函数的方法
(3)熟悉调用函数时实参与形参的对应关系,以及“值传递”的方式
(4)学习对多文件的程序的编译和运行
2.实验内容
编程序并上机调试运行之
(1)写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息
本程序应当准备以下测试数据: 17,34,2,1,0。
分别运行并检查结果是否正确。
要求所编写的程序,主函数的位置在其他函数之前,在主函数中对其所调用的函数作声明。
进行以下工作:
<1>输人自己编写的程序,编译和运行程序,分析结果
<2>将主函数的函数声明删掉,再进行编译,分析编译结果
<3>把主函数的位置改为在其他函数之后,在主函数中不含函数声明
<4>保留判别素数的函数,修改主函数,要求实现输出100~200之间的素数(2)写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出
<1>输人程序,编译和运行程序,分析结果
<2>分析函数声明中参数的写法。
先后用以下两种形式
i: 函数声明中参数的写法与定义函数时的形式完全相同,如
void cpy(char s[ ],char c[ ]);
ii:函数声明中参数的写法与定义函数时的形式基本相同,但省略写数组名。
如:
void cpy(char[ ],char[ ]) ;
分别编译和运行,分析结果。
思考形参数组为什么可以不指定数组大小。
<3>如果随便指定数组大小行不行,如:
void cpy(char s[40 ],char [40])
请分别上机试一下。
(3)输人10个学生5门课的成绩,分别用函数实现下列功能:
<1>计算每个学生平均分;
<2>计算每门课的平均分;
<3>找出所有50个分数中最高的分数所对应的学生和课程
(4)用一个函数来实现将一行字符串中最长的单词输出。
此行字符串从主函数
传递给该函数
<1>把两个函数放在同一个程序文件中,作为一个文件进行编译和运行。
<2>把两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和
运行。