实验函数含答案
实验解答
实验1 解答 1、 分别用MATLAB 的向量表示法和符号运算功能,表示并绘出下列连续时间信号的波形: ⑴ 2()(2)()tf t e t ε−=−t (2-exp(-2 t)) stepfun(t,0)syms t;f=sym('(2-exp(-2*t))*heaviside(t)'); ezplot(f,[-1,10]);t=-1:0.01:10; t1=-1:0.01:-0.01; t2=0:0.01:10;f1=[zeros(1,length(t1)),ones(1,length(t2))]; f=(2-exp(-2*t)).*f1; plot(t,f)axis([-1,10,0,2.1]) ⑵ []()cos()()(4)2tf t t t t πεε=−−syms t;f=sym('cos(t)*pi*t/2*[heaviside(t)-heaviside(t-4)]'); ezplot(f,[-2,8]);tcos(t) π t/2 [heaviside(t)-heaviside(t-4)]⑶ ()cos()()tf t e t t ε=syms t;f=sym('exp(t)*cos(t)*heaviside(t)'); ezplot(f,[-2,8]);texp(t) cos(t) heav iside(t)⑷ 23()(2)f t t t ε=+syms t;f=sym('2/3*t*heaviside(t+2)'); ezplot(f,[-4,8]);t2/3 t heaviside(t+2)2、 分别用MATLAB 表示并绘出下列离散时间信号的波形: ⑴ ()12()()kf k k ε=−t=0:20;t1=-10:20;f=[zeros(1,10),(-0.5).^t]; stem(t1,f)axis([-10,20,0,1.1])⑵ []()()(8)f t k k k εε=−−t=0:8; t1=-10:15;f=[zeros(1,10),t,zeros(1,7)]; stem(t1,f)axis([-10,15,0,10])⑶ ()sin()()4k f k k πε= t=0:50;t1=-10:50;f=[zeros(1,10),sin(t*pi/4)]; stem(t1,f)axis([-10,50,-2,2])⑷ ()(2)f k k ε=−+t=-20:10;f=[ones(1,23),zeros(1,8)]; stem(t,f)axis([-20,10,0,2])3、 已知信号f (t)的波形如下图所示,试用MATLAB 绘出满足下列要求的信号波形。
数学实验1-3章习题答案
ans =
18.3287
函数的单调区间为:
(1)单调递增区间:-2<x<-1.5326 -0.7315<x<0以及1.5951<x<2;
(2)单调递减区间:-1.5326<x<-0.7315以及0<x<1.5951.
(2)
函数的图形为:
clear
>> fplot('3*x^5-20*x^3+10',[-3,3])
ans =
-3
最值2:
x=1:0.1:3;
>> y=3.*x.^5-20.*x.^3+10;
>> [m k]=max(y)
m =
199
k =
21
>> x(k)
ans =
3
驻点1及相应的二阶导数值:
clear
>> syms x y
>> y=3*x^5-20*x^3+10;
>> yxx=diff(y,x,2);
>> grid on
f=inline('100*acos(1-1/200*(r^2))+r^2*acos(1/20*r)-10*sqrt(r^2-1/400*r^4)-50*pi','r');
>> y=fzero(f,12)
y =
11.5873
3.求解下列非线性方程组在远点附近的根:
clear
>> syms x y z
>> [x y z]=solve('9*x^2+36*y^2+4*z^2-36','x^2-2*y^2-20*z','16*x-x^3-2*y^2-16*z^2',x,y,z)
《C语言与程序设计》实验06---函数
实验六函数一、实验目的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)在定义函数时函数名后面括号中的变量称为形参(形式参数),如果有两个以上形参,形参之间以逗号分隔。
形参是函数的内部变量,只在函数内部才有意义。
在未出现函数调用时,形参不占内存。
对每个形参必须指明其名字和数据类型。
实验5-1函数参考答案.doc
日期实验报告实验5 C++函数、重载与函数模板应用 姓名学号•实验目的(1) 学习函数定义、调用、参数对应关系及传递方法。
(2) 学习重载的定义与应用。
C3)学习函数模板的定义与应用。
• 实验项目1 (项目1:学号lab3_l )⑴编写求2整数m 、n 最大公约数gcd ()和最小公倍数Lcm ()函数;⑵主程 序键盘输入2整数a 、b 作为分数的分子和分母,以a/b 形式输出显示,调 用gcd ()函数做化简运算,再输出显示2整数a 、b 的最大公约数、最小公 倍数和化简后的分式a'/b'。
主程序可重复计算运行。
•实验方法最大公约数(辗转算法):设m>n,⑴k=m%n,若k=0,则n 为最大公约 数;⑵否则,用n 做被除数,k 做除数,回⑴处循环继续。
最小公倍数 1cm : lcmXgcd=mXn, lcm=mXn/gcd•程序代码 ttinclude <iostream> using namespace std; int gcd (int m, int n){ int t;if(m<n) {t=m ;m=n;n=t;} do {t=m%n;m=n;n=t;}while(t!=0);return m; }C++程序设计语言int lcm(int m, int n){ int t;t二m1n/gcd (m, n);return t;}int main (){return 0;•实验结果•结果分析与收获T middl(T a, T b, T c){ T temp;if (b>a) {temp=a;a=b;b=temp;}if(c>a) {temp=a;a=c;c=temp;} if (b>c) return b;else return c;}1 实验项目2(项目2名:学号lab3_2)编写函数模板mid(),用于从3个数据同类型(整/单/双精度数/字符)数据中返回中间数。
C语言程序设计实验指导含答案
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语言中的循环和判断语句的使用方法。
C语言实验5-8答案(函数与数组)
任务
1.fact(j-1)*j
2.gcd(n,m%n)
m<n
3.//for(j=0;j<=n-i;j++)
//printf("");//删除这两行,因为顶格输出,不要空行了。
y==1||y==x
z=c(x-1,y-1)+c(x-1,y)
4.程序代码如下:
#include<stdio.h>
fib(int n)
#include <stdio.h>
main( )
{double fun(int m);//先调用再定义,且不是能缺省的int型,请加上函数说明。
int m;
printf("\n input m:");
scanf("%d",&m);
printf("\n t= %12.10lf \n",fun(m));
j=2
j—
i+j==2
输出为:a=13,b=14
4.i=1
x[i-1]
5.m<1000
m/10%10或m/10-x*10
a[i]=m
m<i
输出结果为:153 370 371 407
6.a
a
sum/n
x[i]<ave
任务
1.‘\0’
str1[i]-str2[i]
2.c[k]=a[i++];
c[k]=b[j++];
return yes;
}
main( )
{
int n;
scanf("%d",&n);
C语言在线实验第5次(第七章函数)-题目与答案
第五次实验题目-第七章函数教学目标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 微分、积分(含答案)
班级 学号 姓名高等数学实验2 微分、积分一. 用MA TLAB 计算下列导数:diff 函数(1)已知2xy e =,求y '、y ''、(10)y 。
(2)已知nx y e =,求y '''。
(3)已知210x y xe-=,求y '、y ''与(8)y 。
(4)设2sin ()43x f x x x =++,求()f x '、()f x ''及()6f π''。
二.用MA TLAB 解方程。
solve 函数1.一元方程与线性方程(组)(1) 解方程 062=--x x(2)解方程组⎪⎩⎪⎨⎧=-+=-+060622x y y x (3)解方程组⎪⎪⎩⎪⎪⎨⎧=+++=++=++-=++012412324543213214321431x x x x x x x x x x x x x x2.非线性方程(组)(4)解非线性方程组⎩⎨⎧=+-=--0sin 3.0cos 5.00cos 3.0sin 5.0212211x x x x x x 三。
用MA TLAB 计算极值:(1)已知销售额R 是价格P 的函数,且200184R P P ⎛⎫=-⎪+⎝⎭。
当价格P 为何值时, 销售额R 有最大值,且求此最大值。
(2)已知某公司收益函数210xR xe -=,成本函数32(1085)/100C x x =++,其中x 为产(销)量,求最大收益、最低平均成本和最大利润。
四.用MATLAB 计算下列不定积分 int 函数1.ln xdx ⎰; 2。
321x x e dx -⎰; 3. 42(31)sin(21)x x x dx -++⎰; 4.(sin sin cos )ax bx cx dx ⨯⨯⎰; 5.(练习)5(4)ln(32)x x x dx --⎰; 6.(练习)4sin(25)x x e dx +⎰;五.用MATLAB 计算下列定积分 int 函数1.120(1)x xe dx x +⎰ 2。
C语言程序设计实验六函数答案《西北民大电气学院》
实验六函数一,实验目的: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一样的位置处。
C语言scanf函数题(含答案)
实验三: 编程题:
1、编一程序:从键盘输入两个数,输出此两数之和。 #include <stdio.h> main() { Float a,b,c; scanf("%d,%d",&a,&b); printf("a=%d,b=%d\n",a,b); c=a+b; printf("c=%d",c); getch(); } 2、编一程序,输入三角形边长,求面积。三角形的面积公 式为:
程序四:
#include <stdio.h> main() {
int a; char b; float x; scanf("%d,%c,%f",&a,&b,&x); printf("a=%d b=%c x=%f",a,b,x); getch(); } 1、程序运行时,输入 25,a,6.789,然后回车。则运行结果为: A=25 b=a x=6.789000 2、程序运行时,输入 25a6.789,然后回车。则运行结果为: A=25 b=_ x=0.000000
#include <math.h> main () {
float a,b,c,area; double s=0,t=0; printf("enter a,b,c:"); scanf("%f,%f,%f",&a,&b,&c); s=1.0/2.0*(a+b+c); t=s*(s-a)*(s-b)*(s-c); area=sqrt(t); printf("area=%f",area); }
#include <stdio.h> main() {
MATLAB数学实验100例题解
一元函数微分学实验1 一元函数的图形(基础实验)实验目的 通过图形加深对函数及其性质的认识与理解, 掌握运用函数的图形来观察和分析 函数的有关特性与变化趋势的方法,建立数形结合的思想; 掌握用Matlab 作平面曲线图性的方法与技巧。
初等函数的图形2 作出函数x y tan =和x y cot =的图形观察其周期性和变化趋势。
解:程序代码:>〉 x=linspace (0,2*pi,600); t=sin (x)。
/(cos (x )+eps );plot(x ,t);title (’tan (x )');axis ([0,2*pi ,-50,50]); 图象:程序代码: 〉〉 x=linspace (0,2*pi,100); ct=cos (x)。
/(sin(x)+eps ); plot(x,ct );title(’cot(x)');axis ([0,2*pi ,—50,50]); 图象:cot(x)4在区间]1,1[-画出函数xy 1sin =的图形。
解:程序代码:>> x=linspace (-1,1,10000);y=sin(1。
/x ); plot (x,y ); axis ([-1,1,—2,2]) 图象:二维参数方程作图6画出参数方程⎩⎨⎧==t t t y tt t x 3cos sin )(5cos cos )(的图形:解:程序代码:>〉 t=linspace(0,2*pi,100); plot(cos(t ).*cos (5*t ),sin(t )。
*cos(3*t)); 图象:极坐标方程作图8 作出极坐标方程为10/t e r =的对数螺线的图形. 解:程序代码:〉〉 t=0:0.01:2*pi ; r=exp (t/10);polar(log(t+eps ),log (r+eps)); 图象:90270分段函数作图10 作出符号函数x y sgn =的图形。
C语言实验2-6参考答案
实验二参考答案1.输入两个整型数字,输出他们的和。
#include<stdio.h>main(){int a, b, sum;scanf(“%d%d ”, &a, &b);sum=a+b;printf(“a+b=%d ”, sum);}2.输入两个实型数,输出他们的和与乘积。
#include<stdio.h>main(){float a, b, sum, product;scanf(“%f%f ”, &a, &b);sum=a+b;product=a*b;printf(“a+b=%5.2f, a*b =%5.2f ”, sum, product);}3.求方程02=++c bx ax 的根(设042≥-ac b )(其中a ,b ,c 的值由键盘输入)。
#include<stdio.h>#include<math.h>main(){float a, b, c, dt, x1, x2;scanf(“%f%f%f ”, &a, &b, &c);dt=sqrt(b*b-4*a*c);x1=(-b+dt)/(2*a);x2=(-b-dt)/(2*a);printf(“x1=%5.2f, x2 =%5.2f ”, x1, x2);}4.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?(h和f的值由键盘输入,输出鸡和兔的头数)#include<stdio.h>main(){int h, f, x,y;scanf(“%d%d”, &h, &f);x=2*h-f/2;y=f/2-h;printf(“x=%d, y =%d”, x, y);}实验三参考答案1.输入三个数a、b、c,要求按由小到大的顺序输出。
#include<stdio.h>main(){float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(a>b){t=a; a=b; b=t;}if(a>c){t=a; a=c; c=t;}if(b>c){t=b; b=c; c=t;}printf(“%f,%f,%f”,a,b,c);}2.编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。
实验4-函数
实验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的任意子串。
函数解析式(附答案)
3.解函数方程求函数方程的解或证明函数方程无解的过程叫解函数方程
4.定理(柯西函数方程的解)
若f(x)是单调(或连续)函数且满足f(x+y)=f(x)+f(y) (x,y∈R)、则f(x)=xf(1)
∴f(x)=ex㏑f(1)=f(1)x
令f(1)=a,则f(x)=ax(a>0)
类似的,利用柯西函数方程的解,在连续或单调的条件下可得:
(1)若f(xy)=f(x)+f(y) (x>0,y>0),则f(x)=㏒ax
(2)若f(xy)=f(x)f(y) (x>0,y>0),则f(x)=x2
f((x-1)/x)+f(1/(1-x))=1+(x-1)/x②
用(x-1)/x取代②中的所有x得
f(1/(1-x))+f(x)=1+1/(1-x)③
①+③-②得f(x)=(x^2-x^3+1)/[2x(1-x)]
简单的函数方程(一)
函数方程的概念:
1.函数方程的定义含有未知函数的等式叫做函数方程。如f(x+1)=x、f(-x)=f(x)、f(-x)=-f(x)、f(x+2)=f(x)等。其中f(x)是未知函数
故f(x)= x2+x+
(2)已知f( +1)=x+2 ,那麽f(x)=____________。
略解:f( +1)=( +1)2-1,故f(x)=x2-1 (x≥1)
(3)已知f(x+ )=x2+ ,那麽f(x)=_______________。
略解:f(x+ )=(x+ )2-2,故f(x)=x2-2 (|x|≥2)
对a1具体给出一个这样的非常数的函数fxxfff?fx?其中n是正整数x叫做函数fx的n次迭代函数迭代是一种特殊的函数复合形式在现代数学中占有很重要的地位尤其是近年来在国内外数学竞赛屡次出现成为热点问题之一以引起广在数学爱好者x的表达式穿上或脱去n1个函数符号得出f程序化穿脱穿脱函数符号是一种有序的过程由内至外一层层穿上f或从外至内一层层脱去f往往是一种程序化的模式例19已知fx实验法穿脱许多情况下求解穿脱问题并非只是一种程序化的操作还需要用敏锐的思维和眼光去发现穿脱过程所蕴含的规律性实验是发现的源泉是发现规律的金钥匙
C语言实验报告 实验八 参考答案
实验七八 函 数(一) 参考答案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 中。
实验4-答案
实验4:范式实验学时:2实验类型:(演示、验证、综合、设计研究)实验要求:(必修、选修)一、实验目的范式的定义和判定范式的分解二、实验步骤1 指出下列关系模式是第几范式,并说明理由1)R(X,Y,Z), F={XY->Z}XY为唯一候选键,函数依赖的左部是候选键,所以是BCNF 2)R(X,Y,Z), F={Y->Z,XZ->Y}候选键:XZ,XY主属性:X,Y,Z非主属性: 无不存在非主属性对主键的部分依赖,是2NF也不存在非主属性对主键的传递依赖,是3NFY->Z, 左部不是候选键,不是BCNF,所以是3NF。
3)R(X,Y,Z), F={Y->Z,Y->X,X->YZ}候选键:X,Y主属性:X,Y非主属性: Z不存在非主属性对主键的部分依赖,是2NF。
X->Y, Y->X, Y->Z, 所以X->Z 是直接函数依赖,不是传递函数依赖。
Y->Z 也不是传递函数依赖。
所以是3NF每个函数依赖的左边都是侯选建,是BCNF。
4)R(X,Y,Z), F={X->Y,X->Z}候选键:X每个函数依赖的左部都是候选键,所以是BCNF5) R(X,Y,Z,W), F={X->Z,WX->Y} 候选键:XWZ t−→−XW ,存在非主属性对主键的部分依赖,不是2NF ,所以是1NF 。
2 分析关系模式 student(学号sno ,姓名sn ,出生日期birthday ,系名dn ,班级号class ,宿舍区dorm),语义说明:其中1个系有多个班级,1个系分配1个宿舍区。
1) 根据语义,确定函数依赖集 F 2)求其候选键3)列出存在的传递函数依赖 4)求最小函数依赖集F minF={sno->sn,sno->brithday,sno->class,sno->dn,class->dn,dn->dorm} 候选键:snodormclass dorm sno dn t t t −→−−→−−→−sno F min ={sno->sn,sno->brithday,sno->class,class->dn,dn->dorm} 3语义说明:每门课只有一个任课教师,但每个教师可以有多门课,教师名不重复,每个教师只有一个地址。
数学实验(MATLAB)课后习题答案
数学实验练习2.1画出下列常见曲线的图形。
(其中a=1,b=2,c=3)1、立方抛物线3xy=解:x=-5:0.1:0;y=(-x).^(1/3);y=-y;x=0:0.1:5;y=[y,x.^(1/3)];x=[-5:0.1:0,0:0.1:5];plot(x,y)2、高斯曲线2x e=y-解:fplot('exp(-x.^2)',[-5,5])3、笛卡儿曲线)3(13,1333222axy y x t at y t at x =++=+=解:ezplot('x.^3+y.^3-3*x*y',[-5,5])xyx.3+y.3-3 x y = 0或t=-5:0.1:5; x=3*t./(1+t.^2); y=3*t.^2./(1+t.^2); plot(x,y)4、蔓叶线)(1,1322322xa x y t at y t at x -=+=+=解:ezplot('y.^2-x.^3/(1-x)',[-5,5])xyy.2-x.3/(1-x) = 0或t=-5:0.1:5; x=t.^2./(1+t.^2); y=t.^3./(1+t.^2); plot(x,y)5、摆线)cos 1(),sin (t b y t t a x -=-= 解:t=0:0.1:2*pi;x=t-sin(t); y=2*(1-cos(t)); plot(x,y)6、星形线)(sin ,cos 32323233a y x t a y t a x =+== 解:t=0:0.1:2*pi; x=cos(t).^3; y=sin(t).^3;plot(x,y)或ezplot('x.^(2/3)+y.^(2/3)-1',[-1,1])xyx.2/3+y.2/3-1 = 07、螺旋线ct z t b y t a x ===,sin ,cos 解:t=0:0.1:2*pi; x=cos(t); y=2*sin(t); z=3*t; plot3(x,y,z) grid on8、阿基米德螺线θa r = 解:x =0:0.1:2*pi; r=x; polar(x,r)902701809、对数螺线θa e r = 解:x =0:0.1:2*pi; r=exp(x); polar(x,r)90270180010、双纽线))()((2cos 22222222y x a y x a r -=+=θ 解:x=0:0.1:2*pi; r=sqrt(cos(2*x)); polar(x,r)90270或ezplot('(x.^2+y.^2).^2-(x.^2-y.^2)',[-1,1]) grid onxy(x.2+y.2).2-(x.2-y.2) = 011、双纽线)2)((2sin 222222xy a y x a r =+=θ 解:x=0:0.1:2*pi; r=sqrt(sin(2*x)); polar(x,r)90270或ezplot('(x.^2+y.^2).^2-2*x*y',[-1,1]) grid onxy(x.2+y.2).2-2 x y = 012、心形线)cos 1(θ+=a r 解:x =0:0.1:2*pi; r=1+cos(x); polar(x,r)90270练习2.21、求出下列极限值。
c语言程序设计实验指导书答案
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. 编写一个程序,输入一个字符串,然后反转该字符串并输出。
[练习]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.[目的]利用标准库提供的随机数功能。
[题目内容]编写程序,帮助小学生练习乘法计算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八函数【目的与要求】1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。
2.了解主调函数和被调函数之间的参数传递方式。
【上机内容】【一般示例】【例1】将打印18个"*"组成星形线定义为一个返回值和形参列表都为空的函数,通过主函数调用它。
#include<stdio.h>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<stdio.h>#include<math.h>int prime(int m) //判断素数函数定义{ int i,k,f=1 ; //函数内定义3个变量if (m==1) //形参若为1f=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); //如果是素数,输出该素数icount++ ; //素数个数加1if (count%5==0 ) //每输出5个素数换一行printf("\n");}return 0;}判断素数的算法,我们在以前学习循环的时候已经学过了,在这里只是把这个算法用函数的形式表示出来。
这里我们要注意函数的定义、声明的方法和格式。
【例3】选择法排序函数的定义与调用。
(假设共10个元素)#include <stdio.h>void Selection(int *pa,int n);//选择排序函数声明int main(){ int a[10], i;for (i=0;i<10;i++)scanf("%d",&a[i]);printf("The original array is:\n");for (i=0;i<10;i++)printf("%5d",a[i]);printf("\n");Selection(a,10); //选择排序函数调用printf("The sorted array is:\n");for (i=0;i<10;i++)printf("%5d",a[i]);printf("\n");return 0;}void Selection(int *pa,int n) //选择排序函数定义{int i,k,index,temp;for (k=0;k<n-1;k++){index=k ;for(i=k+1;i<n;i++)if (pa[i]<pa[index])index=i;if (index!=k){temp=pa[index];pa[index]=pa[k];pa[k]=temp;}}}本例题用数组作为函数参数,大家要注意数组作为函数参数时的用法。
【上机练习】1.上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
#include<stdio.h>void main(){int x,y;printf("%d\n",sum(x+y));int sum(a,b);{int a,b;return(a+b);}}#include<stdio.h>void main(){int x,y;printf("%d\n",sum(x+y));int sum(a,b);{int a,b;return(a+b);}}函数不能嵌套定义,不可以在函数体内定义另一个函数。
要给x、y赋初值。
调用函数的格式不对。
应将程序改为:#include<stdio.h>void main(){int x=9,y=7;printf("%d\n",sum(x+y));}int sum(int a,int b){return(a+b);}2.一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:1不是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。
例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。
试求[100,999]之内的所有逆向超级素数的个数。
39#include<stdio.h>#include<math.h>int primeInt(int m);void main(){int m,count=0;for(m=111;m<=999;m=m+2){if(primeInt(m)){if((m%100>10)&&primeInt(m%100)){if(primeInt(m%10)){printf("%d\t",m);count++;if(count%10==0)printf("\n");}}}}printf("\ncount=%d\n",count);}int primeInt(int m){int i,k,prime=1;if(m==1)prime=0;k=(int)sqrt(m);for(i=2;prime&&i<=k;i++)if(m%i==0)prime=0;return prime;}3. 写一函数,用“冒泡法”对输入的10个字符按由小到大顺序排序。
#include<stdio.h>void Bubble(char *pa,int n);int main(){char a[10],i=0;while(i<10){a[i]=getchar();i++;}Bubble(a,10);for(i=0;i<10;i++){printf("%c\t",a[i]);}printf("\n");return 0;}void Bubble(char *pa,int n){int i,j,temp,noswap;for(i=0;i<n-1;i++){noswap=1;for(j=n-1;j>i;j--)if(pa[j]<pa[j-1]){temp=pa[j];pa[j]=pa[j-1];pa[j-1]=temp;noswap=0;}if(noswap==1)return;}}4.德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数的和。
但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对。
试求6744可以分解成多少种不同的素数对。
(注: A+B 与B+A认为是相同素数对)144#include<stdio.h>#include<math.h>void main(){int m,i,a1,a2,c,n=0;for(m=3;m<=3372;m+=2){if(abc(m)&&abc(6744-m)){printf("(%d,%d)\t",m,6744-m);n++;}}if(n/8==0)printf("\n");printf("\n");printf("%4d\n",n);}int abc(int a){int i;for(i=2;i<=a/2;i++) if(a%i==0)return(0);return(1);}。