文档库 最新最全的文档下载
当前位置:文档库 › 实验五 数组实验

实验五 数组实验

实验五  数组实验
实验五  数组实验

实验五数组的使用

一实验目的要求

1 掌握数组的概念和使用方法。

2 掌握数组初始化的方法。

3学会字符数组和字符串的应用。

4 学会用数组名作函数的参数。

二有关概念

1 只有静态数组和外部数组才能初始化。

2 引用数组时,对下标是否越界不作检查。如定义int a[5];在引用时出现a[5],不给出错信息,而是引a[4]下面一个单元的值。

3 字符串放在字符数组中,一个字符串以‘/o’结束,有一些字符串函数如strcpy,strcmp,strlen等可以方便一进行字符串运算。

4 如有如下定义:

char *str=“I love china”;表示 str是一个字符型指针变量,它的值是一个字符数据的地址。不要认为str是字符串变量,在其中存放一个字串“I love china”。

5 用数组名作函数实参时,传到形参的是数组的首地址。

三实验内容和步骤

1 定义三个数组

int a[5];

int b[2][2];

char c[10];

(1)分别在函数体外和函数体内对它们进行初始化,然后输出它们的值。(2)在程序中再加一语句,输出a[5],b[2][2] ,分析结果。

(3)对C数组改为用赋值语句给各元素赋初值:c[0] ~ c[9]各元素分别为:…I?, …?, …a?, …m?, …?, …b?, …o?, …y?。然后用printf(“%s”,c)输出字符串,分析结果。

参考程序如下:

(1)main()

{ int i,x,y;

static int a[5]={1,2,3,4,5};

static int b[3][2]={{3,4},{6,7},{9,5}}

static char c[10]={ …i?, …l?, …p?, …q?, …k?, …s?, …d?, …e?, …a?};

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

printf( “%5d”,a[i]);

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

for(y=0;y<2;y++)

printf(“%5d”,b[x][y]);

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

printf(“%3c”,c[i]);

}

(2)结果无此值,在上面程序中要输出a数组第5个元素,和b数组的第3行第2例元素,应加此程序行:

Printf(“%d”,a[4]);

Printf(“%d”,b[2][1]);

2 有一数组,内放10个整数,要求找出最小的数和它的下标。然后把它和数组中最前面的元素对换位置。

编写程序,上机运行,并记录下结果。

提示:数组的10个元素可用输入函数scanf()通过键盘输入进去,找出数组中最小的元素可通过循环语句和条件语句来实现。

设min是存放数组中最小元素的变量,array[k]为一个暂存单元。实现最前面的元素与最小元素对换可通过下面语句实现:

array[k]=array[0];

array[0]=min;

参考程序如下:

main()

{i,array[10],min,k=0;

printf(“Please input 10 data\n”);

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

scanf(“%d”,&array[i]);

printf(“ Before exchang:\n”);

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

printf(“%5d”,array[i]);

min=array[0];

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

if(min>array[i])

{ min=array[i];

k=i;

}

array[k]=array[0];

array[0]=min;

printf(“After exchange:\n”);

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

printf(“%5d”,array[i]);

printf(“k=%d\t min=%d\n”,k,min)

}

3 在一个已排好序的数列中(由小到大)再插入一个数,要求仍然有序。编程并上机运行。

提示:编程时应考虑到插入的数的各种可能性(比原有所有的数大;比原有所有的数小;在最大数和最小数之间)。

参考程序如下:

#include

main()

{ int i,n;

folat a,x[20],y[21];

printf(“Please input n value\n”);

scanf(“%d”,&n);

printf(“Please input value (from small to big)\n”);

for(i=0;i

scanf(“%f”,&x[i]);

printf(“Insert value=?”);

scanf(“%f”,&a);

i=0;

while(a>x[i]&&i

{ y[i]=x[i];

i++;

}

y[i]=a;

for(i=i+1;i

y[i]=x[i-1];

printf(“\n”);

for(i=0;i

{ printf(“%8.2f”,y[i]);

if((i+1)%5==0 ) puts(“\n”);

}

}

4 编写一程序,一班级有n名学生要求按他们姓名的顺序排列(按汉语拼音的字母顺序从小到大),并按序输出。

参考和程序如下:

#include “stdio.h”

void strup(char str[])

main()

{ char str[20];

char name[20][20];

int i,j,t,n;

printf(“Please input name number of sorting\n”);

scanf(“%d”,&n);

printf(“Please input name\n”);

for(i=0;i

{ gets(name[i]);

strup(name[i]);

}

for(i=0;i

{for(j=i+1;j

{ for(k=0;;k++)

if(name[i][k]

break;

else if(name[i][k]>name[j][k])

{strcpy(str,name[j]);

srycpy(name[j],name[i]);

strcpy(name[i],str);

break;;

}

}

}

for(i=0;i

printf(“%s”,name[i]);

}

void strup(char str[])

{ int i;

for(i=0;str[i]!=?\o?;i++)

if(str[i]>=?a?&&str[i]<=?z?)

str[i]=str[i]+?A?-…a?;

}

*5打印魔方阵,所谓魔方阵是指,它的每行每一列的和和对角线之和均相等。

例如,三阶魔方阵为

8 1 6

3 5 7

4 9 2

要求打印由1到n2的自然数构成的魔方阵。

提示:魔方阵中各数排列规律为:

(1)将“1”放在第一行中间一列;

(2)从“2”开始直到n*n止各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数加1;

(3)如果上一数的行数为1,则下一个数的行数应为n(指最下一行);(4)当上一个数的列数为n时,下一个数的列数应为1,行数减1。

(5)如果按上面的规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。

main()

{ int a[16][16],i,j,k,p,m,n;

p=1; /* 初始化 */

while(p==1)

{ printf(“Please input n:\n”);

scanf(“%d”,&n);

if (n!=0)&&(n<=15)&&(n%2!=0)

{ printf(“矩阵阶数是%d\n”,n);

p=0;

}

}

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

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

a[i][j]=0;

j=n/2+1; /* 建立魔方面军*/

a[1][j]=1;

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

{ i=i-1;

j=j+1;

if((i<1)&&(j>n))

{ i=i+2;

j=j-1;

}

else

{ if(i<1) i=n;

if(j>n) j=1;

}

if(a[i][j]= =0)

a[i][j]=k;

else

{ i=i+2;

j=j-1;

a[i][j]=k;

}

}

for(i=1;i<=n;i++) /* 输出 */ { for(j=1;j<=n;j++)

printf(“%4d”a[i][j]);

printf(“\n”);

}

}

四习题

1 下列有关数组的说明或语句是否存在错误?

(1)int a[3,4]; a[3]=a[1*2];

(2)int a[3]={10,8,3,4}

(3)float a[4];a[0]=15;a[4]=100;

(4)int I,j,k[3]={3};

(5)char ch[]={};

2 从键盘输入10整数,分别用选择法,交换法,插入法对它们进行由小到大(或由大到小)排序,且输出排序后的结果。

2利用上题程序的排序结果,再从键盘输入一个整数,然后从排序的数组查找是否有与刚输入的数组相等的元素,若有,是第几个?若找不到,则显示相应的信息。

3下面是一个输出10阶杨辉三角形的程序:

#define N 10

main()

{ int a[N][N],i,j;

for(i=1;i

{a[i][1]=1;a[i][i]=1;}

for(i=3;i

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

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=1;i

{ for(j=1;j<30-2*i;j++) printf(““);

for(j=1;j<=i;j++) printf(“%4d”,a[i][j]);

printf(“\n”);

}

}

修改上述程序,使输出形式为

1

1 2

1 2 3

1 2 3 4

::

1 10

2从键盘输入N*N的矩阵(N可以定义为5),输出此

矩阵和转置后的矩阵。

3从键盘输入m*n行列式,并输出此行列式;然后求

所有的鞍点(某元素若是本行元素中的最大者,同

时又是本列元素中最小者,则此元素称为鞍点)。

最后输出这些鞍点及其对应坐标值。(若无鞍点,

则显示无鞍点信息)。

4从键盘上输入一字符串,并判断是否形成回文(即

正序和逆序一样,如“abcd dcba”)。

5按字符数组输入字符,将其中的英文字母都改成

‘*’,然后按字符串形式输出。

实验六函数的使用

一实验目的要求

1掌握函数的定义和调用方法。

2掌握函数实参与形参的对应关系,以及“值传递”的方式。

3掌握函数的嵌套调用和递归函数编写的规律。

4学会使用宏替换编写程序,弄清“文件包含”的作用。

5学会全局变量和局部变量、动态变量和静态变量的概念和使用方法。

二概念提示

1变量的生存期是一个静态的概念,是不变的,作用域是一个动态的概念,随程序的运行而变。

(1)从作用域角度分,有局部变量和全局变量。

(2)从变量存在的时间来分:有动态存贮和静态存贮。

2 C语言中的参数调用为值调用,名调用(地址)通过指针实现的。

3用递归方式编写程序,一般由三部分组成:

(1)递归条件;

(2)递归化简;

(3)递归出口;

一个递归总是可分为“回推”和“递推”两个阶段,即从要解决问题出发,一步步推到已知条件,然后再由已知条件一步步找到结论。

三实验内容和步骤

1通过运行下面程序,熟悉函数的调用方法。

main()

{ int x,y,z;

x=4;y=12;z=6;

fun(x,y,z);

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

}

fun(int i, int j, int k)

{ int t;

t=(i+j+k)/2;

printf(“t=%d\n”,t);

}

2运行下面程序,写出执行结果。

main()

{ int i,j,x,y,n,g;

i=4;j=5;g=x=6;y=9;n=7;

f(n,6);

printf(“g=%d;i=%d;j=%d\n”,g,I,j);

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

f(n,8);

}

f(int i,int j)

{int x,y,g;

g=8;x=7;y=2;

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

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

}

3编写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。参考程序如下:

#include”match.h”

main()

{ int m;

printf(“Please input a data m=:”);

scanf(“%d”,m);

prime(m);

}

prime(int n)

{ int i,k;

k=n/2;

for(i=2;i<=k;i++)

if (n%i==0) break;

if(i>=k+1)

printf(“This is a prime number”);

else printf(“This isn?t a prime number”);

}

4先读懂程序,分析出结果,然后上机运行此程序。

# define FUE(K) K+3.14159

# define PR(a) printf(“a=%d\t”, (int)(a))

# define PRINT(a) PR(a) ; putchar(…\n?)

# define PRINT2(a,b) PR(a); PRINT(b)

# define PRINT3(a,b,c) PR(a); PRINT2(b,c)

# define MAX(a,b) (a

main()

{ int x=2;

PRINT(x*FUE(4));

}

{ int f;

for(f=0;f<=60;f+=20)

PRINT2 ( f,5.12*f+45);

}

{ int x=1,y=2;

PRINT3(MAX(x++,y),x,y);

PRINT3(MAX(x++,y),x,y);

}

}

*5 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串,输出上述结果。

此程序编写时最好把存放字母、数字、空格和其它字符的变量定义为全程变量,这样在函数中就不必定义了。用其它方法也可以。

6写出计算Ackermann函数Ack(m,n)的递归函数,对于m≥0,n≥0,Ack(m,n)定义为:

Ack(0,n)=n+1

Ack(m,0)=Ack(m-1,1)

Ack(m,n)=Ack((m-1),Ack(m,n-1))

对于m>0,n>0,要显示出计算结果。

编程并上机调试。

#include

long int ack(int m,int n)

long int value;

if(m<0||n<0)

{ printf(“The condiction of caculating is ont exist,EXIT!\n”);

exit();

}

if(m==0)

{ value=n+1;

printf(“ack(0,%d)=%d\n”,n,n+1);

}

else if(n= =0)

{ value=ack(m-1,1);

printf(“ack(%d,1)=%d\n”,m-1,ack(m-1,1));

}

else

{ printf(“ack(%d,%d)=ack(%d,ack(%d,%d))\n”,m,n,m-1,m,n-1);

value=ack((m-1),ack(m,n-1));

}

return(value);

}

long int ack(int m,int n);

main()

{ int mm,nn;

long int a;

printf(“Please enter m,n:”);

scanf(“%d%d”,&mm,&&nn);

a=ack(mm,nn);

printf(“ack(%d,%d)=%ld\n”,mm,nn,a);

getchar();

}

*7 写一函数,输入一行字符,将此字符串中最长和单词输出。

编写程序并上机调试运行,记录下程序运行的结果。

提示:我们认为每行字符都是由字母组成的字符串,在程序中设longest函数为实现寻找最长的字符串。设标记flag表示单词是否开始,flag=1表示单词开始,flag=0表示单词未开始。Point代表当前单词的起始位置,place代表最长单词的起始位置。Len代表当前单词已累计字母的个数,length代表先前单词中最长单词的长度。

下面给一个程序段,上实现寻找最长的单词。

int longest(string)

Char string[];

{ int len=0,i,length=0,flag=1,place,point;

for(i=0;i<=strlen(string);i++)

if(alphab(string[i]))

if(flag)

{ point=i;

flag=0;

}

else len++;

else

{ flag=1;

if(len>length)

{ length=len;

place=point;

len=0;

}

}

return(place);

}

四习题

1 下列说法哪些是不正确的

(1)C语言的函数必须在主函数的前面定义。

(2)函数名前面都必须写数据类型和存贮类型。

(3)一个C程序可以包含多个函数,并且必须有最多有一个主函数。

(4)函数的外部不允许再说明其它变量。

(5)void类函数不能有返回值。

(6)函数不一定都有返回值,不管其类型是否为void。

(7)引用程序中的函数被调用函数必须在调用函数前面预先定义。

(8)在函数内部定义的变量都是局部量。

(9)所有外部量,都必须在其它程序中定义过。

(10)函数返回的数据类型必须和函数数据类型一致。

(11)调用函数的实参与被调用函数的形参必须保证其个数、次序类型完全一致。

(12)在C程序中,函数嵌套调用不允许超过18层。

2下列定义有何错误?

(1)float f(x,y);

int x,y;

{ }

(2) f(int x,y)

{ retuen x*y;}

(2)int max(x,y) /*定义求最大值的函数*/

{ int x,y,z;

z=x>y? x:y;

return z;

}

(3)int f(x,y,z)

int x,y;

{ int z;

:

}

(5) int f (int n) /*定义求n!的函数*/

{ if n<=0 return 1;

else f=n*f(n-1);

}

(6)int main(x,y)

int x,y;

{ …

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

}

(7)int x,y;

f(int x)

{ y=x*x; return y ;}

(8)int f1(x)

int x;

{ int f2(y)

int y;

{ …}

:

}

3定义一个函数,调用程序通过f(n,x)的形式就可能计算x3+x-1 (5+x)3+(5+x)-1 (sinx)3+sinx-1等样式的表达式的值。

4写一递归函数,计算

1 当n=0 或m=n

c m n= m 当n=1

c m-1n-1+c n m-1当m>n>1

5写一递归函数,将读入的整数按位分开后以相反顺序输出。

6写一函数digh(m,k),它将回送整数m从右边开始的第k个数字的值,例如digh(8542,3)=5,digh(12,4)=0.

7写两个函数,分别求两个整数的最大公约数和最小公倍数。

8定义一个宏swap(x,y),完成对两个整数x,y的交换。

9定义一个宏max(x,y,z)从三个数x,y,z中找出最大数。

综合实验二求矩阵鞍点

一实验目的要求

1 掌握求最大值、最小值的方法。

2 掌握用数组解决矩阵问题的一般方法。

3 掌握数组作为函数参数在程序设计中的应用方法。

二实验内容和步骤

若矩阵某位置上的元素在该行上为最小,而该列上为最大,则称此位置为矩阵的鞍点。输出给定矩阵中的所有鞍点。

要求如下:

(1)编制一个通用的输出给m行n列矩阵a中所有鞍点的函数ardian(a,m,n)。(2)矩阵可能无鞍点,也可能有多个鞍点,设计程序时要考虑这些。

方法提示:

从矩阵的第0行开始到最后一行为止,逐行寻找该行中最小元素,然后对其中的每一个元素所在的列寻找最大值,如果该列上的最大值与该行上的最小值相等,则说明该元素为鞍点,将它所在的行号和列号输出。

综合实验五对分法求非线形方程的根

一、实验目的要求

1、练习模块化程序设计的方法。

2、练习函数作为形参的程序设计方法。

3、掌握对分搜索法求非线性方程多个实根的方法。

二、实验内容和步骤

用对分法以指定步长h搜索非线性方程f(x)=0在指定区间[a,b]上的全部实根。具体要求如下:

(1)编写一个用对分搜索法求非线性方程f(x)=0 在指定区间 [a,b]上的所有实根的函数dhrt(a,b,h,f). 其中h 为搜索时使用的步长;f为函数指针,指向计算非线性方程左端函数值f(x)的函数。在本函数中输出所有的实根。输出形式为:

x1=具体值

x2=具体值

………

(2)编写一个主函数以及计算非线性方程左端函数值的函数,调用(1)中的函数求下列非线性方程在区间 [-2,5] 上的全部实根:

f(x)=x6-5x5+3x4+x3-7x2+7x-20=0

取 h=0.2,ε=0.000001。

方法提示:

从区间端点 x0=a开始,以h为步长,逐步往后进行搜索。对于每一个子区间[xi,+xi+1](其中xi+1=xi+h):若f(xi)=0,则xi即为一个根,从xi+0.5h开始以h 为步长在往后搜索。若f(xi)=0,则xi+1即为一个实根,从x+1+0.5h开始以h为步长再往后搜索。若f(xi)f(xi+1)>0,则说明在当前区间内无实根,从xi+1开始以h为步长在往后搜索。若f(xi)f(xi+1)<0,则说明在当前区间内有实根。此时,反复将区间减半,直到发现一个实根;或子区间长度小于ε,子区间的中点即为实根近似值。然后从当前搜索到的实根开始以h为步长再往后搜索。其中ε为预先给定精度要求。

以上过程一直进行到区间右端点b为止。

综合实验六求解雅瑟夫问题

一实验目的要求

1 练习动态分配与释放数组空间的方法。

2 体会模型设计在程序设计中的应用。

二实验内容和步骤

设有n个人围做在圆桌周围,从某个位置开始用自数进行编号为1,2….,n. 然后从编号为k的人从1开始报数,数到m的人便出列;下一个人(第m+1个)又从容不迫开始报数,数到m的人便是第二个出列的人.如此继续下去直到最后一个人出列为止。要求输出这个出列的顺序。

这个问题称为雅瑟夫问题。

具体要求如下:

(1)n\m\k由键盘输入,输入前要有提示。

(2)在输入n后,动态建立方法说明中所需要建立的数组空间;程序运行结束时释

放该存储空间。

(3)在输出时,各编号之间用两个空格来分隔。

(4)分别用n=8,m=4,k=1以及n=10,m=12,k=4调试运行你的程序.

方法提示:

设以自然数1,2…,n为元素构成一个环形队列,并用一个长度为n+1的一维数组a 存放各元素,即数组元素a[i]表示元素i的下一个元素.显然,在开始时,该数组的各元素如下:

a[i]=i+1,i=1,2,… ,n-1

a[n]=1

(为直观起见,其中数组元素a[0]不用),随着报数的进行,不断地有元素从队列中出来,这个数组中的元素值也在不断地变化,即当有元素出列后,某些元素i的下一个元素就不一定是i+1了.

一般来说,假设当前要出列的元素为k,它的前一个元素为1,则有a[1]=k,且k 的下个元素为a[k].即当前状态为

…,1,k,a[k], …

当k出列以后,将变为

…,1,a[k], …

此时1的下一个元素已不是k,而是原来k的下一个元素a[k].由此可知,元素k 出列以后,要做以下两件工作:

(1)将当前要出列的元素k输出;

(2)将元素a[k]的值赋给a[1],即将元素1的下一个元素改为原来k的下一个

元素a[k].

下面再确定下一个要出列的元素.由上可知,当元素k出列后,下一轮的第一个报数者应是a[k],我们将它赋给k,而当它报完数以后,又将它赋给1,且又将下一

个报数者a[k]赋给k.这就是说,在报数的过程中,k始终指向当前报数者,1指向刚报完数的元素,a[k]是下一个要报数的元素.当经过m-1次后,k指向的元素就要数到m,它便是要出列者.由此可知,每一次的报数,需要作以下两个操作: 1=k,k=a[k]

综合实验七求皇后问题

一实验目的要求

1 练习为数组动态分配与释放存贮空间。

2 掌握回溯法这种算法的设计方法。

二实验内容和步骤

由n2个方块排成n行n列的正方形称为“n元棋盘”。如果两个皇后位于n元棋盘上的同一行或同一列或同一对角线上,则称它们为互相攻击。

要求输入使n元棋盘上的n个皇后互不攻击的所有布局。

具体要求如下:

(1)n由键盘输入,输入前要有提示。

(2)在输入n后,动态建立方法说明中所需要建立的数组空间;程序运行结束时释放该存贮空间。

(3)分别用n=4,5,6运行你的程序。

方法提示:

首先定义一个长度为n+1的一维数组a,其中每一个元素a[i](i=1,2,…,n)

随时记录第I行上的皇后所在的列号(为直观起见,其中数组元素a[0]不用)。

容易验证,第i行与第j行上的皇后在某一对角线上的充要条件为|a[i]-a[j]|=|j-1|

而它们在同一列上的充要条件为

a[i]=a[j]

回溯法求解皇后问题的方法如下。

从第一行(即i=1)开始进行以下过程。

设前i-1行上的皇后已布局好,即它们均互不攻击。现在考虑安排第i行上的皇后的位置,使得与前i-1行上的皇后也互不攻击。为了实现这一点,可以从第i行皇后的当前位置a[i]开始向右进行搜索:

(1)若a[i]>n,则将第i行皇后放在第一列,且回退一行,考虑第i-1行上的皇后与前i-2行上的皇后均互不攻击的下一个位置。此时如果已退到第0行(实际没有这一行),则过程结束。

(2)若a[i]≤n,则需检查第i 行上的皇后与前i-1行上的皇后是否互不攻击。

若有攻击,则将第i行上的皇后右移一个位置(即a[i]=a[i]+1),重新进行这个过程;若无攻击,则考虑安排下一行上的皇后位置,即i=i+1。(3)若当前安排好的皇后是在最后一行(即第n行),则说明已经找到了n个皇后互不攻击的一个布局,将这个布局输出(即输出a[i],i=1,2,…,n)。然后将第n行上的皇后右移一个位置(即a[n]=a[n]+1),重新进行这个过程,以便寻找另一种布局。

实验五 数组

实验五数组 一、实验目的 1. 掌握一维、二维数组的定义和使用方法; 2. 掌握字符串的定义和处理方法; 3. 熟悉并掌握应用数组解决实际应用问题; 二、实验内容 1. 用冒泡法将从键盘输入的10个学生的成绩从高到低进行排序;输入一个学生的成绩,插入到已排好序的学生成绩数组中去;最后将排好序的成绩单进行反序存放。(用函数完成) 2. 首先输入一个大于二且小于十的整数n,然后定义一个二维整型数组(n*n),初始化该数组,将数组中最大元素所在的行和最小元素所在的行对调。 要求:① n*n数组元素的值由scanf函数从键盘输入(假定最大值最小值不在同一行上),然后输出该数组;②查找最大值最小值所在的行,将数组中最大元素所在的行和最小元素所在的行对调,并输出对调后的数组;③为直观起见,数组按n行n列的方式输出;④修改程序,对最大值与最小值可能出现在一行种的情况进行处理。 3. 一个数组A中存有n(n>0)个整数,在不允许使用其他数组的前提下,将每个整数循环向右移m(m>=0)个位置,即将A中的数据由(A0A1...An-1)变换为(An-m...An-1A0A1...An-m-1)(最后m个数循环移至最前面的m个数)。 要求:输入n(1=

企业资源管理实验报告

江苏理工学院课程实验报告 课程名称____企业资源管理__ 实验名称 ERP系统主流程实验 班级 学号 姓名 成绩 2015年10月27日

ERP系统主流程实验 1 订单与批次需求计划 本次实验针对按订单生产的业务流程,即根据客户订单安排生产及原材料采购。批次需求计划是指计划的依据是订单/工单/计划,系统自动生成其工单的生产计划及原料的采购计划。当需要针对某张特定工单或订单或计划时,单独计算其生产计划及采购计划时可利用本作业,也就是说批次需求计划适用于接单生产。本次实验我们采用的计划依据为订单。 通过此实验,目的在于: ●了解ERP系统中订单与批次需求计划之间的业务流和信息流; ●理解批次需求计划的主要作用与目的; ●了解主要的基础数据含义及其设置方法; ●掌握订单录入、批次需求计划生成的基本方法; 1.1订单录入 【实验要求】 能根据订货情况制作完整的客户订单,注意其中的某些重要信息:订货数量,价格,交货日期,付款条件等。 【实验资料】 2007-02-02销售员蔡春接到客户“中实集团”的一个订货电话,购买新款办公椅100张,要求2007-02-23交货。当日签订了销售合同,合同内容约定每张办公椅含税单价为600元,交货时随货附发票,交货后一天内付款,并以银行转账支票结算。 【实验环境】 系统日期:2007-02-02 操作人员:系统管理员(DS) 实验准备:系统基础信息设置完成,或恢复账套数据到数据库中。

图2.1系统登录界面 提示:系统日期设置为 2007-02-02。 【实验步骤】 第1步:如图2.2所示,从左边树状结构处,选择“进销存管理”之“销售管理子系统”,点击“录入客户订单”模块。打开后就是“录入客户订单”界面。 图2.2 销售管理子系统界面 第2步:业务人员蔡春根据订货情况,录入客户订单。订单录入如图2.3所示。

心理学实验设计方案

心理学实验设计方案 一,实验题目:人类在背诵英语单词时,英语单词的长度和被试背诵的时间是否影响背诵者的记忆效果 1假设 1.1选用短的英语单词背诵时,背诵者的记忆效果比选用长的英语单词好; 1.2背诵英语单词的时间长的比背诵时间短的记忆效果好 2变量及额外变量的操纵方法 2.1自变量:单词的长度,背诵时间 2.2因变量:背诵者的记忆效果(在分析中,选取单词默写正确个数为 2.3额外变量:被试的性别、智商水平,疲劳效应等 2.3.1额外变量的操控方法: 2.3.1.1选择性别数量上相等的被试(男10女10) 2.3.1.2选择在同一智商水平(按韦克斯勒智力量表)的被试 2.3.1.3让被试在实验中休息 3被试的选择及分组 选取男女被试各10名,每位被试接受四种水平(长单词—长时间、长单词—短时间、短单词—长时间、短单词—短时间)的实验处理 4实验实施过程及方法 4.1选择100个英语单词(其中,长短单词各50个)作为实验材料,20名被试把他们随机分配到四个处理水平上,每个处理水平上分配5名被试。 4.2让每组被试记忆单词,短单词选取CET四级词汇中含5-6个字母的单词,长单词选取CET四级词汇中含9-11个字母的单词;记忆的短时间为5分钟,长时间为10分钟。 4.3记忆时间到时,让被试默写自己记忆的单词;批改被试默写的单词 二、计算机键盘与水平面可有三种倾斜度:0度、10度和15度,试设计一项实验来证明,哪一种倾斜度最有利于输入字符。 单因素被试间设计

1. 提出假设:在计算机和水平面之间的三种倾斜度中,0度,10度和15度中,打一段相同的材料(使用相同的语言),在完成任务以后,比较一下哪种任务完成的时间是最少的,假设倾斜10度所需要的时间是最少的。 2. 被试 筛选被试:筛选被试:在对被试进行选择的过程中,需要进行严格的筛选。在进行最后的测试之前,要对每个被试进行测试。让所有被试在同一个房间里进行,给他们500字的中文文字,在最后的结果中筛选出在3-4分钟内完成的被试,这样能够排除掉打字技术对成绩的干扰。其中选出被试45名。每个被试分别接受三个水平的实验处理(0度,10度和15度)。 单因素被试间设计 3. 实验材料 3台配置一样的电脑,分别是:0度,10度和15度。 分别给被试呈现不熟悉的材料,避免对材料有熟悉度,每段文字500字。 4. 实验程序 (1) 把被试统一安排在指定教室进行,事先不需要太多的交流。 (2) 指导语:大家好,今天我们要进行一项文字输入的测试。在屏幕中央将会出现一篇文字,请您以最快的速度输入文字。在我说开始后,大家可以开始了。 (3)电脑自动记录被试完成的时间。 (4)进行数据分析。 三、研究者要探讨灯光强度与颜色对反应时的影响,试设计一个2×2实验研究范式。(要求说明实验中自变量、因变量与控制变量,是组间设计还是组内设计,被试如何分组,实验结果如何整理等) 参考答案: 实验设计:采用2×2多因素实验设计。 该实验研究的自变量有两个:灯光强度:分为强、弱两个水平,灯光的颜色:可分为红、绿两种不同颜色的灯光。这样,共有四种实验处理:红色的强光、红色的弱光、绿色的强光、绿色的弱光。 因变量:记录每个被试在不同实验条件下的反应时间。 控制变量:所有被试的练习次数、准备状态、额外动机、年龄以及其他个别差异应保持相等。

实验5 数组1答案

实验数组1 实验目的: 1、进一步掌握循环结构的程序设计 2、掌握在循环结构里面使用break、continue 3、掌握一维数组的定义与使用 实验内容: 一、观察下列代码(有语法问题自己解决) 1、利用无限循环输入数据,直到条件满足利用break跳出循环: #include using namespace std; int main( ) { int x,sum=0; while(1) { cin >> x; if(x <= 0) break; sum += x; } return 0; } 2、利用continue语句实现输出1-100之间的偶数: #include using namespace std; int main() { for (int i = 0;i <= 100; i++) { if (i % 2 != 0) continue; cout << i << ' '; } return 0; } 二、编码训练 1、利用break语句写一程序:循环从键盘输入数据并累加起来,直到输入的数为零时结束循环,打印累加结果。(参考前面第1题) #include using namespace std; int main( )

{ int x,sum=0; while(1) { cin >> x; sum += x; if(x == 0) break; } cout << "The sum is " << sum << endl; return 0; } 2、利用continue语句写一程序:输出1-20之间不能被3整除的数。(参考前面第2题) #include using namespace std; int main() { for (int i = 1;i <= 20; i++) { if (i % 3 == 0) continue; cout << i << ' '; } return 0; } 3、实现求6位学生c++的平均成绩。(参考案例书的P47案例1) #include using namespace std; int main() { double score[6]; double avg = 0,sum = 0; for (int i = 0;i <= 5; i++) { cin >> score[i]; sum = sum + score[i]; } avg = sum/6; cout << "平均成绩是:" << avg; return 0; } 4、利用一维数组编写一个程序:从键盘上输入10个float类型的数据,找出它们的最大值和最小值,并输出(定义两个变量分别保存最大值和最小值)。(参考案例书的P47案例1)#include using namespace std; int main() { float numb[10]; float min = 0.0,max = 0.0; int i; for (i = 0;i <= 9; i++) { cin >> numb[i]; } min = numb[0]; max = numb[0]; for (i = 1;i <= 9; i++) { if (numb[i] >= max ) max = numb[i];

实验五 数组应用程序设计

实验五数组应用程序设计 一、实验目的 1.掌握数组的声明、数组元素的引用。 2.掌握静态数组和动态数组的使用差别。 3.应用数组解决与数组有关的常用算法问题。 4.学会使用控件数组。 二、实验内容 1.设有一个6×6的方阵,其中的元素是随机产生的10 - 99 之间的两位数. 分别求出主对角 线和次对角线上元素之和,以及方阵中最小的元素的位置和值. 要求: 程序运行后,单击“产生”按钮时,输出方阵。单击“计算”按钮时,输出对角线元素之和,以及最小元素的值与位置。 1)代码设计如下 Dim a(6, 6) As Single Private Sub Command1_Click() Dim i% Dim j% Cls For i = 1 To 6 For j = 1 To 6 a(i, j) = Int(Rnd * (99 - 10 + 1)) + 10 Print a(i, j); Next j Print Next i End Sub Private Sub Command2_Click() Dim i%, j%, min%, mini%, minj%, zsum%, csum% min = a(1, 1): mini = 1: minj = 1 zsum = 0: csum = 0 Cls For i = 1 To 6 For j = 1 To 6 If (i = j) Then zsum = zsum + a(i, j) If (i + j = 7) Then csum = csum + a(i, j) If a(i, j) < min Then min = a(i, j) mini = i

浅谈使用身边的物品作实验资源

浅谈使用身边的物品作实验资源,设计教学 实验 兴义师院附中李向琴 实验教学是物理课程改革的重要环节,是物理教学的重要组成部分,是全面提高学生科学素养的重要途径,物理实验的开发和利用有利于提高物理教育教学质量。努力开发和有效利用物理实验教学资源,改变在以往的实验教学中,教师过多地依赖实验室现有的仪器和设备,实验室里有器材就做,没器材就不做的现象。随着课程改革的深入,实验已从作为教学的辅助手段转变为教学过程中创设物理情景、探索物理问题的主要手段。就目前而言,我们国家的经济还有一定的困难,很多实验器材不能按物理教材的要求配置齐全,特别是广大乡村中学和边远山区中学,实验器材更是缺乏,如何用好现有的有限仪器设备和开发自制教学仪器,为课堂教学服务值得每一位物理老师深思和探索。我在教学中不断探索使用废旧物品,生活用品,学习用品、人体感官开发设计各种物理实验,我认为是一种行之有效的办法,它能创设物理情景,拉近物理学与生活的距离,让学生感受到科学的真实性,感受到科学与社会、科学与日常生活密切相关,增强学生的感性认识。下面谈谈我在这方面的做法、感受和认识。 一、利用学生学习用品作为实验资源,设计实验教学 学生学习用品可以做很多物理实验,且实验材料经济、易得、易取,实验现象生动、明了,它能使学生感受到物理知识就存在于我们的生活和学习中,从而激发学生的学习兴趣和求知欲。例如我在上八年级物理《电荷》时,让学生用塑料笔杆或塑料尺和化纤衣服摩擦后,靠近碎纸屑做摩擦起电实验,实验现象明显、直观、易做。另外还可用铅笔做探究

压力的作用效果跟哪些因素有关,用塑料直尺做杠杠实验,用橡皮檫探究摩擦力的大小跟哪些因素有关,用铅笔芯做电学实验,用两张纸演示气体压强与流速的关系等等。 二、利用日常生活用品作为实验资源,设计实验教学 在日常生活中,我们身边可以做实验的日常生活用品随处可见,如:家用电器、锅、碗、瓢、盆、杯子等等都可以作为实验资源,通过教师巧妙设计,就能发挥生活用品的课堂教学作用,从而利用它们来创设物理教学情景,启发学生思维,激发学生的学习主动性和积极性。例如我在上八年级物理《声音的特性》时,用几个相同的碗装上不同质量的水,用筷子敲击发出不同的音调,演示后引导学生分析现象,得出音调的高低取决于物体振动的频率,频率越高,音调就越高,频率越低,音调就越低。另外还用塑料吸盘挂衣钩模拟马德堡半球实验;用玻璃杯、硬纸片、水等物品探究大气压强的存在;用杯子装水演示光的折射等现象。用日常生活用品做实验,具有简便、生动、形象、贴近生活等优点。 三、利用废旧物品作为实验资源,设计实验教学 在我们的生活中,有很多废弃的物品,利用这些废旧物品来进行实验探究活动,既可变废为宝,体现环保,又拉近物理学与生活的距离,同时还增加了学生动手的能力,更有利于学生动脑、动手,培养学生的实验技能及创新能力,还可培养学生养成勤俭节约的好习惯。例如我在上九年级物理《液体的压强》时,让学生用饮料瓶探究液体的压强与深度的关系(我校学生每天要丢弃大量饮料瓶),让学生在塑料瓶上,沿竖直方向打三个小孔,然后在瓶中装满水,让学生观察从不同小孔中射出的水,落地点到塑料瓶的远近距离,引导学生根据现象分析得出同种液体中,深度越深,压强越大,此

实验5-数组答案

VB程序设计实验五 实验目的 ●掌握一维数组和二维数组的操作 ●学习跟数组相关的控件:列表框和组合框 复习 1.列表框 列表框(ListBox)控件允许用户查看和选择列表中的多个元素。 表5-11 列表框的常用属性和事件 2.组合列表框(ComboBox)整合了列表框和文本框的功能,以一个文本框控件(TextBox) 右边加上一个向下箭头的样式显示。有Simple(简单组合框)、DropDown(下拉组合框)和DropDownList(下拉列表框)。其中,Simple选项不显示下拉箭头,而是在控件的旁边显示一个滚动条;DropDown风格(默认值)在单击向下箭头时显示一个下拉列表,且在ComboBox中输入一个值;DropDownList显示一个下拉列表,但不允许用户在ComboBox中输入。 表5-13 组合列表框的常用属性和事件

(1) Items.Count属性:列表框或组合框中项目数量。最后一项的序号为Items.Count-1,该属性只能在程序中设置或引用。 (2) Text属性:被选定的选项的文本内容。该属性只能在程序中设置或引用。 注意:ListBox1.Items(ListBox1.SelectedIndex)等于ListBox1.Text。 (3) Items.Add方法 把一个选项加入列表框,格式:对象.Items.Add(选项);如:ListBox1.Items.Add("周海涛") (4) Insert方法 在指定位置插入一个项目。格式:对象.Items.Insert(序号, 添加项内容) (5)Items.Remove方法 从列表框中删除指定的项。格式:对象. Items.Remove (选项)。 例如:ListBox1.Items.Remove ("华成") (6)Items.RemoveAt方法 格式:对象.RemoveAt(Index) 从列表框中删除指定的项。Index表示被删除项目在列表框中的位置,从0开始。 例如:ListBox1.Items.RemoveAT(4) (7) Items.Clear方法 格式:对象.Items.Clear 用于清除列表框所有项目,例如:ListBox1.Items.Clear 4.单选按钮、复选框和框架 1)单选按钮(RadioButton) 单选按钮以组的形式出现,允许选择其中一项。 ?Text属性:按钮上显示的文本 ?TextAlign属性:文本对齐方式 ?Checked属性:表示单选按钮的状态,True ——被选定,False ——未被选定?Click事件:单击后,使Checked属性为True ?CheckedChanged事件:当某个单选按钮的状态被发生变化,该事件随之被触发。2)复选框(CheckBox) 与RadioButton具有相同属性和事件,之外还有: ?CheckState属性:表示复选框状态,Unchecked——未选定,Checked——被选定,Indeterminate——灰色 3)框架(GroupBox分组框) ?Text属性:标题文本 ?Enabled属性:框架和其中的控件

开发奇妙的物理实验资源

开发奇妙的物理实验资源 初中物理新教材中的很多教学内容,都是要通过“科学探究”活动来学习的,学生在经历科学探究过程中体验学习科学的乐趣,掌握科学方法、感悟物理知识,从而形成良好的科学态度与价值观。然而,目前多数初中校尤其是农村校的实验器材与新教材还不能完全配套,实验室的有限器材不能满足新课程的需要。因此,倡导利用身边随手可得的物品进行实验探究活动,既可以解决或缓解实验器材不足的问题,又可以拉近物理学和生活的距离,使学生真切地感受科学和日常生活的密切联系,这对课程改革具有重要意义。 本文将介绍笔者在过往的教学实践中,带动学生巧利用生活用品精心研制、构思巧妙的物理教具和学具进行实验探究的案例,从中探讨实验资源开发与利用的方法和途径。 一、最简单的抽水机 实验素材无时不有,无处不在,只要我们处处留心、善于发现,日常生活中很多信手拈来的物品,都可以成为我们开发实验的好资源。 有一次我患重感冒,躺在病床上,当我看到护土拿着一支注射器和打吊针用的一次性塑料软管走过来时,我突发其想:要是能利用这些材料制作一件物理教具就好了,我苦思冥想了两天,结果出院时诞生了一件获得省二等奖的教具。 如图1,将打吊针用的一次性塑料软管较粗的那两段剪下来(在图中标注为A和B),A 两端各有一个口,上端口是出水口,下端口是进水口,B上端有现成的两个口,下端有一个口。将B上端的一个口与A下端进水口连接,另一个口与注射器相连接,再将B下端进水口放入水中,并事先分别在A.B内放进一颗小钢珠,这样就做成了一只最简单的活塞式抽水机。 反复抽动注射器的活塞,水就会从A出水口中源源不断地流出来。因A.B都是透明的,学生可以很清楚地看到抽水过程中软管内小钢珠的运动情况(即活塞阀门的开闭情况)。 由这件教具的制作材料,笔者明白了一个道理:我们身边可以用来做实验的物品比比皆是,可以利用的实验资源十分丰富,我们缺少的并不是资源,而是发现资源的慧眼和设计实验的智慧。尽管实验资源开发的途径、开发的方法多种多样,但最具价值的还应该是有创新的意识和思想。 二、十分神奇的光学仪器 身边司空见惯的物品摇身一变,可以演变出趣味无穷的科学实验:两个纸筒魔术般地组合,可以制成照相机、幻灯机、望远镜、显微镜等模型,并能生动地揭示这4种光学仪器的原理。

实验心理学实验讲义

3对偶比较法-制作颜色爱好顺序量表 一、实验介绍 本实验目的是学习对偶比较法和顺序量表的概念,制作颜色爱好的顺序量表。 心理量表是经典心理物理学用来测量阈上感觉的。心理量表根据其测量水平的不同,可分为四种:命名量表、顺序量表、等距量表和比例量表。其中等距量表和比例量表分别带来了心理物理学中的对数定律和幂定律。 顺序量表没有相等单位、没有绝对零点,它按某种标志将事物排成一个顺序,从中可以查出某事物在心理量表中所处的位置。制作心理顺序量表有对偶比较法和等级排列法两种方法,其中,对偶比较法是制作心理顺序量表的一种间接方法。 对偶比较法是把所有要比较的刺激配成对,然后一对一对呈现,让被试对于刺激的 某一特性进行比较并作出判断:这种特性在两个刺激中哪个更为明显。因此,若有n个 刺激,则一共可配成 n( n-1)/2 对。又因为有空间误差和时间误差,在实验中每对刺激要比较两次,互换其呈现顺序(时间误差)或位置(空间误差),所以一共要比较 n( n-1)次。 二、方法与程序: 本实验用对偶比较法制作颜色爱好顺序量表。计算机能产生不同色调的颜色,而且纯度高,适合于颜色爱好顺序量表的制作。实验共有七种颜色,它们是:红(Red)、 橙(Orange)、黄(Yellow )、绿(Green)、蓝(Blue )、青(Cyan)和白(White )。 实验顺序如下表:为抵消顺序误差,在做完21次后,应再测21次,顺序与前21次 顺序相反;为抵消空间误差,在后做的21次中左右位置应颠倒。 刺激红橙黄绿蓝青白 红—— 橙 1 —— 黄 2 3 —— 绿12 4 5 —— 蓝13 14 6 7 —— 青19 15 16 8 9 —— 白20 21 17 18 10 11 —— 实验前,主试应指导被试认真阅读指示语,并说明反应方法(按红、绿键认可,按黄键不认可),然后开始实验。 三、结果与讨论: 结果数据中有每种颜色被选择的次数,即选择分数(C)。 如果要制作等距量表,还需按如下公式计算选中比例P。 P= C/(2*( n-1))=C/12 再把P转换成Z分数,按Z分数制图即可制作成颜色爱好的等距量表。参考文献: 杨博民主编心理实验纲要北京大学出版社65-82页 4信号检测论-有无法 、实验介绍

新乡医学院 有机化学 实验课教案首页

新乡医学院有机化学实验课教案首页 授课教师姓名及职称: 新乡医学院化学教研室年月日

实验 樟脑的还原反应 一、实验目的 1. 掌握用NaBH 4还原樟脑的原理及操作方法。 2. 了解薄层层析在合成反应中的应用。 二、实验原理 用NaBH 4还原樟脑得到冰片和异冰片2个非对映异构体。由于立体选择性较高,所得产物以异冰片为主。冰片和异冰片具有不同的物理性质,两者极性不同。 NaBH 4H OH H OH +樟脑异冰片冰片(龙脑) 色谱法:利用混合物中各组份在流动相和固定相之间的分配系数不同,通过色谱速度不同,从而使各组份完全分开的分离方法。薄层层析是是色谱法中的一种。 三、试剂 2 g (0.01 3 mol )樟脑,1.2 g (0.032 mol )硼氢化钠,20 mL 甲醇,25 mL 乙醚 四、实验步骤 1. 樟脑的还原 在50 mL 圆底烧瓶中将2 g 樟脑溶于20 mL 甲醇,室温下小心分批加入1.2 g 硼氢化钠,边加边振摇。必要时可用冰水浴控制反应的温度。当所有硼氢化钠加完后,将反应混合物加热回流至硼氢化钠消失。冷却到室温,在搅拌下将反应液倒入盛有40 g 冰水的烧杯中,充分冷却,抽滤收集白色固体,用冷水洗涤数次,晾干。将固体转移至100 mL 洁净的锥形瓶中,加入25 mL 乙醚溶解固体,然后加入适量无水硫酸钠干燥。干燥后将溶液转移至预先称好的50 mL 锥形瓶中。在通风橱中蒸发溶剂,得白色固体,产量约为1.2 g ,熔点212 ℃。 2. 产物的鉴别 取一片5×15 cm 的薄层板,分别用冰片、异冰片、樟脑和樟脑的还原产物的乙醚溶液点样,置于层析缸中展开。取出层析板,待薄层上尚残留少许展开剂时,立即用另一块与薄层板同样大小并均匀地涂上浓硫酸的玻璃板覆盖在薄层板上,即可显色。将4个点的R f 值对比证明樟脑已被还原成冰片和异冰片。也可用溴化钾压片做产物的红外光谱。

C语言实验五_数组

实验(实训)报告 项目名称实验五数组 所属课程名称 C 语言程序设计 项目类型验证性 实验(实训)日期2011/11.16/11.23/11.30 班级10统计2 学号100112100236 姓名裴晓晓 指导教师刘亚楠 浙江财经学院教务处制

一、实验(实训)概述: 【实验目的】 1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法。 2. 掌握字符数组和字符串函数的使用。 3. 掌握与数组有关的算法(特别是排序算法)。 【实验要求】 1.选择合适的数据类型表达应用要求; 2.正确运用循环结构处理数组问题; 3.输入和输出格式清晰,有提示信息。能对输入数据进行基本的合理性判断。 【基本原理】 见第五章课件和课本内容 【实施环境】(使用的材料、设备、软件) Visual C++ 6.0 二、实验(实训)内容: 第1题 【项目内容】 完成课后第3题。求一个3×3矩阵对角线元素之和。 【方案设计】 提示:请在此粘贴你的完整程序。□ #include using namespace std; int main() {int a[3][3]; int i,j,sum; sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) {cin>>a[i][j]; if(i==j) sum=sum+a[i][j]; } cout<<"sum="<

【结论】(结果、分析) 提示: 请记录该程序的运行过程:输入输出。比如: 123 456↙(↙表示输入,如果没有输入,则没有这一行) a+b=579 (输出) 并尽可能对程序的执行结果进行分析。□ 4 5 5 6 2 34 7 23 5 66 sum=104 第2题 【项目内容】 完成课后第4题。 提示:自定义数组a的大小和内容。插入一个数number到已排好的数组中,可以有以下两种方法:(1)先从数组前面开始比较number和数组元素a[i]的大小,直到找到待插入的正确位置(即a[i-1] using namespace std; int main() {int a[11]={2,5,8,17,28,39,58,89,100,298},n,i,j; cout<<"a[i]="<