实验答案--函数
- 格式:docx
- 大小:29.74 KB
- 文档页数:20
实验一 MATLAB入门(1)1.实验目的:(1)了解MATLAB的体系结构与特点,熟悉其集成开发环境。
(2)熟悉MATLAB界面窗口的功能和使用方法。
(3)熟悉MATLAB的帮助系统及使用方法。
(4)了解MATLAB的的数据类型、基本形式和数组的产生方法。
(5)掌握MATLAB基本的数学运算操作。
2.实验原理(1)MATLAB简介MATLAB是美国MathWorks公司开发的高性能的科学与工程计算软件。
它在数值计算、自动控制、信号处理、神经网络、优化计算、小波分析、图像处理等领域有着广泛的用途。
近年来, MATLAB在国内高等院校、科研院所的应用逐渐普及,成为广大科研、工程技术人员必备的工具之一。
MATLAB具有矩阵和数组运算方便、编程效率极高、易学易用、可扩充性强和移植性好等优点,俗称为“草稿纸式的科学计算语言”。
它把工程技术人员从繁琐的程序代码编写工作中解放出来,可以快速地验证自己的模型和算法。
经过几十年的扩充和完善,MATLAB已经发展成为集科学计算、可视化和编程于一体的高性能的科学计算语言和软件开发环境,整套软件由MATLAB开发环境、MATLAB语言、MATLAB数学函数库、MATLAB图形处理系统和MATLAB应用程序接口(API)等五大部分组成。
MATLAB的主要特点包括强大的计算能力(尤其是矩阵计算能力)、方便的绘图功能及仿真能力、极高的编程效率。
另外,MATLAB还附带了大量的专用工具箱,用于解决各种特定领域的问题。
通过学习软件的基本操作及其编程方法,体会和逐步掌握它在矩阵运算、信号处理等方面的功能及其具体应用。
通过本课程实验的学习,要求学生初步掌握MATLAB的使用方法,初步掌握M文件的编写和运行方法,初步将MATLAB运用于数字信号处理中。
循序渐进地培养学生运用所学知识分析和解决问题的能力。
(2)MATLAB的工作界面(Desktop)与操作MATLAB 安装成功后,第一次启动时,主界面如下图(不同版本可能有差异)所示:其中① 是命令窗口(Command Window ),是MATLAB 的主窗口,默认位于MATLAB界面的右侧,用于输入命令、运行命令并显示运行结果。
实验六函数一、实验目的1. 熟练掌握函数的定义、函数的类型和返回值。
2. 熟练掌握形式参数与实际参数、参数值的传递。
3. 掌握函数的嵌套调用与递归调用。
4.学会使用指向函数的指针变量。
5.了解指向指针的指针的概念及带参数的main函数。
6. 掌握局部变量和全局变量。
7. 掌握变量的存储类型。
8. 了解内部函数和外部函数。
二、实验学时:8课时三、预习知识1.标准库函数标准库函数是C系统提供的,这些库函数定义了一些基本的、常用的功能,用户可以使用这些库函数,但是在使用库函数之前需要用预编译命令# include将该库函数所在的头文件包含进来。
2.自定义函数定义函数一般有两种形式形式1:存储类型类型符函数名(类型符形参1,类型符形参2 ,… ) { 说明语句执行语句}形式2:存储类型类型符函数名(形参1,形参2 ,……)形参类型说明{ 说明语句执行语句}说明:①形参表中即使没有参数,函数名后的一对圆括号也不能省略。
②函数名前的类型符是用来说明函数返回值的数据类型(也作为函数的数据类型) 。
当函数值为整型时,类型符可以省略。
③当函数只完成某一特定操作不需要返回值时,可用类型标识符 void 说明,将函数定义成空类型。
④C 规定:不允许在一个函数内部再定义另外一个函数,即函数不允许嵌套定义。
⑤函数的存储类型:函数的存储类型有 extern 和 static 两种。
extern 型的函数除了可以被本程序中其它函数调用外,还可以被其它文件中的函数调用,这种函数称为外部函数,如果定义函数时省略 extern ,则隐含为外部函数。
static 型的函数只能被本源程序文件中的函数调用,称为内部函数(静态函数)。
3.函数的参数(1)在定义函数时函数名后面括号中的变量称为形参(形式参数),如果有两个以上形参,形参之间以逗号分隔。
形参是函数的内部变量,只在函数内部才有意义。
在未出现函数调用时,形参不占内存。
对每个形参必须指明其名字和数据类型。
C语言程序设计实验指导含答案实验一:C语言程序设计基础实验内容:本实验主要以C语言的基础语法为主,通过一些简单的示例和练习来帮助学生熟悉C语言的基本概念和语法规则。
实验步骤:1. 编写一个简单的C程序,输出"Hello, World!"。
要求程序能够顺利编译并执行。
答案:#include <stdio.h>int main(){printf("Hello, World!");return 0;}2. 基于上一题的程序,修改代码,要求程序输入一个整数,并将其乘以2输出。
答案:#include <stdio.h>int main(){int num;printf("请输入一个整数:");scanf("%d", &num);printf("乘以2的结果为:%d", num * 2);return 0;}3. 编写一个C程序,输入一个圆的半径,计算并输出其面积和周长。
要求保留2位小数。
答案:#include <stdio.h>#define PI 3.14159int main(){float radius;printf("请输入圆的半径:");scanf("%f", &radius);float area = PI * radius * radius;float circumference = 2 * PI * radius;printf("圆的面积为:%.2f\n", area);printf("圆的周长为:%.2f\n", circumference);return 0;}实验二:循环和判断语句实验内容:本实验主要通过不同的练习来帮助学生熟悉和掌握C语言中的循环和判断语句的使用方法。
第五次实验题目-第七章函数教学目标31.一元二次方程的系数:a、b、c由主函数输入,编写函数求方程的根。
#include <stdio.h>#include <math.h>void root(double a, double b, double c){ double delta,x1,x2,m,n;if (fabs(a) <= 1e-6){if (fabs(b) <= 1e-6)puts("Not an equation");elseprintf("x=%.2lf",-c/b);return;}else{delta=b*b - 4*a*c;m = -b / (2*a);n = sqrt(fabs(delta)) / (2*a);x1 = m + n;x2 = m - n;if (fabs(delta) <= 1e-6)printf("x1=%.2lf, x2=%.2lf", x1, x1);else if (delta < 0)printf("x1=%.2lf+%.2lfi, x2=%.2lf-%.2lfi",m,n,m,n);elseprintf("x1=%.2lf, x2=%.2lf", x1, x2);}}int main( ){ double a,b,c;scanf("%lf%lf%lf",&a,&b,&c);root(a,b,c);return 0;}教学目标32.输入一串字符,统计其中英文字母的个数,编写统计英文字母个数的函数。
#include<stdio.h>int numberOfLetter(char str[]) {int i=0;int num = 0;//统计字母个数while (str[i]!=’\0’) {if ((str[i]>='A'&& str[i]<='Z')||( str[i]>='a'&& str[i]<='z')) num++;i++;}return num;}int main( ) {char str[100];int letterNum;printf("Enter a string: ");gets(str);letterNum = numberOfLetter(str);printf("Number of letters is %d.\n", letterNum);return 0;}教学目标33. 求100以内所有素数的和。
实验2 顺序结构程序设计1. 编写程序,从键盘输入一个大写字母,将它转换为对应的小写字母后输出。
参考程序:#include "stdio.h"void main(){char ch;printf(“\nPlease input a capital character:”);scanf(“%c”,&ch);ch=ch+32;printf(“\nThe small letter is %c”,ch);}2.编写程序,输入圆半径r ,求圆周长、圆面积、圆球体积。
参考程序:#include <stdio.h>#include <math.h>#define PI 3.14void main(){float r,c,area,v;printf(“\nPlease input the r:”);scanf(“%f”,&r);c=2*PI*r;area=PI*r*r;v=4.0/3*PI*pow(r,3);printf(“\nThe circle’s perimeter is %.2f”,c);printf(“\nT he circle’s area is %.2f”,area;printf(“\nThe circle’s volume is %.2f”,v);}3. 输入一个华氏温度,要求输出摄氏温度。
公式为:()3295-=F c 输出要有文字说明,取2位小数。
参考程序:#include <stdio.h>void main(){float f,c;printf(“\nPlease input a F temperature:”);scanf(“%f ”,&f);c=5.0/9*(f-32);printf(“\nThe temperature is %.2f ”,c);}4. 有3个电阻r1、r2、r3并联,编写程序计算并输出并联后的电阻r 。
实验十 参考答案(指针)三、实验内容( 按要求完善或设计以下程序,并调试分析运行结果)1. 程序填空题 给定程序BLACK10-1.C 中,函数fun 的功能是:将形参n 所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n 传回所指变量。
例如,输入一个数:27638496,新的数:为739。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
【解题思路】第一处:t 是通过取模的方式来得到*n 的个位数字,所以应填:10。
第二处:判断是否是奇数,所以应填:0。
第三处:最后通形参n 来返回新数x ,所以应填:x 。
2. 程序改错题 给定程序MODI10-1.C 中函数fun 的功能是: 计算n 的5次方的值(规定n 的值大于2、小于8),通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回。
例如,7的5次方是16807, 其低3位数的和值是15。
【解题思路】第一处:变量d 的初始值应为1。
第二处:整除的符号是 /。
3. 程序设计题 请编写函数fun ,它的功能是:求出能整除形参x 且不是偶数的各整数,并按从小到大的顺序放在pp 所指的数组中,这些除数的个数通过形参n 返回。
例如,若 x 中的值为: 35,则有 4 个数符合要求,它们是: 1, 5, 7, 35。
【解题思路】本题是求出能整除形参x 且不是偶数的各整数,并按从小到大的顺序放在pp 所指的数组中,这些除数的个数通过形参n 返回。
【参考答案】void fun ( int x, int pp[], int *n ){ int i; *n=0;for(i=1; i <= x; i++)if((x % i== 0) && (i % 2)) pp[(*n)++]=i;}4. 程序填空题 给定程序中,函数fun 的功能是:找出N ×N 矩阵中每列元素中的最大值,并按顺序依次存放于形参b 所指的一维数组中。
实验3 函数的极值以及符号表达式的计算-答案1、求函数)sin()(t t e t f t -=在[0,1]内的最小值点以及最小值。
编辑ff2.m 文件:function f=ff(t)f=exp(t)-t*sin(t);调用函数>> [t,favl]=fminbnd('ff',0,1)t =6.6107e-005favl =1.00012、对以下表达式进行因式分解,然后再将分解的结果进行展开,检查因式分解结果是否正确。
(1)12234++++x x x x(2)6555234-++-x x x x(1)>> syms x>> f=x^4+x^3+2*x^2+x+1;>> s=factor(f)s =(x^2+x+1)*(x^2+1)>> expand(s)ans =x^4+x^3+2*x^2+x+1(2)>> syms x>> f= x^4-5*x^3+5*x^2+5*x-6;>> s=factor(f)s =(x-1)*(x-2)*(x-3)*(x+1)>> expand(s)ans =x^4-5*x^3+5*x^2+5*x-63、对以下表达式进行化简。
(1)123842+++x x x(2)x x 22sin cos 2-(1)>> syms x>> f=(4*x^2+8*x+3)/(2*x+1);>> s=simplify(f)s =2*x+3(2)>> syms x>> f=2*cos(x)^2-sin(x)^2;>> s=simplify(f)s =3*cos(x)^2-14、求下列函数的极限。
(1)4586lim 224+-+-→x x x x x (2)x x x /)sin(lim 0→ (1)>> syms x>> f=(x^2-6*x+8)/(x^2-5*x+4);>> limit(f,x,4)ans =2/3(2)>> syms x>> limit(sin(x)/x,x,0)ans =15、 首先作出函数)/1cos(x y =在区[-1,-1e-6]区间上的图形,观测图形在0=x 附近的形状,判断)/1cos(x y =函数在0=x 极限的存在性。
实验六函数一,实验目的:1,掌握定义函数的方法.2,掌握函数实参与形参的对应关系,以及"值传递"的方式.3,掌握函数的嵌套调用和递归调用的方法.4,掌握全局变量和局部变量动态变量,静态变量的概念和使用方法.二,实验准备:1,复习函数调用的基本理论知识.2,复习函数的嵌套调用和递归调用的方法.3,复习全局变量,局部变量;静态变量,动态变量;外部变量等概念和具体使用. 4,源程序.三,实验步骤及内容:1,运行程序并回答问题(1)程序main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n")}void print_message(){ printf("Good Friend! \n");}void play(n)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}}问题:运行后出现什么错误为什么应如何修改请上机调试.修改:main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n");(缺少分号)}void print_message(){ printf("Good Friend! \n");}play(n)(原先void的与声明类型不同)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}getch();}运行结果(2)以下程序用于计算1+2+3+4+5.main(){ int i,sum;for(i=1;i<=5;++i)sum=add(i);printf("sum=%d\n",sum);getch();}add (a)int a;{static int s=0;s=s+a;return(s);}运行结果:问题:此程序能否得到正确结果为什么请在不增加语句的条件下,修改程序并上机调试.(3)程序int x=567,y=890;main(){ printf("x=%d,y=%d\n",x,y);}运行结果:问题:运行程序后出现什么错误为什么如何修改答:定义位置出错,y的定义在主函数之后了,将y的定义改在和x一样的位置处。
实验4 函数程序填空1.普通参数本题分值:4题目描述:输入日期的年份和月份,求该月有多少天。
要求编写函数int daynum(int year,int month),求出以year为年份、以month为月份的某个月的天数。
以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。
代码://通过日期求某月的天数。
#include<iostream>using namespace std;int main(){int daynum(int year,int month);int y,m,d;cin>>y>>m;if(y<1900 || y>=3000 || m<1 || m>12){cout<<"输入错误!"<<endl;return 0;}d=daynum(__(1)__); //以y、m作实参调用函数,求出该月的天数cout<<"此月的天数为"<<d<<endl;return 0;}int daynum(int year,int month){int days;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12: days=31; break;case 4:case 6:case 9:case 11: days=30; break;case 2: if(year%4==0&&year%100!=0 || year%400==0)days=29;elsedays=28;break;}return __(2)__;}答案:(1) y,m(2) days每空分值:2参考答案:yx3-t1.cpp2.字符数组参数本题分值:4题目描述:编写一个函数,用来求字符串s的任意子串。
实验七八 函 数(一) 参考答案1.请编写程序sy8-1.cpp ,要求:(1)设计一个fun 函数用来计算并输出n (包括n )以内能被5 或9 整除的所有自然数的倒数之和。
(2)在主函数中输入数据,调用fun 函数,输出结果。
例如,若主函数从键盘给n 输入20后,则输出为s=0.583333。
【解题思路】用循环穷举1~n 之间各数,若余5等于0或余9等于0,则将其表示为倒数并累加即可。
注意分式若需要得到实数结果则必须至少有一个操作数是实数类型。
【参考答案】#include <stdio.h>double fun(int n){ double s=0;int i;for(i=1;i<=m;i++)if(i%5==0||i%9==0)s=s+1.0/i;return s;}main( ){ int n;double s;printf("\nInput n: ");scanf("%d",&n);s=fun(n);printf("s=%f\nlf",s);}2.请编写程序sy8-2.cpp ,要求:(1)设计一个fun 函数用来计算下列多项式的值。
(2)在主函数中输入数据,调用fun 函数,输出结果。
例如:若n 的值为11时,函数的值为1.83333【解题思路】根据多项式各项的变化规律可以看出各项的分子为常量1,分母是从1到n 累加和。
【参考答案】#include <stdio.h>float fun(int n){ float sum=0,s=0; //sum 存多项式的累加和,s 存分母的累加和int i;for(i=1;i<=n;i++){ s=s+i; //先求分母的累加sum=sum+1/s;}return sum;}main()n s ⋯++++⋯++++++=321132112111{int n; float s;printf("\nPlease enter n:");scanf("%d", &n);s = fun(n);printf("the result is: %f\n", s);}3.请编写程序sy8-3.cpp,要求:(1)设计一个fun函数,其功能是:将两个两位数的正整数a、b 合并形成一个整数放在c 中。
1. 作出函数[]53()3123,2,2f x x x x x =+-+∈-的图像.第1题图2. 求下列各极限.(1)1lim 1nn n →∞⎛⎫- ⎪⎝⎭; (2)sin lim x x x →∞;(3)0sin lim x x x →; (4)10lim x x e +→.解(1)11lim 1enn n →∞⎛⎫-= ⎪⎝⎭; (2)sin lim 0x x x →∞=;(3)0sin lim 1x xx →=; (4)12lim e x x e →3. 求方程20.2 1.70x x --=的近似解(精确到0.0001). 解 1 1.2077x ≈-,2 1.4077x ≈. 4. 探究高级计算器的其他功能.(略)1. 求函数3(21)y x x =-的导数; 操作:在命令窗口中输入:>> syms xy=x^3*(2*x -1); dy=diff(y) 按Enter 键,显示:dy = 3*x^2*(2*x -1)+2*x^3 继续输入:>> simplify(dy) % 将导数化简 按Enter 键,显示: ans =8*x^3-3*x^2即 3283y x x '=-. 2. 求函数()ln 1y x x =-+的二阶导数; 操作:在命令窗口中输入: >> syms xy=1-log(1+x); dy=diff(y,x,2) 按Enter 键,显示: dy = 1/(1+x)^2即 21(1)y x ''=+. 3.函数4322341y x x x x =-+-+在区间[-3,2]上的最小值. 操作:在命令窗口中输入:>>x=fminbnd('x^4-2*x^3+3*x^2-4*x+1',-3,2) y=x^4-2*x^3+3*x^2-4*x+1 按Enter 键,显示: x =1 y =-11.求下列不定积分(1)在命令窗口中输入: >> syms xint(x/(sqrt(x^2+1)),x)按键Enter 键,显示结果: ans = (x^2+1)^(1/2)即c +.(2)在命令窗口中输入: >> syms xint(x^3*cos(x))按键Enter 键,显示结果:ans =x^3*sin(x)+3*x^2*cos(x)-6*cos(x)-6*x*sin(x) 即332cos =sin 3cos 6cos 6sin x xdx x x x x x x x c +--+⎰. 2.求下列定积分(1)在命令窗口中输入: >> int((-3*x+2)^10,x,0,1) 点击Enter 键,显示结果: ans = 683/11 即1100683(-3+2)d =11x x ⎰. (2)在命令窗口中输入: >> int(x*sin(x),x,0,pi/2)点击Enter 键,显示结果: ans = 1 即 π20sin d =1x x x ⎰.3.求广义积分0e d x x x -∞⎰.操作:在命令窗口中输入: >>int(x*exp(x),x,-inf,0)按Enter 键,显示结果: ans =-1 即e d =1xx x -∞-⎰.1. 230y y y '''++=.操作:在命令窗口中输入: >> syms x y;y=dsolve('D2y -4*Dy -5*y=0','x') 显示:y =C1*exp(5*x)+C2*exp(-x)即满足所给初始条件的特解为:512xx y c e c e -=-.2. 232sin xy y e x '''-=.操作:在命令窗口中输入: >> syms x y;y=dsolve('D2y -3*Dy=2*exp(3*x)*sin(x)','x') 显示:y = -3/5*exp(3*x)*cos(x)-1/5*exp(3*x)*sin(x)+1/3*exp(x)^3*C1+C2即满足所给初始条件的特解为:33312311cos sin 553xxxy e x e x c e c =--++. 整理得:33213cos +sin 5xxy e x x ce c =-++()(令113c c =)3. +cos x y y y e x '''+=+,00x y ==,032x y ='=.操作:在命令窗口中输入: >> syms x y;y=dsolve('D2y+Dy+y=exp(x)+cos(x)','y(0)=0', 'Dy(0)=3/2', 'x') 显示:y = -1/3*exp(-1/2*x)*cos(1/2*3^(1/2)*x)+1/3*exp(x)+sin(x)即满足所给初始条件的特解为:211cos()sin 323x xy e e x -=-++.1. 绘制平面曲线ln y x =. 操作:在命令窗口中输入: >> x=1:0.02: exp(2); y=log(x); plot(x,y);按Enter 键,显示下图:2. 绘制空间曲面2232z x y =-. 操作:在命令窗口输入 >>[x,y]=meshgrid(-4:0.5:4); z=-3*x.^2-2*y.^2; surf(x,y,z)按Enter 键,显示下图:3. 绘制空间曲线23,23.t t t x e y e z e ---⎧=⎪⎪=⎨⎪=⎪⎩操作:在命令窗口输入>>t=0:0.01:1;x=exp(-t);y=exp(-2*t)/4;z=3*exp(-3*t)/9;plot3(x,y,z)按Enter键,显示下图:实验6作业题1. 求函数cos z xy =的偏导数. 操作:在命令窗口中输入:>> dz_dx=diff('cos(x*y)', 'x ') 显示dz_dx = -sin(x*y)*y 继续输入:>> dz_dy=diff('cos(x*y)', 'y ') 显示:dz_dy =-sin(x*y)*x即sin zx xy x∂=-∂, sin z x xy y ∂=-∂2. 计算函数23y x y =-的极值.操作:在matlab 中依次选择“File\New\M -File ”,在弹出的M 文件编辑窗口中在命令窗口中输入:clear all;clc syms x y;z=x^3-6*x-y^3+3*y;dz_dx=diff(z,x); %计算z 对x 的偏导数 dz_dy=diff(z,y); %计算z 对y 的偏导数 [x0,y0]=solve(dz_dx,dz_dy); %求驻点x0,y0A_=diff(z,x,2); %计算z 对x 的二阶偏导数B_=diff(diff(z,x),y); %计算z 对x,y 的二阶混合偏导数 C_=diff(z,y,2); %计算z 对y 的二阶偏导数 x0=double(x0); %数据转换 y0=double(y0);n=length(x0); %计算x0中元素的个数 for i=1:nA_x=subs(A_, x,x0(i)); %把x=x0(i)(即x0的第i 个元素值)代入z 对x 的二阶偏导数A=subs(A_x, y,y0(i)); %继续把y=y0(i)(即y0的第i 个元素值)代入z 对x 的二阶偏导数,得到AB_x=subs(B_, x,x0(i)); %把x=x0(i)代入z 对x 、y 的二阶混合偏导数 B=subs(B_x, y,y0(i)); %继续把y=y0(i)代入二阶混合偏导数,得到B C_x=subs(C_, x,x0(i)); %把x=x0(i)代入z 对y 的二阶偏导数C=subs(C_x, y,y0(i)); %继续把y=y0(i)代入z 对y 的二阶偏导数,得到C D=A*C-B^2;text=['原函数在(',num2str(x0(i)), ', ',num2str(y0(i)), ')处' ]; if D>0fm=subs(x^3-6*x-y^3+3*y,{x,y},{x0(i),y0(i)}); %求函数值 if A>0disp([text, '有极小值',num2str(fm)]) %在命令窗口中输出 elsedisp([text, '有极大值',num2str(fm)])end end if D==0disp([text, '的极值情况还不确定,还需另作讨论' ]) end end保存后,选择M 文件编辑窗口中的“Debug\run ”,显示如下结果: 原函数在(1.4142,-1)处有极小值-7.6569 原函数在(-1.4142,1)处有极大值7.65693. 计算(2)d d Dx y x y -⎰⎰,D :顶点分别为(0,0),(1,1)和(0,1)的三角形闭区域;操作:在命令窗口中输入: >>syms x y;S=int(int(2*x-y,y,0,1-x),x,0,1) 显示: S=1/6即:二重积分1(2)d d =6Dx y x y -⎰⎰.实验7作业题1. 将函数xx f -=11)(展开为幂级数,写出展开至6次幂项. 操作:在命令窗口中输入: >> clear;clc syms x; f=1/(1-2*x); taylor(f,7,x) 显示:ans = 1+2*x+4*x^2+8*x^3+16*x^4+32*x^5+64*x^6即65432643216842111x x x x x x x ++++++=-. 2. 求函数2()tf t e =的拉氏变换.操作:在命令窗口中输入: >> clear;clc syms x;laplace(exp(2*t)) 显示: ans = 1/(s -2)即 21)(2-=s e L t. 3.求函数22()56s F s s s +=-+的拉氏逆变换.操作:在命令窗口中输入: >>syms silaplace((s+2)/(s^2-5*s+6)) 显示:ans =-4*exp(2*t)+5*exp(3*t)即 12256s L s s -+⎡⎤⎢⎥-+⎣⎦234e 5e t t =-+.。
《c语言程序设计》实验指导书答案《C语言程序设计》实验指导书答案实验一:C语言环境搭建与基本语法1. 问题:如何在计算机上搭建C语言开发环境?答案:搭建C语言开发环境通常需要安装编译器和集成开发环境(IDE)。
常见的编译器有GCC,而IDE如Visual Studio Code、Code::Blocks等。
安装完成后,配置好编译器路径,即可开始编写和编译C语言程序。
2. 问题:C语言的基本数据类型有哪些?答案:C语言的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)以及更复杂的结构体(struct)和联合体(union)等。
3. 问题:如何定义一个变量?答案:定义变量的基本语法是:`类型名变量名;`。
例如,定义一个整型变量a:`int a;`。
4. 问题:如何实现变量的输入和输出?答案:使用`scanf`函数进行输入,使用`printf`函数进行输出。
例如,输入一个整数并输出:`scanf("%d", &a); printf("%d", a);`。
实验二:控制结构1. 问题:C语言中的条件语句有哪些?答案:C语言中的条件语句主要有`if`语句和`switch`语句。
2. 问题:如何使用`if`语句?答案:`if`语句的基本语法是:`if (条件) { 语句 }`。
例如,判断一个数是否为正数:`if (a > 0) { printf("正数"); }`。
3. 问题:如何使用`switch`语句?答案:`switch`语句用于多条件分支选择。
基本语法是:`switch (表达式) { case 常量1: 语句1; break; case 常量2: 语句2; break; ... default: 默认语句; }`。
4. 问题:C语言中的循环语句有哪些?答案:C语言中的循环语句主要有`for`循环、`while`循环和`do-while`循环。
c语言程序设计实验指导书答案C语言程序设计实验指导书是帮助学生理解和掌握C语言编程技能的重要工具。
本指导书旨在通过一系列实验,引导学生从基础语法到高级编程技巧,逐步提高编程能力。
以下是一些实验题目和相应的答案示例,以供参考。
实验一:C语言基础语法实验目的:- 熟悉C语言的基本语法结构。
- 掌握变量声明、数据类型和运算符的使用。
实验内容:1. 编写一个程序,输入两个整数,输出它们的和、差、积和商。
实验答案:```c#include <stdio.h>int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);printf("和是:%d\n", num1 + num2);printf("差是:%d\n", num1 - num2);printf("积是:%d\n", num1 * num2);if (num2 != 0) {printf("商是:%d\n", num1 / num2);} else {printf("除数不能为0。
\n");}return 0;}```实验二:控制结构实验目的:- 掌握条件语句和循环语句的使用。
实验内容:1. 使用循环语句计算1到100的和。
实验答案:```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}printf("1到100的和是:%d\n", sum); return 0;}```实验三:数组和字符串- 掌握数组和字符串的声明、初始化和使用。
实验内容:1. 编写一个程序,输入一个字符串,然后反转该字符串并输出。
1. 编一个带有函数的程序。
在main() 函数中输入一个字符串(长度<20),调用函数fun 将该字符串中的所有字符按ASCII 码升序排序,然后再输出排序后的字符串。
例如,输入edcba,则应输出abcde.。
#include <>#include <>int main(){void fun(char x[],int y);int i;char c[20];printf("Please input chars:\n"); gets(c);i=strlen(c);fun(c,i);return 0;}void fun(char x[],int y){int i,j;char c;for(i=0;i<y-1;i++)for(j=i+1;j<y;j++)if(x[i]>x[j]){ c=x[i]; x[i]=x[j]; x[j]=c; } puts(x);}2. 下面程序的功能是依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串;(如:abcd123efg456变为123456)。
修改该程序,要求将红色部分用一个函数来实现。
#i nclude ""mai n(){ char s[15]; int i,j;scan f("%s",s);for (i=0,j=0; s[i]!='\0'; i++){ s[j]=s[i]; j++; }s[j]='\0';printf("\nThe result:");prin tf("%s",s);}#in clude <> int main() { void fun(char x[]);char s[15];printf("Input chars to fill s[15]:\n"); scanf("%s",s);fun(s);return 0;}void fun(char x[]){int i,j;for(i=0,j=0; x[i]!='\0'; i++) if(x[i]>='0'&&x[i]<='9'){ x[j]=x[i]; j++; }x[j]='\0';puts(x);}3. 编写带有函数的程序(函数名为:int fun(int s[],int *k) ),功能是求出数组的最大元素在数组中的下标并存放在k 所指的存储单元中。
例如:输入如下整数876 675 896 101 301 401 980 431 451 777则输出结果为:6,980。
#include <>void fun(int s[],int *k){int i,max=s[0];for(i=1;i<10;i++)if(max<s[i]){ max=s[i]; *k=i; }}int main(){int a[10]={876,675,896,101,301,401,980,431,451,777};int k;fun(a,&k);printf("%d,%d\n",k,a[6]);return 0;}4. 在main() 函数中,已有一个已排好序的整型数组,今输入一个整数,调用函数fun() ,其功能是按原来排序的规律将它插入数组中。
例如:原来数组的元素依次为4、6、8、41、56、77、102。
若将42 插入数组中,则插入后数组元素依次为4、6、8、41、42、56、77、89、102。
#include <>void fun (int s[],int m){int i,j;for(i=0;;i++)if(s[i]<m&&s[i+1]>m) break;for(j=6;j>i;j--)s[j+1]=s[j];s[i+1]=m;}int main(){int s[8]={4,6,8,41,56,77,102};int i,m;puts("Please input m:");scanf("%d",&m);fun (s,m); for(i=0;i<8;i++) prin tf("%d ",s[i]); putchar('\n'); return 0;}5. 下面程拷贝序的功能是将字符数组s2中的全部字符拷贝到字符数组s1时,’0'也拷贝过去,但’0'后面的字符不拷贝。
修改该程序,要求将红色部分用一个函数来实现。
mai n(){char s1[80],s2[80];int i;sca nf("%s",s2);for(i=0;s2[i]!= ' 0' ;i++)s1[i]= ' 0';printf("s1:%s\n",s1);}#include <>void xp(char s1[],char s2[]) {int i;for(i=0;s2[i]!='\0';i++) s1[i]=s2[i];s1[i]='\0';}int main(){char s1[80],s2[80];puts("Input chars of s2[]:"); gets(s2);xp(s1,s2); printf("s1:%s\n",s1); return 0;}6. 编写带有函数的程序(函数名为:fun()),功能是将ss 所指字符串中下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换,注意下标是从0 开始的)。
例如:输入abbcc45ghNj,则应输出aBbCc45GhN。
#include <>void fun(char x[]){int i;for(i=1;x[i]!='\0';i=i+2) if(x[i]>'a'&&x[i]<'z') x[i]=x[i]-32;}int main(){char ss[80];puts("Input chars to fill ss[]:");gets(ss);fun(ss);puts(ss);return 0;}7. 在main()函数中,先从键盘上输入一个3行3列整型数组的各个元素的值,然后调用函数fun() ,其功能是计算并返回主对角线元素之和。
#include <>int fun(int a[][3]){int i,j,s=O;for(i=0;i<3;i++)for(j=0;j<3;j++)if(i==j) s=s+a[i][j];return s;}int mai n(){int i,j,k,a[3][3];puts(" In put 9 numbers to fill a[3][3]:");for(i=0;i<3;i++)for(j=0;j<3;j++)sca nf("%d",&a[i][j]);k=fu n(a);printf(" 主对角线之和=%d",k);return 0;}8. 下面程序的功能是用冒泡法对10个整数按降序进行排序。
修改该程序,要求将红色部分用一个函数来实现。
mai n(){ int a[11],i,j,t;prin tf("I nput 10 numbers:\n");for(i=1;i<11;i++)scan f("%d",&a[i]); prin tf("\n");for(j=1;j<=9;j++)for(i=1;i<=10-j;i++)if(a[i]<a[i+1])for(i=1;i<11;i++)prin tf("%d ",a[i]);}#in elude <>void fun (i nt a[]){int i,j,t;for(j=1;jv=9;j++)for(i=1;i<=10-j;i++) if(a[i]<a[i+1]){ t=a[i]; a[i]=a[i+1]; a[i+1]=t; }}int mai n(){int a[11],i;prin tf("I nput 10 numbers:\n");for(i=1;i<11;i++)scan f("%d",&a[i]);prin tf("\n");fun( a);prin tf("The sorted nu mbers:\n"); for(i=1;i<11;i++)prin tf("%d ",a[i]);putchar('\n');return 0;9. 编写带有函数的程序(函数名为:int fun()),功能是从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。
结果应该是:15 45 51 54#in elude <>int fun(int b[]){int i,j=O;for(i=1;i<=55;i++)if(i%3==0)if(i/10==5||i%10==5){ b[j]=i; j++; }return j;}int mai n(){int a[100],k,m;m=fu n(a);prin tf("The result is:\n");for(k=0;k<m;k++)prin tf("%4d",a[k]);prin tf("\n");return 0;}10. 下面程序的功能是将两个字符串连接起来,不要用strcat函数。
修改该程mai n(){char s1[80],s2[80];int i=0,j;sca nf("%s",s1);scanf( “%s‘ ,s2);while(s1[i]!= ' 0' ) i++;for(j=0; s2[j]!= ' 0';)s1[i++]=s2[j++];prin tf("s1:%s\n",s1);#in elude <>void xp(char s1[],char s2[]){int i=0,j;while(s1[i]!='\0')i++;for(j=0; s2[j]!='\0';)s1[i++]=s2[j++];s1[i]='\0';}int mai n(){char s1[80],s2[80];puts(" In put chars to fill s1[]:");gets(s1);puts(" In put chars to fill s2[]:");gets(s2);xp(s1,s2);puts(s1);return 0;}11. 编写带有函数的程序(函数名为fun ),功能是求出ss 所指字符串中指定字符的个数,并返回此值。