文档库 最新最全的文档下载
当前位置:文档库 › 大学c c++语言程序设计实验教程答案-阳小华-电子工业出版社

大学c c++语言程序设计实验教程答案-阳小华-电子工业出版社

大学c c++语言程序设计实验教程答案-阳小华-电子工业出版社
大学c c++语言程序设计实验教程答案-阳小华-电子工业出版社

实验1 基本程序示例

任务1 熟悉C语言程序的编辑、编译、连接和运行过程【上机内容】

1.输入并运行下面程序,写出运行结果。

#include "stdio.h"

main()

{

char c1,c2;

c1=97;c2=98;

printf("%c,%c", c1, c2);

}

在此基础上,完成以下3项任务:

(1)在c1=97;c2=98;语句后加入如下语句,并运行。

printf("%d, %d", c1, c2 );

运行结果:

a,b97,98

(2)将char c1,c2;改为如下语句,再运行。

int c1, c2;

运行结果:

a,b

(3)将c1=97;c2=98;改为如下语句,再运行,并分析其运行结果。

c1=300; c2=400;

运行结果:

,,怭(或,,?)

2.分析下面程序,写出运行结果,再输入计算机中运行,将得到的结果与分析得到的结果比较对照。

#include "stdio.h"

main()

{

char c1='a',c2='b',c3='c',c4='\101',c5='\116';

printf("a%c b%c\tabc%c \n",c1,c2,c3);

printf("\t\b%c %c",c4,c5);

}

运行结果:

aa bb abcc

A N

3.分析下面程序,写出运行结果,再输入计算机中运行,将得到的结果与分析得到的结果比较对照。

#include "stdio.h"

main()

{

int i , j , m , n ;

i=8; j=10;

m=++i; n=j++;

printf("%d,%d,%d,%d",i,j,m,n);

}

运行结果:

9,11,9,10

分别进行以下改动后,先分析结果,再运行对照。

(1)将m=++i; n=j++;改为如下:

m=i++; n= ++ j;

运行结果:

9,11,8,11

(2)程序改为如下:

#include "stdio.h"

main()

{

int i , j ;

i=8; j=10;

printf("%d,%d", i++, j++);

}

运行结果:

8,10

(3)程序改为如下:

#include "stdio.h"

main()

{

int i , j ;

i=8; j=10;

printf("%d,%d", ++ i, ++ j);

}

运行结果:

9,11

(4)程序改为如下:

#include "stdio.h"

main()

{

int i , j ;

i=8; j=10;

printf("%d,%d,%d,%d",i,j,i++,j++);

}

运行结果:

8,10,8,10

(5)程序改为如下:

#include "stdio.h"

main()

{

int i , j , m=0 , n=0 ;

i=8; j=10;

m+= i ++; n-= --j;

printf("i=%d,j=%d,m=%d,n=%d",i,j,m,n);

}

运行结果:

i=9,j=9,m=8,n=-9

任务2 简单的C语言程序设计

1.按格式要求输入、输出数据。

程序请单如下:

#include "stdio.h"

main()

{

in a,b;

float x,y;

char c1,c2;

scanf("a%d,b=%d",&a,&b);

scanf("%f, %e",&x,&y);

scanf("%c %c",&c1,&c2); /*录入时%c与%c之间有个空格*/

printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);

}

运行该程序,必须按如下方式在键盘上输入数据:

a=3,b=7 ↙

8.5,71.82a A↙ (注解:a与A之间输入一个空格,且a紧跟71.82后写,不要空格) 请写出输出结果。

运行结果:

a=7,b=3,x=8.500000,y=71.820000,c1=a,c2=A

2.输入三角形的三条边长,求三角形面积。

程序清单如下:

#include "stdio.h"

#include "math.h"

main()

{

float a,b,c,s,area;

scanf("%f ,%f,%f",&a,&b,&c);

s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("area=%f",area);

}

运行结果:(具体情况根据自己输入的数据而定)

如在键盘上输入:3,4,5↙

则运行结果为:

area=6.000000

3.已知圆半径、圆柱高、求圆周长、圆柱体积。

程序清单如下:

#include "stdio.h"

main()

{

float r,h,l,v,pi;

pi=3.1415926;

scanf("%f,%f",&r,&h);

l=2*pi*r;

v=pi*r*r*h;

printf("圆周长为:%6.2f\n",l);

printf("%圆柱体积为:6.2f",v);

}

运行结果:(具体情况根据自己输入的数据而定)

如在键盘上输入:5,6↙

则运行结果为:

圆周长为:31.42

圆柱体积为:471.24

4.输入一个摄氏温度,要求输出华氏温度,公式为f = 5/9·c+32。

程序清单如下:

#include "stdio.h"

main()

{

float c,f;

scanf("%f",&c);

f=5.0/9*c+32;

printf("%5.2f\n",c);

}

运行结果:(具体情况根据自己输入的数据而定)

如在键盘上输入:37↙

则运行结果为:

52.56

实验2选择结构

任务1 if语句程序设计

1.修改下列程序,使之满足输入10时输出“= =”,否则输出“!=”的条件。

#include"stdio.h"

main()

{int x;

scanf("%d",&x);

if(x==10)printf("==\n");

else printf("!=\n");

}

2.修改下列程序,使之实现以下功能:①当a==b并且b==c时,输出“a==b==c”;②当a!=b时,输出“a!=b”。

#include “stdio.h”

main( )

{ int a,b,c;

scanf(“%d%d%d”,&a,&b,&c);

if (a==b)

{if(b==c)

printf(“a==b==c”);

else

printf(“a!=b”);

}

3.程序填空。从键盘输入任意一个大写字母,将其转换成相应小写字母输出。

#include

main()

{ char c;

scanf("%c",&c);

if (c>='A'&&c<='Z')或(c>=65&&c<=90)

c=c+32;

printf("\n%c",c);

}

4.有以下程序,执行后输出结果为_______4_______。

#include “stdio.h”

main( )

{ int a=1,b=2,c=3,d=4;

if(a

else if((c-b)==a) printf(“%d\n”,2*d);

else printf(“%d\n”,4*d);

}

5.有以下程序,执行后输出结果为______9 7 0_____。

#include "stdio.h"

main( )

{ int a=8,b=7,c=9,t=0;

if(a

if(a

if(b

printf("%5d%5d%5d\n",a,b,c);

}

6.有以下程序,执行后输出结果为_____9 8 7_____。

#include "stdio.h"

main( )

{ int a=8,b=7,c=9,t=0;

if(a

if(a

if(b

printf("%5d%5d%5d\n",a,b,c);

}

7. x、y有如下函数关系,编写程序输入x,输出y值。

x (x<1)

y = 2x–1 (1≤x<10)

3x–11 (x≥10)

参考答案:

#include "stdio.h"

main()

{ double x,y;

scanf ("%lf",&x);

if (x<1)

y=x;

else if(x<10)

y=2*x-1;

else

y=3*x-11;

printf ("y=%lf",y);

}

8.输入一个百分制分数,要求输出对应的成绩等级:90~100为‘A’,80~89为‘B’,70~79为‘C’,60~69为‘D’,不及格为‘E’。

参考答案:

#include

main( )

{ float score;

printf("input socre:");

scanf("%f", &score);

if(score>=90)

printf("A\n");

else if(score>=80)

printf("B\n");

else if(score>=70)

printf("C\n");

else if(score>=60)

printf("D\n");

else

printf("E\n");

}

9.给一个不多于3位的正整数,编写程序完成以下要求:

(1)求出它是几位数;

(2)分别输出每一位数字;

(3)按逆序输出各位数字,例如,原数为321,应输出123。

参考答案:

#include "stdio.h"

void main()

{int a,b,c,x,n;

scanf("%d",&x);

a=x/100;

b=(x-a*100)/10;

c=x%10;

if(a!=0)

printf("%d为3位数,原数为%d,逆序数为%d\n",x,x,c*100+b*10+a);

else if(b!=0)

printf("%d为2位数,原数为%d,逆序数为%d\n",x,x,c*10+b);

else

printf("%d为1位数,原数为%d,逆序数为%d\n",x,x,c);

}

任务2 switch语句程序设计

1.有如下程序,执行后输出结果为______14______。

#include “stdio.h”

main ( )

{ int i=5;

switch(i)

{ case 4:i+=1;

case 5:i+=2;

case 6:i+=3;

default:i+=4;

}

printf("%d\n",i);

}

2.有如下程序段,若grade的值为'C',则输出结果是_____ Medium!____

Pass!______ 。

switch(grade)

{ case 'A':printf("Excellent!\n");

case 'B':printf("Fine!\n");break;

case 'C':printf("Medium!\n");

case 'D':printf("Pass!\n");break;

default:printf("Fail!\n");

}

3.有以下程序,执行后输出结果为_______a=3,b=5__________ #include "stdio.h"

main( )

{ int x=0,y=1,a=2,b=3;

switch(x)

{ case 0:

switch(y)

{ case 0: a++;

case 1: b++; break;

}

case 1: a++;b++; break;

case 2: a++;b++;

}

printf("\na=%d,b=%d",a,b);

}

4.将下列的程序段改用switch语句来实现,使它完成相同的功能。

if(x>=0&&x<10) y=x;

else if(x<20) y=x+3;

else if(x<40) y=-0.5*x+10;

else y=2*x-5;

参考答案:

#include "stdio.h"

main()

{ float x1,x2;

float y;

scanf("%f",&x1);

x2=x1;

switch(x1>0)

{ case 0 :y=0; break;

case 1 : switch((int)x2/10)

{ case 0: y=x2; break;

case 1: y=x2+3;break;

case 2:

case 3: y=-0.5*x2+10;break;

default: y=2*x2-5;break;

}

}

printf("x=%f,y=%f",x1,y);

}

5.以下程序计算某年某月有几天,闰年与平年的二月份天数不同。判别闰年的条件是:能被4整除但不能被100整除的年是闰年,或者能被400整除的年也是闰年。请分析程序填空。

#include "stdio.h"

#include "stdio.h"

main()

{ int yy,mm,days;

printf("input year and month:");

scanf("%d %d",&yy,&mm);

switch(mm)

{ 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(yy%4==0&&yy%100!=0||yy%400==0) days=29 ;

else days=28;

break;

default:printf("input error");break;

}

printf("the days of %d %d is %d\n",yy,mm,days);

}

6.假设奖金税率如下(ma代表奖金,tr代表税率), 利用switch语句编写程序对输入的一个奖金数,输出税率和应交税款以及实得奖金数(扣除奖金税后),

① ma<1000时, tr=0%;

② 1000≤ma<2000时, tr=5%;

③ 2000≤ma<4000时, tr=8%;

④ 4000≤ma时, tr=10%。

参考答案:

#include "stdio.h"

main()

{ float ma, tr,ma_tr;

scanf("%f",&ma);

printf("奖金数为%8.2f",ma);

switch(ma>=1000)

{ case 0 :tr=0; break;

case 1 : switch((int)ma/1000)

{ case 1: tr=0.05;break;

case 2:

case 3: tr=0.08;break;

default: tr=0.1;break;

}

}

printf("税率为=%.2f,应交税款为=%.2f,实得奖金数为=%.2f\n",tr,ma*tr,ma*(1-tr));

}

实验3循环结构实验(1)

任务1 while语句程序设计

1.分析并修改下面的程序,使该程序能正常结束运行。

#include

main()

{ int x,y;

x=2; y=0;

while (!y--)

printf (“%d,%d\n”,x, y);

}

2.下列程序中,while循环的循环次数为___6次___。

#include

main()

{ int i=0;

while(i<10)

{ if(i==5) break;

i++;

}

printf (“%d\n”,i);

}

3.下面是一个计算e的近似值(使误差小于给定的数值)的程序。

#include

main()

{ double e=1.0,x=1.0,y,detax;

int i=1;

printf("please input enter :\n");

scanf("%lf",&detax);

y=1/x;

while(y>=detax)

{

x=x*i;

y=1/x;

e=e+y;

++i;

}

printf("%12.10f",e);

}

参考答案:

实验要求:

(1)阅读上面的程序,写出程序所依据的计算公式。

e=1+1/1!+1/2!+1/3!+....+1/n!

(2)当输入的detax各是什么值时,能分别使程序按下面的要求运行:

a.不进入循环;detax>1.0

b.只循环两次;detax>0.5&&detax<=1.0

c.进入死循环(程序将永远循环下去)。<=0

(3)原程序中while语句中的y>=detax,分别换成

y>detax,y=detax,y

4.编写程序。对输入的任意的一个正整数按反序输出。例如,输入147,输出741。参考答案:

#include "stdio.h"

void main()

{

int x,i;

scanf("%d",&x);

while(x!=0)

{ i=x%10;

x=x/10;

printf("%d",i);

}

}

任务2 do-while语句程序设计

1.分析并修改下面的程序,使该程序能正常结束运行。

#include

main()

{ int x=0;

do{

x++;

}while(x==2);

printf (“%d\n”,x);

}

2.有以下两段程序,比较输出结果并分析原因。

(一)

main()

{ int x=0;

while(x<0) x++;

printf (“%d\n”,x);

}

结果为:0

(二)

main()

{ int x=0;

do{ x++;

}while(x<0);

printf (“%d\n”,x);

}

结果为:1

两段程序结果不同,是因为x的初始值为0,从而使循环条件不成立。当循环条件不成立一次都不成立时,do……while循环会比while循环多执行一次循环体。

3.下列程序中,do_while循环的循环次数为__ 无限次____。

#include

main()

{ int i=0;

do{ if(i==6) continue;

i=i+2;

}while(i<10);

printf ("%d\n",i);

}

4.运行下列程序,输出结果为_______sum=4000_______。

#include "stdio.h"

#define N 100

main( )

{ int x=0,sum=0;

do{ if(x==(x/5*5))

continue;

sum=sum+x;

}while(++x

printf("sum=%d\n",sum);

}

5.求 1!+2!+3!+4!+5!+6!+7!+8!+9!+10!

请填空将下面的程序补充完整:

答案:4037913

#include

main( )

{ int j,m,p,s;

s=0;

m=1 ;

do

{ p=1;

j=1 ;

while(j<=m)

{ p*=j;

j++;

}

s=s+p;

m++;

} while(m<=10);

printf("s=%d\n",s);

}

6. 编写程序。每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果总个数到不超过100的最大值,求每天平均花多少钱? 答案:9.92

参考答案:

#include "stdio.h"

void main()

{

int x,sum,day;

double ave=0;

x=2;

day=1;

sum=2;

do

{x=2*x;

sum=sum+x;

day++;

}while(sum<=100);

ave=(sum-x)*0.8/(day-1);

printf("%lf",ave);

}

实验4循环结构实验(2)

任务1 for语句程序设计

1.分析并修改下面的程序,使该程序能正常结束运行。

#include

main()

{ int i;

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

printf ("%d\n",i);

}

2.分析并修改下面的程序,使sum的值为1+2+……+10的和。

#include

main( )

{ int i=1,sum=0;

for(;i<=10;i++)

sum=sum+i;

printf ("sum=%d\n",sum);

}

3.运行下列程序,输出结果为_________sum=15________。

#include

main()

{ int i,sum=0;

for(i=0;i<=10;i++)

{ sum=sum+i;

if(i==5) break;

}

printf ("sum=%d\n",sum);

}

4.运行下列程序,输出结果为_______sum=4000________。

#include

main()

{ int i,sum=0;

for(i=0;i<=100;i++)

{ if((i%5)==0)

continue;

sum=sum+i;

}

printf ("sum=%d\n",sum);

}

5.运行下列程序,输出结果为_______ sum=60________。

#include

main()

{ int i,j,sum=0;

for(i=0;i<=3;i++)

for(j=0;j<=5;j++)

sum=sum+j;

printf ("sum=%d\n",sum);

}

6.程序填空。求出1000以内能被13整除的最大数。

#include "stdio.h"

main()

{ int i;

for( i=1000 ; i>0 ;i--)

if( i%13==0 )

break;

printf("\n%d",i);

}

7.程序填空。求如下Fibonacci 数列1,1,2,3,5,8,…… 的前40个数,要求每一行输出8个数。

F11(n 1)F21

(n 2)Fn Fn 1Fn 2(n 3)==??==??=-+-?

≥ 参考答案:

#include

main( )

{ long f1,f2;

int i;

f1=1; f2=1;

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

{ printf("%10ld%10ld",f1,f2);

if( i%4==0 ) printf("\n");

f1=f1+f2;

f2=f2+f1;

}

}

8.程序填空。从键盘输入10个不为0的整型数,统计其中负数的个数并求出所有正数的平均值。

参考答案:

#include

main( )

{ int i,x,count=0;

float ave=0;

for(i=0;i<10;i++)

{ scanf("%d",&x);

if(x>0)

ave+= x ;

else

count++ ;

}

if(count!=10)

ave/= 10-count ;

printf("count:%d,Average:%f\n",count,ave);

}

9.帕多瓦数列:1,1,1,2,2,3,4,5,7,9,12,16,21,…求出这个数列的前20项之和。参考答案:

方法1《一次一项》

#include "stdio.h"

main()

{ int f1=1,f2=1,f3=1,f,sum=3,i;

printf("%d %d %d",f1,f2,f3);

for(i=4;i<=20;i++)

{ f=f1+f2;

printf(" %d",f);

sum=sum+f;

f1=f2;

f2=f3;

f3=f;

}

printf("\nsum=%d",sum);

}

方法2《一次3项》

#include "stdio.h"

main()

{ int f1=1,f2=1,f3=1,sum=0,i;

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

{ printf("%4d%4d%4d",f1,f2,f3);

sum=sum+f1+f2+f3;

f1=f1+f2;

f2=f2+f3;

f3=f3+f1;

}

printf("\nsum=%d",sum-f3+f1);

}

10.统计能被4整除而且个位数为6的4位数的个数及和。

参考答案:

#include "stdio.h"

main()

{ int i,sum=0,count=0;

for(i=1000;i<=9999;i++)

if(i%10==6&&i%4==0)

{ count++;

sum=sum+i;

}

printf("个数为:%8d,总和为:%8d\n",count,sum);

}

11.求1~100之间所有素数的个数及和。

参考答案:

#include

#include

main()

{ int m,n,i,j,k,sum=0;

n=0;

for(m=2;m<=100;m++)

{ k=(int)sqrt(m);

i=2;

while(m%i!=0&&i<=k)

i++;

if(i==k+1)

{n++;sum=sum+m; }

}

printf("共有%8d个素数,总和为%8d\n",n,sum);

}

12.(1)编写程序输出下面的数字金字塔。

1

121

12321

1234321

123454321

参考答案:

#include

main()

{

int n=5, i,j;

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

{

for(j=1;j<=5-i;j++)

printf(" " );

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

printf("%d",j );

for(j=i-1;j>=1;j--)

printf("%d",j );

printf("\n");

}

}

12.(2)编写程序输出下面的数字金字塔。

1

222

33333

4444444

555555555

参考答案:

#include

main()

{

int n=5, i,j;

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

{

for(j=1;j<=5-i;j++)

printf(" " );

for(j=1;j<=2*i-1;j++)

printf("%d",i );

printf("\n");

}

}

实验5 函数定义、声明与调用

任务1 函数的定义和声明

1.预测下面程序的输出,并上机运行验证结果。(结果:21)#include

func(int a,int b)

{

int c;

c=a+b;

return c;

}

main()

{

int x=6,y=7,z=8,r;

r=func((x--,y++,x+y),z--);

printf("%d\n",r);

}

2.分析推测下面程序的输出,并上机运行验证结果。(结果:12)#include

unsigned fun26(unsigned num)

{

unsigned k=1;

do

{ k*=num%10;num/=10; }

while(num);

return k;

}

main()

{

unsigned n=26;

printf("%d\n",fun26(n));

}

3.求出以下程序的运行结果,并描述程序所完成的功能。

(结果:s=16。功能是:求x的n次幂即2的4次幂。)

#include

main()

{

int power(int x,int n);

int x=2,n=4;

printf("\ns=%d",power( x,n));

}

int power(int x,int n)

{

int i,p=1;

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

p=p*x;

return(p);

}

4.上机调试下面计算两个整数之和的程序,记录系统给出的出错信息,指出出错原因并予以改正。

正确代码为:

#include

int sum( int a,int b) //函数不能嵌套定义,所以将sun函数拉到main函数外,同

{ 时形参的每个参数前都必须要有类型

{

return (a+b);

}

main()

{

int x,y;

scanf("%d,%d",&x,&y);

printf("%d\n",sum(x,y)); //形参与实参的个数要一致,所以将加号改成逗号。

}

5.上机调试下面判断n是否是素数的程序,函数fun中有逻辑错误,调试并改正。

正确代码为:

#include

fun(int n)

{

int k,yes=1;

for(k=2;k<=n/2;k++)

if(n%k==0) {yes=0; break;} //反证法证明,找到一个就跳出,否则会被后面覆盖

else yes=1;

return yes;

}

main()

{

int n;

scanf("%d",&n);

if(fun(n)) //将main函数中的函数调用fun()改成fun(n),因为实参的个数应与形参对应

printf("%d:yes!\n",n);

else

printf("%d:no!\n",n);

}

6.下面程序中,函数fun的功能是根据形参m计算公式T=1/1!+1/2!+1/3!+…+1/m!的值,上机调试,请改正程序中的错误。当从键盘输入10时,给出程序运行的正确结果(按四舍五入保留10位小数)。

正确代码为:(输入10时的结果:1.7182818011)

#include

main()

{double fun(int m); //先调用再定义,且不是能缺省的int型,请加上函数说明。

int m;

printf("\n input m:");

scanf("%d",&m);

printf("\n t=%12.10lf \n",fun(m));

}

double fun(int m)

{

double fac,t=0.0;

int i=1,j;

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

{

fac=1.0;

for(j=1;j<=i;j++) fac=fac*j; //逻辑有误,改为:for(j=1;j<=i;j++) fac=fac*j;这样才表示求i!,原程序行是求i的m次方。

t+=1.0/fac;

}

return t;

}

任务2 函数的嵌套调用

1.跟踪调试下面程序,注意函数调用的过程中形参、实参的关系。记录并分析结果;将形参a,b对应改为x,y,使之与实参变量同名,记录并分析结果。

#include

main()

{

int t,x=2,y=5;

int swap(int,int);

printf("(1) in main: x=%d,y=%d\n",x,y);

swap(x,y);

printf("(4) in main: x=%d,y=%d\n",x,y);

}

swap(int a,int b)

{

int t;

printf("(2) in swap: a=%d,b=%d\n",a,b);

t=a;

a=b;

b=t;

printf("(3) in swap: a=%d,b=%d\n",a,b);

}

结果:

(1) in main: x=2,y=5

(2) in swap: a=2,b=5

(3) in swap: a=5,b=2

(4) in main: x=2,y=5

将形参a,b对应改为x,y 结果:

(1) in main: x=2,y=5

(2) in swap: x=2,y=5

(3) in swap: x=5,y=2

(4) in main: x=2,y=5

结论:无论实参、形参是否同名,交换的只是子函数(swap)中两个变量的值。主函数中的x,y的值没有变。

2.若输入2、3,求以下程序的运行结果,分析函数嵌套调用的执行过程。

#include

long sum(int a,int b);

long factorial(int n);

main()

{

int n1,n2;

long a;

scanf("%d,%d",&n1,&n2);

a=sum(n1,n2);

printf("a=%ld",a);

}

long sum(int a,int b)

{

long c1,c2;

c1=factorial(a);

c2=factorial(b);

return(c1+c2);

}

long factorial(int n)

{

long rtn=1;

int i;

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

rtn*=i;

return(rtn);

}

(结果为:a=8。程序功能:求n1!+n2! 即:2!+3!)

3.运行下面程序,写出运行结果。

#include "stdio.h"

main()

{

int i=5;

void palin(int n);

printf("please input 5 characters: ");

palin(i);

printf("\n");

}

void palin(int n)

{

char next;

if(n<=1)

{

next=getchar();

printf("\n\0: ");

putchar(next);

}

else

{

next=getchar();

palin(n-1);

putchar(next);

}

}

(程序功能:实现将从键盘输入的5个字符逆序输出。如输入:abcde.输出:edcba)

4.写出下面程序的输出结果。

#include "stdio.h"

int abc(int u,int v);

main ()

{

int a=24,b=16,c;

c=abc(a,b);

printf("%d\n",c);

}

int abc(int u,int v)

{

int w;

while(v)

{ w=u%v; u=v; v=w;}

return u;

}

(程序功能:求两数的最大公约数即24,16的最大公约数。结果:8)

实验6 函数递归调用、变量的存储类型及编译预处理任务1 函数的递归调用

1.fact(j-1)*j

2.gcd(n,m%n)

m

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

fib(int n)

{

int f;

if(n==1||n==2)

f=1;

数学实验 课程设计

安徽工业大学 大学数学实验课程设计 姓名: 班级: 任课老师:

数学实验 课程设计 问题提出: 某容器盛满水后,低端直径为0d 的小孔开启(图)。根据水力学知识,当水面 高度h 时,水冲小孔中流出的速度v =(g 为重力加速度,0.6为孔口的收缩系数)。 ⑴若容器为倒圆锥形(如图1),现测得容器高和上底面直径均为1.2m ,小孔直径为3cm ,问水从小孔中流完需要多长时间;2min 水面高度是多少。 ⑵若容器为倒葫芦形(如图2),现测得容器高为1.2m ,小孔直径为3cm ,有低端(记作x=0)向上每隔0.1m 测出容器的直径D (m )如表所示,问水从小孔中流完需要多少时间;2min 时水面的高度是多少。 图1 : 图2: 问题分析: (1) 倒圆锥形容器流水问题中随时间t 液面高度h 也在变化,同时水的流速也 在变化,再写变化难以用普通的方程进行模拟求解,考虑建立常微分方程竟而代入数值求解。水面的直径等于液面的高度。可以建立容器中水流失的液面高度对时间t 的变化率。 假设t 时,液面的高度h ,此时水的流速流量Q 为:00.6(/4)d π ; 则 在t ?时间内液面下降高度为h ?,可得到关系式:220( )2 4 d dt h dh π = ;

由此可知水下降h ? 时需要的时间:20 40.6 4 h dh t d π π ?= = 根据此关系式知道。 (2) 在第二问中,考虑倒葫芦形容器时因为他的高度h 不同容器直径D 变化 没有规律可循,同第一题相比我们只知道他的一些数值,这就需要我们建立高度h 和容器直径D 之间的关系矩阵,然后再欧拉方程和龙格—库塔方法找出时间t 和液面高度之间的分量关系。 由(1)可同理推知:假设在时间t 时,液面高度为h ,此时流量 为 2 00.6(/4)d π;经过t ?时,液面下降h ?,若我们取的t 是在t(n)和t(n+1) 之间的某一时刻,于是就可在误差范围内得到 (1)()t n t n t +=+?;可以得 到 204 (1)()0.64 h d h dt t n t n d π π =+-=- = ; 建立模型: (1) 在试验中我们不考虑圆锥的缺省对流水的影响,以及其他外界因素和玻璃 的毛细作用,试验中水可以顺利流完。实验中重力加速度g=9.82 /m s ;倒圆锥的液面最初高度为H=1.2m ,液面直径D=1.2m=0.03,小孔的直径为 0d =0.03m ; 接上文中分析结论代入数据:即在T 时间内将1.2m 的液面高度放完, (matlab 不支持一些运算符号,故用matlab 运算格式) dt=-((pi/4)h^2*dh)/(0.6*(pi/4)*d^2*sqrt(gh))=-(h^1.5*dh)/(0.6*d^2*sqrt(g)) h 是由0→1.2m 对t 积分 用matlab 计算上式 编辑文件:a1.m , d0=0.03; g=9.8; syms h t=(h^1.5)/(0.6*d0^2*sqrt(g)); T=int(t,0,1.2); eval(T) 运行结果: >> a1 ans =

大学数学实验

大学数学实验 项目一 矩阵运算与方程组求解 实验1 行列式与矩阵 实验目的 掌握矩阵的输入方法. 掌握利用Mathematica (4.0以上版本) 对矩阵进行转置、加、减、数乘、相乘、乘方等运算, 并能求矩阵的逆矩阵和计算方阵的行列式. 基本命令 在Mathematica 中, 向量和矩阵是以表的形式给出的. 1. 表在形式上是用花括号括起来的若干表达式, 表达式之间用逗号隔开. 如输入 {2,4,8,16} {x,x+1,y,Sqrt[2]} 则输入了两个向量. 2. 表的生成函数 (1) 最简单的数值表生成函数Range, 其命令格式如下: Range[正整数n]—生成表{1,2,3,4,…,n }; Range[m, n]—生成表{m ,…,n }; Range[m, n, dx]—生成表{m ,…,n }, 步长为d x . (2) 通用表的生成函数Table. 例如,输入命令 Table[n^3,{n,1,20,2}] 则输出 {1,27,125,343,729,1331,2197,3375,4913,6859} 输入 Table[x*y,{x,3},{y,3}] 则输出 {{1,2,3},{2,4,6},{3,6,9}} 3. 表作为向量和矩阵 一层表在线性代数中表示向量, 二层表表示矩阵. 例如,矩阵 ??? ? ??5432 可以用数表{{2,3},{4,5}}表示. 输入 A={{2,3},{4,5}} 则输出 {{2,3},{4,5}} 命令MatrixForm[A]把矩阵A 显示成通常的矩阵形式. 例如, 输入命令: MatrixForm[A] 则输出 ??? ? ??5432 但要注意, 一般地, MatrixForm[A]代表的矩阵A 不能参与运算. 输入 B={1,3,5,7} 输出为 {1,3,5,7} 输入 MatrixForm[B] 输出为

大学物理实验习题和答案 版

第一部分:基本实验基础1.(直、圆)游标尺、千分尺的读数方法。 答:P46 2.物理天平 1.感量与天平灵敏度关系。天平感量或灵敏度与负载的关系。 答:感量的倒数称为天平的灵敏度。负载越大,灵敏度越低。 2.物理天平在称衡中,为什么要把横梁放下后才可以增减砝码或移动游码。 答:保护天平的刀口。 3.检流计 1.哪些用途?使用时的注意点?如何使检流计很快停止振荡? 答:用途:用于判别电路中两点是否相等或检查电路中有无微弱电流通过。 注意事项:要加限流保护电阻要保护检流计,随时准备松开按键。 很快停止振荡:短路检流计。 4.电表 量程如何选取?量程与内阻大小关系?

答:先估计待测量的大小,选稍大量程试测,再选用合适的量程。 电流表:量程越大,内阻越小。 电压表:内阻=量程×每伏欧姆数 5.万用表 不同欧姆档测同一只二极管正向电阻时,读测值差异的原因? 答:不同欧姆档,内阻不同,输出电压随负载不同而不同。 二极管是非线性器件,不同欧姆档测,加在二极管上电压不同,读测值有很大差异。 6.信号发生器 功率输出与电压输出的区别? 答:功率输出:能带负载,比如可以给扬声器加信号而发声音。 电压输出:实现电压输出,接上的负载电阻一般要大于50Ω。 比如不可以从此输出口给扬声器加信号,即带不动负载。7.光学元件 光学表面有灰尘,可否用手帕擦试?

8.箱式电桥 倍率的选择方法。 答:尽量使读数的有效数字位数最大的原则选择合适的倍率。 9.逐差法 什么是逐差法,其优点? 答:把测量数据分成两组,每组相应的数据分别相减,然后取差值的平均值。 优点:每个数据都起作用,体现多次测量的优点。 10.杨氏模量实验 1.为何各长度量用不同的量具测? 答:遵守误差均分原理。 2.测钢丝直径时,为何在钢丝上、中、下三部位的相互垂直的方向上各测一次直径,而不是在同一部位采样数据? 答:钢丝不可能处处均匀。 3.钢丝长度是杨氏模量仪上下两个螺丝夹之间的长度还是上端螺丝夹到挂砝码的砝码钩之间的长度?

matlab——大学数学实验报告

济南大学2012~2013学年第二学期数学实验上机考试题 班 级 计科1201 学号 20121222044 姓 名 黄静 考试时间 2014年6 月 17日 授课教师 王新红 说明:每题分值20分。第5题,第6题, 第7题和第8题可以任选其一, 第9题和第10题可以任选其一。每个同学以自己的学号建立文件夹,把每个题的文件按规定的方式命名存入自己的文件夹。有多余时间和能力的同学可以多做。 1、自定义函数:x x x y tan ln sin cos ln -=,并求 ?)3 (=π y (将总程序保存为test01.m 文件) %%代码区: y=inline('log(cos(x))-sin(x)*log(tan(x))','x'); y(pi/3) %%answer ans = -1.1689 2、将一个屏幕分4幅,选择合适的坐标系在左与右下幅绘制出下列函数的图形。 (1)衰减振荡曲线: x e y x 5sin 5.0-= (2)三叶玫瑰线:θρ3sin a = (将总程序保存为test02.m 文件) %%代码区: x=linspace(0,2*pi,30); y=exp(-0.5*x).*sin(5*x); subplot(2,2,1),plot(x,y),title('衰减振荡曲线') hold on theta=linspace(0,2*pi); r=sin(3*theta); subplot(2,2,4); polar(theta,r); xlabel('三叶玫瑰线')

%%answer 02468 -1 -0.500.5 1衰减振荡曲线 三叶玫瑰线 3、作马鞍面:22 ,66,8823 x y z x y =--≤≤-≤≤ (将总程序保存为test03.m 文件) %%代码区: [x,y]=meshgrid(linspace(-6,6,70),linspace(-8,8,70)); z=x.^2/2-y.^2/3; mesh(x,y,z) surface(x,y,z)%让曲面光滑并填满 shading interp ;

清华大学数学实验报告4

清华大学数学实验报告4

————————————————————————————————作者: ————————————————————————————————日期: ?

电13 苗键强2011010645

一、实验目的 1.掌握用 MATLAB 软件求解非线性方程和方程组的基本用法, 并对结果作初步分析; 2.练习用非线性方程和方程组建立实际问题的模型并进行求解。 二、实验内容 题目1 【问题描述】 (Q1)小张夫妇以按揭方式贷款买了1套价值20万元的房子,首付了5万元,每月还款1000元,15年还清。问贷款利率是多少? (Q2)某人欲贷款50 万元购房,他咨询了两家银行,第一家银行 开出的条件是每月还4500元,15 年还清;第二家银行开出的条件是每年还45000 元,20年还清。从利率方面看,哪家银行较优惠(简单假设:年利率=月利率×12)? 【分析与解】 假设初始贷款金额为x0,贷款利率为p,每月还款金额为x,第i 个月还完当月贷款后所欠银行的金额为x i,(i=1,2,3,......,n)。由题意可知: x1=x0(1+p)?x x2=x0(1+p)2?x(1+p)?x x3=x0(1+p)3?x(1+p)2?x(1+p)?x ……

x n=x0(1+p)n?x(1+p)n?1???x(1+p)?x =x0(1+p)n?x (1+p)n?1 p =0 因而有: x0(1+p)n=x (1+p)n?1 p (1) 则可以根据上述方程描述的函数关系求解相应的变量。 (Q1) 根据公式(1),可以得到以下方程: 150p(1+p)180?(1+p)180+1=0 设 f(p)=150p(1+p)180?(1+p)180+1,通过计算机程序绘制f(p)的图像以判断解p的大致区间,在Matlab中编程如下: fori = 1:25 t = 0.0001*i; p(i) = t; f(i) =150*t*(1+t).^180-(1+t).^180+1; end; plot(p,f),hold on,grid on; 运行以上代码得到如下图像:

数字电子钟课程设计实验报告

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计任务书2016/2017 学年第一学期 学生姓名:张涛学号: 李子鹏学号: 课程设计题目:数字电子钟的设计 起迄日期:2017年1月4日~2017年7月10日 课程设计地点:科学楼 指导教师:姚爱琴 2017年月日 课程设计任务书

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计开题报告2016/2017 学年第一学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号:

指导教师:姚爱琴 2017 年 1 月 6 日 中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计说明书2016/2017 学年第二学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号: 指导教师:姚爱琴 2017 年月日

目录 1 引言 (6) 2 数字电子钟设计方案 (6) 2.1 数字计时器的设计思想 (6) 2.2数字电路设计及元器件参数选择 (6) 2.2.2 时、分、秒计数器 (7) 2.2.3 计数显示电路 (8) 2.2.5 整点报时电路 (10) 2.2.6 总体电路 (10) 2.3 安装与调试 (11) 2.3.1 数字电子钟PCB图 (11) 3 设计单元原理说明 (11) 3.1 555定时器原理 (12) 3.2 计数器原理 (12) 3.3 译码和数码显示电路原理 (12) 3.4 校时电路原理 (12) 4 心得与体会 (12) 1 引言 数字钟是一种用数字电子技术实现时,分,秒计时的装置,具有较高的准确性和直观性等各方面的优势,而得到广泛的应用。此次设计数字电子钟是为了了解数字钟的原理,在设计数字电子钟的过程中,用数字电子技术的理论和制作实践相结合,进一步加深数字电子技术课程知识的理解和应用,同时学会使用Multisim电子设计软件。 2数字电子钟设计方案 2.1 数字计时器的设计思想 要想构成数字钟,首先应选择一个脉冲源——能自动地产生稳定的标准时间脉冲信号。而脉冲源产生的脉冲信号地频率较高,因此,需要进行分频,使得高频脉冲信号变成适合于计时的低频脉冲信号,即“秒脉冲信号”(频率为1Hz)。经过分频器输出的秒脉冲信号到计数器中进行计数。由于计时的规律是:60秒=1分,60分=1小时,24小时=1天,就需要分别设计60进制,24进制计数器,并发出驱动信号。各计数器输出信号经译码器、驱动器到数字显示器,是“时”、“分”、“秒”得以数字显示出来。 值得注意的是:任何记时装置都有误差,因此应考虑校准时间电路。校时电路一般

(完整版)大学物理实验理论考试题及答案汇总

一、 选择题(每题4分,打“ * ”者为必做,再另选做4题,并标出选做记号“ * ”,多做不给分,共40分) 1* 某间接测量量的测量公式为4 3 23y x N -=,直接测量量x 和y 的标准误差为x ?和y ?,则间接测 量量N 的标准误差为?B N ?=; 4322 (2)3339N x x y x x x ??-==?=??, 3334(3)2248y N y y y y x ??==-?=-??- ()()[]21 23 2 289y x N y x ?+?=? 2* 。 用螺旋测微计测量长度时,测量值=末读数—初读数(零读数),初读数是为了消除 ( A ) (A )系统误差 (B )偶然误差 (C )过失误差 (D )其他误差 3* 在计算铜块的密度ρ和不确定度ρ?时,计算器上分别显示为“8.35256”和“ 0.06532” 则结果表示为:( C ) (A) ρ=(8.35256 ± 0.0653) (gcm – 3 ), (B) ρ=(8.352 ± 0.065) (gcm – 3 ), (C) ρ=(8.35 ± 0.07) (gcm – 3 ), (D) ρ=(8.35256 ± 0.06532) (gcm – 3 ) (E) ρ=(2 0.083510? ± 0.07) (gcm – 3 ), (F) ρ=(8.35 ± 0.06) (gcm – 3 ), 4* 以下哪一点不符合随机误差统计规律分布特点 ( C ) (A ) 单峰性 (B ) 对称性 (C ) 无界性有界性 (D ) 抵偿性 5* 某螺旋测微计的示值误差为mm 004.0±,选出下列测量结果中正确的答案:( B ) A . 用它进行多次测量,其偶然误差为mm 004.0; B . 用它作单次测量,可用mm 004.0±估算其误差; B =?==? C. 用它测量时的相对误差为mm 004.0±。 100%E X δ = ?相对误差:无单位;=x X δ-绝对误差:有单位。

中国矿业大学软件课程设计实验报告

编号:()字号 《软件课程设计》报告 班级: 12级信息安全二班 姓名:李江涛 学号: 08123608 指导老师:徐慧 中国矿业大学计算机科学与技术学院 2013年 6 月

软件课程设计任务书 专业年级:信息安全二班 学生姓名:李江涛 任务下达日期:2013 年 4 月日 课程设计日期:2013 年 4 月5日至200年7月 3 日 课程设计题目:面向过程 目录 一第一阶段-----------面向过程 (4) 1 --------------------人民币凑数问题 (4) 1.1 需求分析 (4) 1.2 概要设计 (5) 1.3 详细设计与编码 (5)

1.5 用户使用说明 (6) 1.6 设计体会 (6) 2-------------------- 日期星期转换 (7) 2.1.需求分析: (7) 2.2 概要设计 (7) 2.4.调试分析 (10) 2.5.用户使用说明 (10) 2.6.测试分析 (10) 2.7.设计体会: (10) 二第二阶段------------面向对象 (11) 1--------------------学生管理系统 (11) 1.1----需求分析 (11) 1.2.概要设计 (11) 1.3.详细设计与编码 (11) 1.4 运行结果: (17) 1.5调试分析 (18) 1.6用户使用说明 (18) 1.7测试分析: (18) 1.8 实验体会 (18) 2 面向对象函数模板反向输出 (19) 1--------------------函数模板反向输出 (19) 1.1 需求分析: (19) 1.2函数模板反向输出源代码: (19) 1.4 运行结果: (21) 三第三部分----------可视化 (21) 1--------------------计算器: (21) 用你熟悉的一种可视化编程语言实现如下图所示的计算器。该计算器需要实现基础 的数学运算,如加,减,乘,除。 (21) 1.1重要程序 (21) 1.3运行结果图: (22) 四第四部分----------数据结构 (23) 1--------------------求矩阵的转置 (23) 1.1 需求分析: (23) 1.2 概要设计: (24) 1.3 详细设计与编码: (24) 1.4 运行结果: (27) 1.5 用户使用: (27) 1.6 设计体会: (27) 2--------------------数据结构统计选票 (27) 2.1 需求分析: (28) 2.2 概要设计: (28) 2.3 详细设计与编码: (28) 2.4 运行结果: (30)

大学数学实验心得体会

大学数学实验心得体会 [模版仅供参考,切勿通篇使用] 大学数学实验心得体会(一) 数学,在整个人类生命进程中至关重要,从小学到中学,再到大学,乃至更高层次的科学研究都离不开数学,随着时代的发展,人们越来越重视数学知识的应用,对数学课程提出了更高层次的要求,于是便诞生了数学实验。 学期最初,大学数学实验对于我们来说既熟悉又陌生,在我们的记忆中,我们做过物理实验、化学实验、生物实验,故然我们以为数学实验与它们一样,当我们在网上搜索有关数学实验的信息时,我们才知道,大学数学实验作为一门新兴的数学课程在近十年来取得了迅速的发展。数学实验以计算机技术和数学软件为载体,将数学建模的思想和方法融入其中,现在已经成为一种潮流。 当我们怀着好奇的心情走进屈静国老师的数学实验课堂时,我们才渐渐懂得,数学实验是一门有关计算机软件的课程,就像c语言一样,需要编辑运行程序,从而进行数学运算,它不需要自己来运算,就像计算器一样,只要我们自己记下重要程序语句,输入运行程序,便可得到运行结果,大大降低了我们的运算量,

给我们生活带来许多便捷,在大一时,我学过c语言,由于这样的基础,让我能够更快的学会并应用此软件。 时间飞逝,转眼间,我们就要结课了,这学期我们学习了mathematics的基础,微积分实验,线性代数实验,概率论与数理统计实验,数值计算方法及实验。通过这学期的学习,我也积累了些自己的学习方法和心得。首先,我们要在平时上课牢记那些mathematics语言和公式,那些东西就想单词和公式一样,只需要背诵;然后,我们要看几遍书,并多看一下例题;最后,我们要多应用mathematics软件去练习。正所谓熟能生巧,我坚信,只要我们能够做到这三步,我们就能很好的掌握这门课程。 通过学习使用数学软件,数学实验建模,使我们能够从实际问题出发,认真分析研究,建立简单数学模型,然后借助先进的计算机技术,最终找出解决实际问题的一种或多种方案,从而提高了我们的数学思维能力,为我们参加数学竞赛和数学建模打下了坚实的基础,同时也为我们进一步深造和参加工作打下一定的实践基础! 大学数学实验心得体会(二) 在此期间我充分利用研修活动时间学习,感到既有辛苦,又有收获。既有付出,又有新所得。这次远程研修让我有幸与专家和各地的数学精英们交流,面对每次探讨的主题,大家畅所欲言,

大学物理实验报告答案大全(实验数据)

U 2 I 2 大学物理实验报告答案大全(实验数据及思考题答案全包括) 伏安法测电阻 实验目的 (1) 利用伏安法测电阻。 (2) 验证欧姆定律。 (3) 学会间接测量量不确定度的计算;进一步掌握有效数字的概念。 实验方法原理 根据欧姆定律, R = U ,如测得 U 和 I 则可计算出 R 。值得注意的是,本实验待测电阻有两只, 一个阻值相对较大,一个较小,因此测量时必须采用安培表内接和外接两个方式,以减小测量误差。 实验装置 待测电阻两只,0~5mA 电流表 1 只,0-5V 电压表 1 只,0~50mA 电流表 1 只,0~10V 电压表一 只,滑线变阻器 1 只,DF1730SB3A 稳压源 1 台。 实验步骤 本实验为简单设计性实验,实验线路、数据记录表格和具体实验步骤应由学生自行设计。必要时,可提示学 生参照第 2 章中的第 2.4 一节的有关内容。分压电路是必须要使用的,并作具体提示。 (1) 根据相应的电路图对电阻进行测量,记录 U 值和 I 值。对每一个电阻测量 3 次。 (2) 计算各次测量结果。如多次测量值相差不大,可取其平均值作为测量结果。 (3) 如果同一电阻多次测量结果相差很大,应分析原因并重新测量。 数据处理 (1) 由 U = U max ? 1.5% ,得到 U 1 = 0.15V , U 2 = 0.075V ; (2) 由 I = I max ? 1.5% ,得到 I 1 = 0.075mA , I 2 = 0.75mA ; (3) 再由 u R = R ( 3V ) + ( 3I ) ,求得 u R 1 = 9 ? 101 &, u R 2 = 1& ; (4) 结果表示 R 1 = (2.92 ± 0.09) ?10 3 &, R 2 = (44 ± 1)& 光栅衍射 实验目的 (1) 了解分光计的原理和构造。 (2) 学会分光计的调节和使用方法。 (3) 观测汞灯在可见光范围内几条光谱线的波长 实验方法原理

大学物理实验课后答案

大学物理实验课后答案 Final revision by standardization team on December 10, 2020.

(1)利用f=(D+d)(D-d)/4D 测量凸透镜焦距有什么优点 答这种方法可以避免透镜光心位置的不确定而带来的测量物距和像距的误差。(2)为什么在本实验中利用1/u+1/v=1/f 测焦距时,测量u和v都用毫米刻度的米尺就可以满足要求设透镜由于色差和非近轴光线引起的误差是1%。 答设物距为20cm,毫米刻度尺带来的最大误差为,其相对误差为%,故没必要用更高精度的仪器。 (3)如果测得多组u,v值,然后以u+v为纵轴,以uv为横轴,作出实验的曲线属于什么类型,如何利用曲线求出透镜的焦距f。 答直线;1/f为直线的斜率。 (4)试证:在位移法中,为什么物屏与像屏的间距D要略大于4f 由f=(D+d)(D-d)/4D → D2-4Df=d2→ D(D-4f)=d2 因为d>0 and D>0 故D>4f 1.避免测量u、ν的值时,难于找准透镜光心位置所造成的误差。 2.因为实验中,侧的值u、ν、f都相对较大,为十几厘米到几十厘米左右,而误差为1%,即一毫米到几毫米之间,所以可以满足要求。 3.曲线为曲线型曲线。透镜的焦距为基斜率的倒数。 ①当缝宽增加一倍时,衍射光样的光强和条纹宽度将会怎样变化如缝宽减半,又怎样改变 答: a增大一倍时, 光强度↑;由a=Lλ/b ,b减小一半 a减小一半时, 光强度↓;由a=Lλ/b ,b增大一倍。 ②激光输出的光强如有变动,对单缝衍射图象和光强分布曲线有无影响有何影响 答:由b=Lλ/a.无论光强如何变化,只要缝宽不变,L不变,则衍射图象的光强分布曲线不变 (条纹间距b不变);整体光强度↑或者↓。 ③用实验中所应用的方法是否可测量细丝直径其原理和方法如何 答:可以,原理和方法与测单狭缝同。 ④本实验中,λ=632。8nm,缝宽约为5*10^-3㎝,屏距L为50㎝。试验证: 是否满足夫朗和费衍射条件 答:依题意: Lλ=(50*10^-2)*(*10^-9)=*10^-7 a^2/8=(5*10^-5)^2/8=*10^-10 所以Lλ<

东南大学数学实验报告(1)

高等数学数学实验报告实验人员:院(系) 土木工程学院学号05A11210 姓名李贺__ 实验地点:计算机中心机房 实验一空间曲线与曲面的绘制 一、实验题目:(实验习题1-2) 利用参数方程作图,做出由下列曲面所围成的立体图形: 2 2 2 2 ⑴ Z 1 X y,x y X 及xOy平面; ⑵ z xy,x y 1 0 及z 0. 二、实验目的和意义 1、利用数学软件Mathematica绘制三维图形来观察空间曲线和空间曲面图形的特点,以加 强几何的直观性。 2、学会用Mathematica绘制空间立体图形。 三、程序设计 空间曲面的绘制 x x(u, V) y y(u,v),u [u min , max ],V [V min , V max ] 作参数方程z z(u,v)所确定的曲面图形的Mathematica命令

为: ParametricPlot3D[{x[u,v],y[u,v],z[u,v]},{u,umi n,umax}. {v,vmi n,vmax}, 选项] ⑵ t2 = ParametricPlotJD [{u f 1 v}, [u^ ?0?§尸1}^ (v, 0F 1}, HxegLabel {"x" 11 y" J1 z" }. PlotPolnts t 5B, Dlspla^unction -> Identity」: t3 = ParametricPlotSD[{u f 0}* (u, -U.J5』1}^ {v z-0.5, 1} f AxesLabel {"x" 11y" 11 z" PlotPoints 50, Display1 unction — Identity]: Slinw[tl z t2, t3 f DisplayFunction -> SDlsplajfunction] 四、程序运行结果 ⑴ (2) 五、结果的讨论和分析 1、通过参数方程的方法做出的图形,可以比较完整的显示出空间中的曲面和立体图形。 2、可以通过mathematica软件作出多重积分的积分区域,使积分能够较直观的被观察。

东南大学高等数学数学实验报告上

高等数学数学实验报告实验人员:院(系) ___________学号_________姓名____________ 实验地点:计算机中心机房 实验一 一、实验题目: 根据上面的题目,通过作图,观察重要极限:lim(1+1/n)n=e 二、实验目的和意义 方法的理论意义和实用价值。 利用数形结合的方法观察数列的极限,可以从点图上看出数列的收敛性,以及近似地观察出数列的收敛值;通过编程可以输出数列的任意多项值,以此来得到数列的收敛性。通过此实验对数列极限概念的理解形象化、具体化。 三、计算公式(1+1/n)n 四、程序设计 五、程序运行结果 六、结果的讨论和分析 当n足够大时,所画出的点逐渐接近于直线,即点数越大,精确度越高。对于不同解题方法最后均能获得相同结果,因此需要择优,从众多方法中尽可能选择简单的一种。程序编写需要有扎实的理论基础,因此在上机调试前要仔细审查细节,对程序进行尽可能的简化、改进与完善。 实验二 一、实验题目 制作函数y=sin cx的图形动画,并观察参数c对函数图形的影响。 二、实验目的和意义 本实验的目的是让同学熟悉数学软件Mathematica所具有的良好的作图功能,并通过函数图形来认识函数,运用函数的图形来观察和分析函数的有关性态,建立数形结合的思想。 三、计算公式:y=sin cx 四、程序设计 五、程序运行结果

六、结果的讨论和分析 c 的不同导致函数的区间大小不同。 实验三 一、实验题目 观察函数f(x)=cos x 的各阶泰勒展开式的图形。 二、实验目的和意义 利用Mathematica 计算函数)(x f 的各阶泰勒多项式,并通过绘制曲线图形,来进一步掌握泰勒展开与函数逼近的思想。 三、计算公式 四、程序设计 五、程序运行结果 六、结果的讨论和分析 函数的泰勒多项式对于函数的近似程度随着阶数的提高而提高,但是对于任一确定次数的多项式,它只在展开点附近的一个局部范围内才有较好的近似精确度。 实验四 一、实验题目 计算定积分的黎曼和 二、实验目的和意义 在现实生活中许多实际问题遇到的定积分,被积函数往往不能用算是给出,而通过图像或表格给出;或虽然给出,但是要计算他的原函数却很困难,甚至原函数非初等函数。本实验目的,就是为了解决这些问题,进行定积分近似计算。 三、计算公式 四、程序设计 五、程序运行结果 六、结果的讨论和分析 本实验求的近似值由给出的n 的值的不同而不同。给出的n 值越大,得到的结果越接近准确的

大学物理实验课后答案

(1)利用f=(D+d)(D-d)/4D 测量凸透镜焦距有什么优点? 答这种方法可以避免透镜光心位置的不确定而带来的测量物距和像距的误差。 (2)为什么在本实验中利用1/u+1/v=1/f 测焦距时,测量u和v都用毫米刻度的米尺就可以满足要求?设透镜由于色差和非近轴光线引起的误差是1%。 答设物距为20cm,毫米刻度尺带来的最大误差为0.5mm,其相对误差为 0.25%,故没必要用更高精度的仪器。 (3)如果测得多组u,v值,然后以u+v为纵轴,以uv为横轴,作出实验的曲线属于什么类型,如何利用曲线求出透镜的焦距f。 答直线;1/f为直线的斜率。 (4)试证:在位移法中,为什么物屏与像屏的间距D要略大于4f? 由f=(D+d)(D-d)/4D → D2-4Df=d2→ D(D-4f)=d2 因为d>0 and D>0 故D>4f 1.避免测量u、ν的值时,难于找准透镜光心位置所造成的误差。 2.因为实验中,侧的值u、ν、f都相对较大,为十几厘米到几十厘米左右,而误差为1%,即一毫米到几毫米之间,所以可以满足要求。 3.曲线为曲线型曲线。透镜的焦距为基斜率的倒数。 ①当缝宽增加一倍时,衍射光样的光强和条纹宽度将会怎样变化?如缝宽减半,又怎样改变? 答: a增大一倍时, 光强度↑;由a=Lλ/b ,b减小一半 a减小一半时, 光强度↓;由a=Lλ/b ,b增大一倍。 ②激光输出的光强如有变动,对单缝衍射图象和光强分布曲线有无影响?有何影响? 答:由b=Lλ/a.无论光强如何变化,只要缝宽不变,L不变,则衍射图象的光强分布曲线不变 (条纹间距b不变);整体光强度↑或者↓。 ③用实验中所应用的方法是否可测量细丝直径?其原理和方法如何? 答:可以,原理和方法与测单狭缝同。 ④本实验中,λ=632。8nm,缝宽约为5*10^-3㎝,屏距L为50㎝。试验证: 是否满足夫朗和费衍射条件? 答:依题意: Lλ=(50*10^-2)*(632.8*10^-9)=3.164*10^-7 a^2/8=(5*10^-5)^2/8=3.1*10^-10 所以Lλ<

重庆大学数学实验报告七

开课学院、实验室:数统学院DS1421实验时间:2013年03月17日

由于matlab中小数只能是四位,所以我在编程的过程中将距离扩大了1000倍,但是并不会影响我们所求得的结果。 运行程序之后我们得到的结果为: 我们可以得到当金星与地球的距离(米)的对数值为9.9351799时,只一天恰好是25号。 8.编写的matlab程序如下: x=0:400:2800; y=0:400:2400; z=[1180 1320 1450 1420 1400 1300 700 900 1230 1390 1500 1500 1400 900 1100 1060 1270 1500 1200 1100 1350 1450 1200 1150 1370 1500 1200 1100 1550 1600 1550 1380 1460 1500 1550 1600 1550 1600 1600 1600 1450 1480 1500 1550 1510 1430 1300 1200 1430 1450 1470 1320 1280 1200 1080 940]; [xi,yi]=meshgrid(0:5:2800,0:5:2400); zi=interp2(x,y,z,xi,yi,'cubic'); mesh(xi,yi,zi); xlabel('x'),ylabel('y'),zlabel('高程'); title('某山区地貌图'); figure(2); contour(xi,yi,zi,30); 运行程序我们得到的结果如下所示: 山区的地貌图如下所示:

等高线图如下所示: 三、附录(程序等) 6. y=18:2:30;

数字图像处理课程设计(实验报告)

上海理工大学 计算机工程学院 实验报告 实验名称红细胞数目统计课程名称数字图像处理 姓名王磊学号0916020226 日期2012-11-27 地点图文信息中心成绩教师韩彦芳

一、设计内容: 主题:《红细胞数目检测》 详细说明:读入红细胞图片,通过中值滤波,开运算,闭运算,以及贴标签等方法获得细胞个数。 二、现实意义: 细胞数目检测在现实生活中的意义主要体现在医学上的作用,可通过细胞数目的检测来查看并估计病人或动物的血液中细胞数,如估测血液中红细胞、白细胞、血小板、淋巴细胞等细胞的数目,同时也可检测癌细胞的数目来查看医疗效果,根据这一系列的指标来对病人或动物进行治疗,是具有极其重要的现实作用的。 三、涉及知识内容: 1、中值滤波 2、开运算 3、闭运算 4、二值化 5、贴标签 四、实例分析及截图效果: (1)代码如下: 1、程序中定义图像变量说明 (1)Image--------------------------------------------------------------原图变量;

(2)Image_BW-------------------------------------------------------值化图象; (3)Image_BW_medfilt-------------------------中值滤波后的二值化图像; (4)Optimized_Image_BW---通过“初次二值化图像”与“中值滤波后的二值化图像”进行“或”运算优化图像效果; (5)Reverse_Image_BW--------------------------优化后二值化图象取反;(6)Filled_Image_BW----------------------已填充背景色的二进制图像;(7)Open_Image_BW--------------------------------------开运算后的图像; 2、实现代码: %-------图片前期处理------------------- %第一步:读取原图,并显示 A = imread('E:\红细胞3.png'); Image=rgb2gray(A); %RGB转化成灰度图 figure,imshow(Image); title('【原图】'); %第二步:进行二值化 Theshold = graythresh(Image); %取得图象的全局域值 Image_BW = im2bw(Image,Theshold); %二值化图象 figure,imshow(Image_BW); title('【初次二值化图像】'); %第三步二值化图像进行中值滤波 Image_BW_medfilt= medfilt2(Image_BW,[13 13]); figure,imshow(Image_BW_medfilt); title('【中值滤波后的二值化图像】'); %第四步:通过“初次二值化图像”与“中值滤波后的二值化图像”进行“或”运算优化图像效果 Optimized_Image_BW = Image_BW_medfilt|Image_BW; figure,imshow(Optimized_Image_BW); title('【进行“或”运算优化图像效果】'); %第五步:优化后二值化图象取反,保证:‘1’-〉‘白色’,‘0’-〉‘黑色’ %方便下面的操作 Reverse_Image_BW = ~Optimized_Image_BW; figure,imshow(Reverse_Image_BW); title('【优化后二值化图象取反】');

大学物理实验答案完整版

大学物理实验答案 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】

实验一 物体密度的测定 【预习题】 1.简述游标卡尺、螺旋测微器的测量原理及使用时的注意事项。 答:(1)游标卡尺的测量原理及使用时的注意事项: 游标卡尺是一种利用游标提高精度的长度测量仪器,它由主尺和游标组成。设主 尺上的刻度间距为y ,游标上的刻度间距为x ,x 比y 略小一点。一般游标上的n 个刻度间距等于主尺上(n -1)个刻度间距,即y n nx )1(-=。由此可知,游标上的刻度间距与主尺上刻度间距相差n 1,这就是游标的精度。 教材P33图1-2所示的游标卡尺精度为 mm 501,即主尺上49mm 与游标上50格同长,如教材图1-3所示。这样,游标上50格比主尺上50格(50mm )少一格(1mm ),即游标上每格长度比主尺每格少1÷50 = 0.02(mm), 所以该游标卡尺的精度为0.02mm 。 使用游标卡尺时应注意:①一手拿待测物体,一手持主尺,将物体轻轻卡住,才 可读数。②注意保护量爪不被磨损,决不允许被量物体在量爪中挪动。③游标卡尺的外量爪用来测量厚度或外径,内量爪用来测量内径,深度尺用来测量槽或筒的深度,紧固螺丝用来固定读数。 (2)螺旋测微器的测量原理及使用时的注意事项: 螺旋测微器又称千分尺,它是把测微螺杆的角位移转变为直线位移来测量微小长 度的长度测量仪器。螺旋测微器主要由固定套筒、测量轴、活动套筒(即微分筒)组成。

如教材P24图1-4所示,固定套管D上套有一个活动套筒C(微分筒),两者由高精度螺纹紧密咬合,活动套筒与测量轴A相联,转动活动套筒可带动测量轴伸出与缩进,活动套筒转动一周( 360),测量轴伸出或缩进1个螺距。因此,可根据活动套筒转动的角度求得测量轴移动的距离。对于螺距是0.5mm螺旋测微器,活动套筒C的周界被等分为50格,故活动套筒转动1 格,测量轴相应地移动0.5/50=0.01mm,再加上估读,其测量精度可达到0.001 mm。 使用螺旋测微器时应注意:①测量轴向砧台靠近快夹住待测物时,必须使用棘轮而不能直接转动活动套筒,听到“咯、咯”即表示已经夹住待测物体,棘轮在空转,这时应停止转动棘轮,进行读数,不要将被测物拉出,以免磨损砧台和测量轴。②应作零点校正。 2.为什么胶片长度可只测量一次? 答:单次测量时大体有三种情况:(1)仪器精度较低,偶然误差很小,多次测量读数相同,不必多次测量。(2)对测量的准确程度要求不高,只测一次就够了。(3)因测量条件的限制,不可能多次重复测量。本实验由对胶片长度的测量属于情况(1),所以只测量1次。

关于大学数学实验的心得体会

关于大学数学实验的心得体会数学,在整个人类生命进程中至关重要,从小学到中学,再到大学,乃至更高层次的科学研究都离不开数学,随着时代的发展,人们越来越重视数学知识的应用,对数学课程提出了更高层次的要求,于是便诞生了数学实验。 学期最初,大学数学实验对于我们来说既熟悉又陌生,在我们的记忆中,我们做过物理实验、化学实验、生物实验,故然我们以为数学实验与它们一样,当我们在网上搜索有关数学实验的信息时,我们才知道,大学数学实验作为一门新兴的数学课程在近十年来取得了迅速的发展。数学实验以计算机技术和数学软件为载体,将数学建模的思想和方法融入其中,现在已经成为一种潮流。 当我们怀着好奇的心情走进屈静国老师的数学实验课堂时,我们才渐渐懂得,数学实验是一门有关计算机软件的课程,就像c语言一样,需要编辑运行程序,从而进行数学运算,它不需要自己来运算,就像计算器一样,只要我们自己记下重要程序语句,输入运行程序,便可得到运行结果,大大降低了我们的运算量,给我们生活带来许多便捷,在大一时,我学过c语言,由于这样的基础,让我能够更快的学会并应用此软件。 时间飞逝,转眼间,我们就要结课了,这学期我们学习了mathematics的基础,微积分实验,线性代数实验,概率

论与数理统计实验,数值计算方法及实验。通过这学期的学习,我也积累了些自己的学习方法和心得。首先,我们要在平时上课牢记那些mathematics语言和公式,那些东西就想单词和公式一样,只需要背诵;然后,我们要看几遍书,并多看一下例题;最后,我们要多应用mathematics软件去练习。正所谓熟能生巧,我坚信,只要我们能够做到这三步,我们就能很好的掌握这门课程。 通过学习使用数学软件,数学实验建模,使我们能够从实际问题出发,认真分析研究,建立简单数学模型,然后借助先进的计算机技术,最终找出解决实际问题的一种或多种方案,从而提高了我们的数学思维能力,为我们参加数学竞赛和数学建模打下了坚实的基础,同时也为我们进一步深造和参加工作打下一定的实践基础!

数学模型课程设计

数学模型课程设计

文档仅供参考,不当之处,请联系改正。 攀枝花学院 学生课程设计(论文) 题目:蔬菜的运输问题 学生姓名:孟蕾 学号: 1080 所在院(系):数学与计算机学院 专业:信息与计算科学 班级:级信本 指导教师:李思霖 6 月 29 日 攀枝花学院教务处制

攀枝花学院本科学生课程设计任务书

课程设计(论文)指导教师成绩评定表

摘要 本文针对蔬菜的运输问题进行分析,针对蔬菜运输时所需要注意的蔬菜供应量,需求量,运输距离,运输补贴,短缺补偿等约束性条件,运用lingo编程的方法解决如何进行蔬菜运输来分别使各类要求的支出最少的问题。 问题一中,要求如果不考虑短缺补偿,只考虑运费补贴最少,请为该市设计最优蔬菜运输方案。我们将供货商和销售点需求分别编号a和b,数量是从1~8和1~35。从题中能够看出其约束条件,所有销售点从第 A基地获得的蔬菜数量应该等于该基地所 i 生产的蔬菜数量;所有基地给 B销售点提供的蔬菜数量要大于等 j 于0,而且应该小于或等于该点的需求量。 问题二中,增添了对短缺补缺的考虑,规定各蔬菜销售点的短缺量一律不超过需求量的30%,在同时考虑短缺补偿和运费补贴的情况下再次设计最有蔬菜方案。由题意即是要求总费用,具体步骤仍同问题一,需要变化的分别是总费用w的表示式和关于销售点需求的约束条件。w变为原运输补贴的公式再加上每个销售点每吨短缺蔬菜的数量乘上各个销售点不同的短缺补偿,短缺数量需要用各个销售点的需求减去所有基地供给给这个的销售点的蔬菜数量之和。 问题三中,要求增加任意两个基地的生产数量,使得不存在短缺情况出现,然后视运费补贴最小的情况来确定哪两个基地分

相关文档
相关文档 最新文档