当前位置:文档之家› 实验七 二维数组程序设计

实验七 二维数组程序设计

实验七  二维数组程序设计
实验七  二维数组程序设计

实验七二维数组程序设计

一、实验学时 2学时

二、实验目的

(一)掌握二维数组的定义、赋值及输入输出的方法;

(二)掌握与二维数组有关的算法如查找、矩阵转置等;

(三)掌握在程序设计中使用数组的方法。数组是非常重要的数据类型,循环中使用数组能更好地发挥循环的作用,有些问题不使用数组难以实现。

(四)掌握在VC++环境下上机调试二维数组程序的方法,并对结果进行分析。

三、预习要求

熟悉二维数组的定义、引用和相关算法(求最大值、最小值)的程序设计,同时要掌握在程序设计中利用双重循环来实现二维数组的输入和输出。

四、实验内容

(一)二维数组的初始化,即给二维数组的各个元素赋初值。下面的几个程序都能为数组元素赋值,请输入程序并运行,比较这些赋值方法有何异同。

1.在定义数组的同时对数组元素分行初始化。

/* c7-1.c */

/*二维数组的初始化(分行)*/

#include "stdio.h"

void main( )

{ int i,j,a[2][3]={{1,2,3},{4,5,6}};

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

{ for(j=0; j<3; j++)

printf("%d ",a[i][j]);

printf("\n");

}

}

2.不分行的初始化。把{ }中的数据依次赋值给数组的各个元素。

/* c7-2.c */

/*二维数组的初始化(不分行)*/

#include "stdio.h"

void main( )

{ int i,j,a[2][3]={1,2,3,4,5,6};

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

{ for(j=0;j<3;j++)

printf("%d ",a[i][j]);

printf("\n");

}

}

3.为部分数组元素初始化。

如:数组定义语句为:int i,j,a[2][3]={{1,2},{4}};

4.可以省略第一维的定义,但不能省略第二维的定义。

如:int a[ ][3]={1,2,3,4,5,6};

依次运行以上程序,比较这四种定义方式的不同之处。

(二)求一个4×4矩阵的主对角线元素之和,填空并运行程序。

编程提示:

1.定义一个4行4列的二维数组a。

2.可利用双重循环的嵌套为该二维数组的各个数组元素赋值,一般格式为:for(i=0; i<4; i++)

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

scanf("%d",&a[i][j]);

3.用循环求和,并注意矩阵对角上线元素的特征是:行下标和列下标相同。

4.输出对角线元素之和。

/* c7-3.c */

/*求一个4×4矩阵的主对角线元素之和*/

#include "stdio.h"

void main( )

{ int a[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};

int i,sum=0;

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

_____; /*把对角线元素的和放在变量sum中 */ printf("sum=%d\n",sum); /*输出对角线元素的和*/

}

(三)打印出以下的杨辉三角(要求打印出10行)

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

1 8 28 56 70 56 28 8 1

1 9 36 84 126 126 84 36 9 1

编程提示:

1.杨辉三角的特点是:第1列和对角线上的元素为1,其它各元素的值都是上一行上一列元素和上一行前一列元素之和。

2.定义一个10×10的二维数组a。

3.先用一个单层循环为第一列和对角线上的元素赋值。如:

for(i=0; i<10; i++) { a[i][i]=1;a[i][0]=1; }

4.再用一个双重循环嵌套为其它元素赋值。

for( ; i<10; i++)

for( ; ; j++)

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

想一想,划横线的地方应当填入什么内容?

5.计算之后再用一个双重循环嵌套输出杨辉三角。注意各层循环变量的初值和终值怎样确定。

(四)统计3个学生,每个学生4门课程的考试成绩,要求输出每个学生的总成绩,每个学生的平均成绩,3个学生的总平均成绩。填空并运行程序。

/* c7-4.c */

/*学生成绩处理 */

#include "stdio.h"

void main( )

{ int stu[3][4],i,j,t[3];

float sum=0,a[3];

for(i=0; i<3; i++) /* 输入三个学生的4门课程考试成绩 */

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

scanf("%d",&stu[i][j]);

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

{ t[i]=0;

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

{ sum+=stu[i][j]; /* sum存放三个学生的4门课程总成绩 */

t[i]+=stu[i][j]; /* t[i]存放第i个学生的4门课程成绩 */

}

printf("%-6d",t[i]); /* 输出第i个学生的总成绩 */

;

printf("%-6.2f\n",a[i]); /*a[i]存放第i个学生的4门课程平均成绩*/ }

printf("average = %.2f\n",sum/12.0);

}

(五)已知二维数组a中的元素为:

4 4 34

37 3 12

5 6 5

求二维数组a中的最大值和最小值。程序的输出应为:The max is: 37

The min is: 3 填空并运行程序。

/* c7-5.c */

/*求二维数组中元素的最大值与最小值 */

#include "stdio.h"

void main( )

{ int a[3][3]={4,4,34,37,3,12,5,6,5},i,j,max,min;

max=a[0][0];

;

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

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

{ if ( max < a[i][j] ) max = a[i][j];

if ( min > a[i][j] ) min = a[i][j];

}

printf("The max is: %d\n", max);

printf("The min is: %d\n", min);

}

(六)以下程序是查找二维数组a的最大元素及其下标,填空并运行程序。

/* c7-6.c */

/*求二维数组中元素的最大值及其下标 */

#include "stdio.h"

void main()

{ int a[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}};

int i,j,max,l,c; /* max存放最大值,l、c分别存放行和列的下标 */ max=a[0][0];

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

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

if(max

printf("max=%d,l=%d,c=%d%\n",max,l,c);

}

(七)下面的程序是自动形成并输出如下矩阵,填空并运行程序。

1 2 3 4 5

1 1 6 7 8

1 1 1 9 10

1 1 1 1 11

1 1 1 1 1

/* c7-7.c */

/*生成指定的矩阵*/

#include "stdio.h"

void main( )

{ int i,j,k,a[5][5];

k=2;

for(i=0; i<5; i++) /* 行循环 */

for(j=0; j<5; j++) /* 列循环 */

if( ) a[i][j]=1; /* 产生矩阵的下三角元素 */

else a[i][j]=k++; /* 产生矩阵的上三角元素 */ for(i=0; i<5; i++)

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

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

printf(“\n”); /* 每输出一行后换行 */

}

}

(八)下面程序的功能是实现方阵(如:3行3列)的转置(即行列互换)

如:如果原来的矩阵:100 200 300

400 500 600

700 800 900

程序输出应为:

100 400 700

200 500 800

300 600 900

填空并运行程序。

/* c7-7.c */

/*矩阵转置*/

#include "stdio.h"

void main( )

{ int i,j,temp;

int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};

printf("\n原来的矩阵为:\n");

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

{ for(j=0; j< ; j++) printf("%7d",array[i][j]);

printf("\n");}

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

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

{temp=array[i][j];array[i][j]=array[j][i];array[j][i]=temp;} }

printf("\n转置后的矩阵为:\n");

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

{ for(j=0; j<3; j++) printf("%7d",array[i][j]);

} /*输出一行后要换行*/

}

请将此矩阵转置程序与教材上的矩阵转置程序进行比较,各用于何种类型矩阵比较合适?

五、实验注意事项

(一)C规定,二维数组的行和列的下标都是从0开始的。

例如,有定义:int b[3][[5]; 则数组b的第一维下标的上界为2,第二维下标的上界为4。说明定义了一个整型二维数组b,它有3行5列共3*5=15个数组元素,行下标为0,1,2,

列下标为0,1,2,3,4,则数组b的各个数组元素是:

b[0][0],b[0][1],b[0][2],b[0][3],b[0][4]

b[1][0],b[1][1],b[1][2],b[1][3],b[1][4]

b[2][0],b[2][1],b[2][2],b[2][3],b[2][4]

(二)要对二维数组的多个数组元素赋值,应当使用循环语句并在循环过程中,使数组元素的下标变化。可用下面的方法为所有数组元素赋值:

int i,j,a[3][3];

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

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

scanf("%d",&a[i][j]);

六、思考题

(一)定义一个5行5列的二维数组a,使下三角的所有元素初始化为1,在划线处填空。

int i,j,a[5][5];

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

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

if( ) a[i][j]=1;

(二)求一个4×4矩阵的主对角线元素之和,填空并运行程序。

#include "stdio.h"

void main( )

{ int a[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};

int i,sum=0;

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

;

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

}

(三)求二维数组a中的最大元素及其下标,填空并运行程序。

#include "stdio.h"

void main( )

{int a[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}};

int i,j,max,l,c;

max=a[0][0];

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

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

if( max

printf(“max=%d,l=%d,c=%d%\n”,max,l,c);

}

(四)统计3个学生,每个学生4门课程的考试成绩,要求输出每个学生的总成绩,每

个学生的平均成绩,3个学生的总平均成绩,填空并运行程序。 #include "stdio.h"

void main( )

{ int stu[3][4],i,j,t[3];

float a[3],sum=0;

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

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

scanf("%d",&stu[i][j]);

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

{ t[i]=0;

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

{ sum+=stu[i][j];

t[i]+=stu[i][j];

}

printf("%-6d",t[i]);

;

printf("%-6.2f\n",a[i]);

}

printf("average = %.2f\n",sum/12.0);

}

怎样区分“对照组”和“实验组”1

怎样区分“对照组”和“实验组”(原文摘抄) 在这几天的研修学习中,看到不少同行提出这个问题,初中教材中虽然给出了对照实验的概念,但是没有给出严格的定义,而考试过程中又经常考到,如何区分,的确有点难度。根据自己的经验和网上搜索内容整理,给出区分的一些方法。希望对同 行们有所帮助,如果有帮助多来踩踩啊! 对照实验中采用的几种对照方法: 1.自身对照 2.空白对照(其中绝大部分的对照实验属于空白对照。} 3.条件对照 1.自身对照。 指实验与对照在同一对象身上进行,不另设对照组。 A、八上P4“探究鱼鳍在游泳中的作用”实验。不管是将鱼鳍剪掉,还是捆绑住,都是将鱼的前后泳姿作对比,通过比对得出各种鳍的作用。 处理前(正常状态)是对照组,处理后为实验组。 B、七上P96探究“根的什么部位生长最快”的实验。也是如此。第一天幼根尖端画上等距离4条线,然后第二天、第三天测量相邻两条线中间的距离,进行比较。 也就是将前后对象进行对比。 自身对照实验,方法简便,判断的标准就是:实验处理前的对象状况为对照组, 实验处理后的对象变化则为实验组。 2.空白对照。实验中最经常遇到、最麻烦的就是这类对照方法。在对照实验中,采用的方法大部分都是空白对照。下面的我们经常用到的! 对照组:不加入任何研究因素(即我们所说的变量)的对象 组;或者自然状态下不对研究因素做任何实验处理的对象组。 实验组:加入研究因素的对象组;或者自然状态下对研究因 素进行实验处理的对象组。

以上定义,一般根据分号前面的一句话判断即可!大家可以理解下啊! 我们用上述定义解释下面的例子:如“唾液淀粉酶的消化作用”实验:两只试管均加入馒头碎屑,试管A加入2毫升清水,试管B加入2毫升唾液,置于37℃温水中。试管A不给予任何研究因素——唾液淀粉酶的处理,则为对照组。诸如采用等量蒸馏水、等量清水等作对照,均为典型的空白对照。本实验的研究的因素是什么?唾液淀粉酶。 如蚂蚁在寻找食物的过程中,头部的触角像天线似的自由转动,蚂蚁触角的运动有什么意义。请你设计实验方案证明触角在蚂蚁寻找食物过程中的作用。研究的因素是触角。设置两组:甲组为保留触角的蚂蚁,乙组为剪去触角的蚂蚁。自然状态下对研究的因素—触角进行处理(剪除)的乙组为实验组;自然状态下对研究因素—触角 不进行处理(剪除)的甲组为对照组。 这里有个误区要纠正一下,不做任何处理并不是对对照组什么处理都不做,它是是针对实验变量而言不做处理的。经常还是要做一些处理。 比如七上“绿叶在光下制造有机物”实验,实验前要将叶片进行暗处理;再如八上“证明细菌对植物遗体的分解”实验设计,实验前甲、乙两组进行灭菌处理,他们的处理都不是针对实验变量的。有人提出这种处理是“排除公害变量的影响”这一说法,它是对照组和实验组同时处理,也是保证无关变量保持一致的做法。 举几个空白对照的例子: A、如七上P98“植物生长需要哪些无机盐”的实验。它是探究缺氮、缺磷、缺钾情况下生长的植物叶片状况。分别将对象组除去研究的因素——氮、磷、钾,这和常态相比是经过处理的,因此它们是实验组。而没有经过任何处理的对象组是对照组。研究的因素是氮、磷、钾。 B、如七下“探究环境污染对生物的影响”,甲组用食醋和清水配置出一定PH值浓度的模拟酸雨,喷洒植物;乙组用清水喷洒。甲组加入了我们所研究的因素——模拟酸雨,来观察它对实验结果的影响,甲组是实验组;而乙组没有加入所研究的因素,所以是对照组。研究的因 素是模拟的酸雨。 下面可一个有争议的例子: 七上P119“绿叶在光下制造有机物”的实验,到底遮光是实验组还是曝光是实 验组?甚至在高考中出现争论。 根据空白对照概念,自然状态下,叶片是曝光的,因此实验中不经过处理的曝光部分应该是对照组。而遮光部分相对于自然状态而言,经过了处理,是实验组。但经常有不同的意见。为什么出现异议呢?关键在于叶片事先经过一昼夜饥饿的暗处理。也就是说它是从暗的环境移到到阳光下,因此不做任何处理的是遮光部分,因为它原来就是不见光的,既然不处理,那就是对照组。实际上是“暗处理”干扰了对题意的

程序设计基础实验报告

《程序设计基础》 实验报告 专业班级: 姓名: 学号:

实验一 面向过程的简单程序设计 1.实验目的要求 (1) 使用C++语言编写简单的计算机程序,掌握C++程序从编辑、编译到运行的全过程, 初步了解C++程序的特点。 (2) 掌握C++语言的数据类型(包括对各种数据类型变量的定义、初始化、赋值等)、运 算符和表达式的使用。 (3) 掌握赋值语句的使用。 (4) 掌握数据的输入输出方法。 2.实验内容 (1)设计简单程序,分别计算下列表达式,式中变量由键盘输入,输出表达式的值。 <1> d c b a x -++ <2> 11 11+++x x <3> sinX+cosX+tan -1 X <4> e x+y +e x-y <5> log 10(1+21x +) <6> 22b a -+??b a - (其中??a 表示取不大于a 的最大整数)。 <1> #include using namespace std; int main() { float x,a,b,c,d,e; cin>>x>>a>>b>>c>>d; e=x+(a+b)/(c-d); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sqrt(1+1/(x+1/(x+1)));

cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sin(x)+cos(x)+1/tan(x); cout< #include #include using namespace std; int main() { double x,y,z; cin>>x>>y; z=exp(x+y)+exp(x-y); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=log(1+sqrt(1+x*x)); cout< #include #include using namespace std; int main()

微机原理实验三子程序设计实验

实验三 子程序设计实验 一、实验目的 1.学习子程序的定义和调用方法。 2.掌握子程序的程序设计、编制及调用。 二、实验设备 TDN86/88教学实验系统一台 三、实验内容及步骤 1.求无符号字节序列中的最大值和最小值 设有一字节序列,其存储首址为3000H ,字节数为08H 。利用子程序的方法编程求出该序列中的最大值和最小值。实验程序及流程如下: 主程序 STACK1 SEGMENT STACK DW 64 DUP(?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE START: MOV SI,3000H MOV CX,0008H CALL branch A1: JMP A1 branch: JCXZ A4 PUSH SI PUSH CX PUSH BX

子程序 实验步骤 (1)输入源程序,进行编译、链接和加载。 (2)在调试区键入E0000:3000↙,输入8个字节的数据:D9、07、8B、C5、EB、04、9D、F9。 (3)运行程序,查看结果,在调试区键入R AX↙,显示结果应为AX=F9 04,AH中为最大值,AL中为最小值。 2.数组求和 设有一字节序列(存储地址和字节数可自定义),编写程序,求出该序列的和,求和工MOV BH,[SI] MOV BL,BH A1: LODSB CMP AL,BH JBE A2 MOV BH,AL JMP A3 A2: CMP AL,BL JAE A3 MOV BL,AL A3: LOOP A1 MOV AX,BX POP BX POP CX POP SI A4: RET CODE ENDS END START

c语言实验报告4 循环结构程序设计

《C程序设计》课程实验报告 学院:班级:姓名:学号: 实验设备:计算机1台实验日期:2011年3月1日 实验项目名称循环结构程序设计 实验目的 掌握使用三种循环语句实现循环结构的方法。 实验要求:能用while~ do~while for 三种循环语句实现循环结构,编写简单的程序,掌握这三种循环语句。 实验内容(包括步骤):1.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半另一个,以后每天早晨都吃剩下的一半另一个,到第十天早晨再想吃时,就剩一个桃子。问第一天共摘了多少桃子。 要求:分别用三种语句编写程序。 2.编写程序验证下列结论:任何一个自然数n的立方都等于n个连续奇数之和。例如:13=1;23=3+5;33=7+9+11;43=13+15+17+19。 要求:程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时止。 3.编写程序,求1-3+5-7+…-99+101的值。 4.编写程序,求e的值。e ≈ 1+1/1!+1/2!+1/3!+1/4!+…+1/n! (1)用for循环,计算前50项。 (2)用while循环,要求直至最后一项的值小于10-6。 5.编写程序,输出从公元1600年至2000年所有闰年的年号。每输出5个年号换一行。判断公元年是否为闰年的条件是:

(1)公元年数如能被4整除,而不能被100整除,则是闰年。 (2)公元年数如能被400整除也是闰年。 6.编写程序,打印以下图形: * *** ***** ******* ***** *** * 7.输入一行字符,统计输入的字符中字母‘a’出现的次数(包括大小写)。 8.我国1991年有11.6亿人口,要求根据人口平均年增长率,计算从1991年算起经过多少年后我国的人口增加到15亿。 9.有一个四位数F=BBAA,前二位数相同,后二位数相同,此数又是某个自然数T的平方,求此数。 10.分解一个正整数的所有质因数 调试与结果测试:部分程序出现错误经过调整后调试正常,达到题目要求的结果,运行正常。

对照组与实验组

实验组是指人为改变其自然状态,即人为控制实验变量的组。 实验组是指在原基础上有一个变量条件的。对照组是指无变量条件的。 通常,一个实验总分为实验组和对照组。实验组,是接受实验变量处理的对象组;对照组,也称控制组,对实验假设而言,是不接受实验变量处理的对象组,至于哪个作为实验组,哪个作为对照组,一般是随机决定的,这样,从理论上说,由于实验组与对照组的无关变量的影响是相等的,被平衡了的,故实验组与对照组两者之差异,则可认定为是来自实验变量的效果,这样的实验结果是可信的。 按对照的内容和形式上的不同,通常有以下对照类型: 1.空白对照:指不做任何实验处理的对象组。例如,在“生物组织中可溶性还原糖的鉴定”的实验中,向甲试管溶液加入试剂,而乙试管溶液不加试剂,一起进行沸水浴,比较它们的变化。这样,甲为实验组,乙为对照组,且乙为典型的空白对照。空白对照能明白地对比和衬托出实验的变化和结果,增强了说服力。 2.自身对照:指实验与对照在同一对象上进行,即不另设对照组。单组法和轮组法,一般都包含有自身对照。如“植物细胞质壁分离和复原”实验,就是典型的自身对照。自身对照,方法简便,关键是要看清楚实验处理前后现象变化的差异,实验处理前的对象状况为对照组,实验处理后的对象变化则为实验组。 3.条件对照:指虽给对象施以某种实验处理,但这种处理是作为对照意义的,或者说这种处理不是实验假设所给定的实验变量意义的。例如,“动物激素饲喂小动物”实验,采用等组实验法,其实验设计方案是: 甲组:饲喂甲状腺激素(实验组); 乙组:饲喂甲状腺抑制剂(条件对照组); 丙组:不饲喂药剂(空白对照组)。 显然,乙组为条件对照,该实验既设置了条件对照,又设置了空白对照,通过比较、对照,更能充分说明实验变量——甲状腺激素能促进蚯蚓的生长发育。 4.相互对照:指不另设对照组,而是几个实验组相互对比对照,在等组实验法中,大都是运用对照,如“植物的向性”的等组实验中,5个实验组所采用的都是相互对照,较好的平衡和抵消了无关变量的影响,使实验结果更具有说服力。 试验组是指试验中进行探究的部分,对照组是指试验中进行比较的部分。通常情况下,你可以从以下两个角度进行区分: 1 试验组的结果是之前不知道的,只有通过实验才能知道。而对照组是自己已知的,不用试验就知道的常识。 2 试验组是复杂的,有许多的变量,须通过“控制变量法”来进行研究。而对照组是简单的,几乎没有任何变量。 实验设计中谁是对照组 任何一个实验都是要验证(探究)实验变量和反应变量之间的因果关系。每一个实验都有实验目的,按照实验目的,找出实验变量,该组即为实验组;相互对照的实验一般实验目的不单一验证(探究)一个实验变量和反应变量之间的因果关系,据此可以判定实验组和对照组。 如探究酶高效性的实验中:根据实验目的可知,本实验探究酶(实验变量)与催化效率(反应变量)的关系,则加入鸡肝研磨液(含过氧化氢酶)的一组为实验组,而加入氯化铁的一组只是

大学程序设计基础实验报告 (2)

**大学程序设计基础实验报告 实验名称:实验三分支结构 实验目的: 1、掌握IF-ELSE语句使用。 2、掌握ELSE-IF语句使用。 3、熟悉SWITCH语句使用。 实验内容: 在本地电脑中新建一个文件夹,用于存放C程序,文件夹的名字要求是“学号姓名-实验序号”,如E:\ 1920115555张三-03。启动C-Free,完成如下各题。 1、编程题:输入参数a,b,c,求一元二次方程ax2+bx+c=0的根(①a、b、c都为0,②a 和b为0,c不为0,③a为0,b不为0,c任意,④a不为0,且a、b、c满足b2-4ac ≥0,⑤a不为0,且a、b、c满足b2-4ac<0)。 2、编程题:输入职工的月薪salary,计算并输出应缴纳的个人所得税tax。tax=rate * (salary –850),rate的计算方式如下: 当salary <= 850,则rate = 0; 当850 < salary <= 1350,则rate = 5%; 当1350 < salary <= 2850,则rate = 10%; 当2850 < salary <= 5850,则rate = 15%; 当salary > 5850,则rate = 20%;。 3、编程题:根据输入的3个边长a、b、c,判断它们是否能构成三角形,若能构成三 角形,则进一步判断此三角形是哪种类型的三角形(等边三角形、等腰三角形、直角三角形和一般三角形。等腰直角算作等腰)。 4、编程题:输入一个形式如“操作数运算符操作数”的表达式,对2个整数进行乘、 除或求余运算。【请分别用if语句和switch语句实现此题功能】 上交作业的方法: 1.将程序代码及注释和运行程序的窗口复制到实验结果下方对应的题号上,并把这 次实验上机操作中遇到的问题及解决方法、心得等填好完成实验报告。 2.保存以上所有按要求已调试通过,并形成.c(或.cpp)和.exe文件到以自己的“学 号姓名-03”命名的文件夹中,并将以自己的“学号姓名”命名的文件夹压缩后上 交到ftp://10.172.250.252:1161中的“作业上传”文件夹下的“报告上交02”文件 夹下的子文件夹“源文件压缩上交”中,同时把以“学号姓名-03”命名的word 文档上交到“报告上交03”文件夹下的另一子文件夹“word文件上交”中。 特别提醒:每次上传的文件名一定要是“学号姓名-实验序号. doc”(如1720115555张

实验3 子程序设计

实验3子程序设计实验 [实验目的] 1.掌握利用堆栈传递参数的子程序调用方法。 2.掌握子程序递归调用方法。 3.过程调用伪指令: PROC,ENDP,NEAR和FAR。 4.8088指令: CALL,RET,RET n。 5.利用RET指令退出EXE文件的方法。 [实验重点和难点] 1.利用堆栈传递参数的子程序调用方法; [实验课时] 2学时 [实验仪器] 联想启天2400微型计算机。 [实验原理] 1.参考教材的汇编语言程序设计 2. [实验内容与步骤] 1.利用堆栈传递参数的子程序调用(求累加和) 程序内容: STACK SEGMENT STACK DB 256 DUP(0) STACK ENDS DATA SEGMENT ARY1 DB 1,2,3,4,5,6,7,8,9,10 COUNT1 EQU $-ARY1 SUM1 DW ? ARY2 DB 10,11,12,13,14,15,16,17,18 COUNT2 EQU $-ARY2 SUM2 DW ? DATA ENDS MAIN SEGMENT ASSUME CS:MAIN,DS:DATA,SS:STACK START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV AX,COUNT1 PUSH AX LEA AX,ARY1 PUSH AX CALL FAR PTR SUM MOV AX,COUNT2 PUSH AX LEA AX,ARY2 PUSH AX CALL FAR PTR SUM RET START ENDP MAIN ENDS PROCE SEGMENT ASSUME CS: PROCE SUM PROC FAR MOV BP,SP MOV CX,[BP+6] MOV BX,[BP+4] XOR AX,AX ADN: ADD AL,[BX] ADC AH,0 INC BX LOOP ADN MOV [BX],AX RET 4 SUM ENDP PROCE ENDS END START 操作步骤: (1)输入,汇编并将此程序连接成EXE文件。

实验四分支和循环程序设计实验(精)

实验四分支和循环程序设计实验 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言分支程序基本指令的使用方法; 3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法; 4.了解汇编语言循环程序设计的基本流程; 5.熟悉汇编语言循环基本指令的使用方法; 6.掌握利用汇编语言的循环指令完成循环程序设计方法。 二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。 1.无条件转移指令 JMP 无条件转移指令 JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。 2.条件转移指令 JXX 条件转移指令可分为三大类: 1).简单条件转移指令指令。根据单个标志位的状态判断转移条件。标志位指令转移条件意义 CF JC CF=1 有进位/借位 JNC CF=0 无进位/借位 ZF JE/JZ ZF=1 相等/等于 0 JNE/JNZ ZF=0 不相等/不等于 0 SF JS SF=1 是负数 JNS SF=0 是正数 OF JO OF=1 有溢出 JNO OF=0 无溢出 PF

JP/JPE PF=1 有偶数个 1 JNP/JPO PF=0 有奇数个 1 2).无符号数条件转移指令。 假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是 A-B,其转移指令如下: 指令转移条件意义 JA/JNBE CF=0 AND ZF=0 A>B JAE/JNB CF=0 OR ZF=1 A>=B JB/JNAE CF=1 AND ZF=0 AB JGE/JNL SF=OF OR ZF=1 A>=B JL/JNGE SF OF AND ZF=0 A

实验组和对照组区别

每一个实验都有实验目的,按照实验目的,找出实验变量,该组即为实验组;相互对照的实验一般实验目的不单一验证(探究)一个实验变量和反应变量之间的因果关系,据此可以判定实验组和对照组。 如探究酶高效性的实验中:根据实验目的可知,本实验探究酶(实验变量)与催化效率(反应变量)的关系,则加入鸡肝研磨液(含过氧化氢酶)的一组为实验组,而加入氯化铁的一组只是酶高效性的一个条件(高效性是相对于无机催化剂而言),实验本身并不研究氯化铁的催化作用,本实验是条件对照。 相互对照的实验变量往往比较复杂,不像酶高效性那样简单。如验证氮和磷是水体富营养化的因素,实验变量是氮和磷,这样,在设计实验中,可以设置三组实验,即加入氮(尿素)、加入磷(含磷洗衣粉)、加入氮和磷(尿素和洗衣粉)。三组均为为实验组,通过相互对照得出结论。就没有必要单独设置一个不含氮和磷(蒸馏水)的一个空白对照组了。 例1 1864年,德国科学家萨克斯将绿色叶片放在暗处几小时,然后把此叶片一半遮光,一半曝光。经过一段时间后,用碘蒸气处理叶片,成功地证明绿色叶片在光合作用中产生了淀粉。萨克斯对这个实验的设计具有严密的逻辑性,具体体现在() A.没有对照实验 B.本实验不需要设对照实验 C.曝光处作为对照实验 D.遮光处作为对照实验

例2 将培养在琼脂培养基内的蚕豆幼苗,分别放入4个暗箱中。其中第2和第4两个暗箱分别在顶部和右侧开孔,使光线射入,请分析回答: (1)用______两个装置进行实验,可了解蚕豆的生长与光线的方向之间的关系,对照组为__________ 。 (2)用______两个装置进行实验,可了解蚕豆茎和根的生长与重力之间的关系,对照组为__________ 。 通常,一个实验总分为实验组和对照组。实验组,是接受实验变量处理的对象组;对照组,对实验假设而言,是不接受实验变量处理的对象组。至于哪个作为实验组,哪个作为对照组,一般认为是随机决定的。但是,我们认为在探究实验中,对照实验的确定,首先必须反映探究的目的或假设。然后根据是否接受实验变量处理来判断。 在例1光合作用问题中,实验的目的是要验证“光合作用需要光"的假说是否正确。于是,有光情况下的实验装置便属于实验组了,而对照组则为处于黑暗中的裝置。 例2(1)中,探究的目的是要验证“蚕豆的生长受光线照射方向的影响”的假说是否正确。所以,有光的裝置是实验组,而沒有光的便是对照组。 这种确定对照实验的理念,与设计实验去验证假设的探究过程相符合,同时它又能与科学探究过程中收集及分析资料信息的方法相融,因此可以应用到所有实验中。

微机原理子程序设计

实验三子程序设计 1、实验目的: (1)熟悉汇编语言的编辑、汇编、连接、运行的全过程。 (2)了解汇编语言的程序结构、学习调用过程实现输入输出及用INCLUDE 命令包含文件的方法。 (3)子程序设计 2.实验步骤: (1)用编辑软件记事本或EDIT 编辑一个扩展文件名为ASM的汇编语言源程序。 (2)用汇编程序TASM 汇编上述的汇编语言源程序,形成目标代码文件。 (扩展名为OBJ) (3)用连接程序TLINK连接目标代码文件,形成可执行文件。(扩展名为EXE) (4)运行可执行文件。观察执行结果,以验证其正确性。 3.实验内容: (1)从键盘上输入若干个十进制数(-32767

again1: mov ax,[si] cmp ax,[si+2] jle next1 xchg ax,[si+2] xchg ax,[si] next1: add si,2 loop again1 mov cx,di loop again2 mov ah,9 lea dx,out_message int 21h mov cx,count ;输出(升序) lea si,array again3: mov bx,[si] call write call dpcrlf inc si inc si loop again3 mov ax,4c00h int 21h INCLUDE out_B_D.ASM INCLUDE in_D_B.ASM END (2)从键盘上输入若干个十进制数(-32767

循环结构程序设计实验报告

嘉应学院计算机学院 实验报告 课程名称程序设计基础实验名称实验地点 指导老师实验时间提交时间 班级姓名座号 一、实验目的和要求 (1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。 (2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)进一步学习调试程序。 二、实验环境和方法 实验方法: (一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 (二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。 (三)根据实验内容,编译程序。 实验环境:Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错, 及时改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”, 根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果 是否正确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容:编译以下题目的程序并调试运行。 (1)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。 编写程序如下: #include int main() { char c; int letters=0,space=0,digit=0,other=0; printf("请输入一行字符:\n"); while((c=getchar())!='\n')

在生物实验中如何确定实验组和对照组

在生物实验中如何确定实验组和对照组 山东省汶上县教学研究室张德路 生物实验设计的基本原则之一就是要设计对照实验(或称对照组),如何确定对照组呢?对此,好像大家没有一致的认识。由于人们对生物实验中的实验组和对照组认识的差异,常常会在一些具体问题上争论不休,特别是在对照组的确定上出现较大分歧。其实很多的老师和学生对这个问题的认识都比较模糊。下面是一些老师对这个问题的看法,我提出来请大家共同来探讨。 看法一:在实验中,首先根据题意确定实验变量,即本实验的结果的差异或者说结果的变化是由于谁造成的,这个变化的因素就是实验变量,那么对实验变量进行处理的,就是实验组。没有处理是的就是对照组。有些是进行另外的处理,也是对照组。 看法二:空白对照好理解,若是条件对照就不清楚了。如教材上光合作用的发现实验中,一张叶片一半遮光,一半曝光,到底哪一个是对照组?(光合作用,所以需要光,那有光的就是实验组,没光的就是对照组)。又如研究酶的活性,一个是37 ℃,一个是80 ℃,又是哪一个是对照组?(温度通过变化是相互对照。最后得出结论。) 看法三:单组单变量对照实验:施加变量的为实验组,不施加变量的是对照组;多组多变量对照实验:所有组都既是实验组也是其它组的对照组。 看法四:我觉得对照组就是一个参照物,一般没有变化或一直变化的为对照组。 看法五:弄清这个问题其实不难。首先你要明确本实验的实验目的,你准备施加何种实验条件来达到这个目的?这一组就是实验组。其次,为了更好的使实验组具有说服力,你要设对照组。无论是空白对照还是条件对照等所起的作用是相同的,那就是衬托。 看法六:这就要看你的实验目的了。如果你是为了证明酶在80 ℃条件下的催化特性,那么37 ℃的是对照。如果你为了证明酶在37 ℃条件下的催化特性,其他任何温度的实验都是对照。 上述说法中,我们不难看出,由于确定对照实验的依据不同,导致了对对照实验确定的混乱状况。 为了弄清上述问题,我们首先要弄清几个概念。什么是空白对照?什么是条件对照? 现代汉语词典上“对照”一词是这样解释的,【对照】①互相对比参照。②(人或事物)相比;对比。而【空白】是指(版面、书页、画幅等上面)空着,没有填满或没有被利用的部分。我们生物学上的“对照”通常是指“空白对照”,应该是不包含实验所研究的对象、条件等因素的,作为“空白对照”,它的实验结果应该是预知的。而“条件对照”则是研究在不同条件下的实验现象,从严格意义上讲各组都是实验组,而各组之间则是相互对比参照,互为对照组或实验组。因而“条件对照”的实验结果则是不明确的,只有通过实验才能得出。下面我们结合几个具体的实例来说明这个问题。 如探究唾液淀粉酶的消化作用实验,在这个实验中我们都知道滴加清水的(也就是不包含研究对象“唾液淀粉酶”)为对照组,而滴加唾液的为实验组。而探究酶高效性的实验中:根据实验目的可知,本实验探究酶(实验变量)与催化效率(反应变量)的关系,则加入鸡肝研磨液(含过氧化氢酶)的一组为实验组,而加入氯化铁的一组只是酶高效性的一个条件(高效性是相对于无机催化剂而言),实验本身并不研究氯化铁的催化作用,本实验就是条件对照。下面我们再看两个实例:

C语言程序设计基础实验报告6【VIP专享】

实验6 数组 一、实验目的 1、掌握一维数组和二维数组的定义、赋值和输入输出的方法; 2、掌握字符数组和字符串函数的使用; 3、掌握与数组有关的算法(特别是排序算法)。 二、实验内容和步骤 编程序并上机调试运行。 1、以下给定程序MODI1.C的功能是: 求一维数组a中所有元素的平均值, 结果保留两位小数。例如,当一维数组a中的元素为:10, 4, 2, 7, 3, 12, 5, 34, 5, 9时,程序的输出应为:The aver is: 9.10 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[10]={10,4,2,7,3,12,5,34,5,9}, i; /************found************/ /************found************/ s = a[0]; for ( i=1; i<10; i++) s += a[i]; aver = s / i; printf("The aver is: %.2f\n", aver); } 2、以下给定程序MODI1.C的功能是:求二维数组a中的最小值。 例如,当二维数组a中的元素为: 4 2 34 7 3 12 5 6 5 程序的输出应为:The min is: 2 。 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[3][3]={4,2,34,7,3,12,5,6,5}, i, j, min; clrscr();

宏指令及子程序设计实验

实验五:宏指令及子程序设计实验 院系名称:电子工程学院 学生姓名:李倩(33) 专业名称:电子信息工程 班级:电子0808

宏指令及子程序设计实验 5.5.1 实验目的 1、熟悉宏指令、宏定义、宏调用以及宏展开的概念;掌握宏指令的定义与调用的方法。 2、掌握子程序的定义、调用以及调用程序与子程序之间参数的传递方法。 3、了解宏指令与子程序的异同以及各自的适用场合。 5.5.2 实验预习要求 1、复习宏指令的定义与调用方法。 2、复习过子程序的定义与调用方法。 3、根据“2.5.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 4、从“2.5.4 实验习题”中任选一道题目,编写源程序,以便上机调试。 5.5.3 实验内容 从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在 屏幕上显示出来。 要求: ①在屏幕上显示字符串提示信息的 功能由宏指令DSTRING实现; ②将键盘输入的十进制数转换成二 进制数由子程序DTOB实现; ③在N个无符号字节型二进制数中 找出最大数的功能由子程序FMAX实现; ④将一个无符号字节型二进制数转 换为十进制数并在屏幕上显示的功能由子 程序BTOAD实现。 程序运行结果如右图所示。 1、编程指导 (1)显示提示信息的宏指令DSTRING的编写 宏指令通常用于在程序中需要反复使用但所需指令条数又不是很多的情形;而对于需要经常使用且需要较多指令才能完成的功能通常通过子程序调用来实现。这是因为,从执行速度上看,由于子程序调用涉及到保护断点的操作,因此,子程序调用比宏调用执行时间相对要稍长一些;但从生成的可执行文件的大小方面考虑,子程序调用生成的文件要小一些。读者在进行汇编语言程序设计时,应综合考虑两者的利弊,以便进行合理选择。 下面给出实现提示信息显示的宏指令的定义: DSTRING MACRO STRING PUSH DX PUSH AX MOV DX,OFFSET STRING MOV AH,09H INT 21H POP AX POP DX ENDM 请读者注意,宏指令应该先定义,后调用。因此,宏定义通常紧跟在代码段中段寄存器赋值指令之

C语言循环结构程序设计实验报告

甘肃政法学院 本科生实验报告 ( 五) 姓名:赵明翔 学院:公安技术学院 专业:安全防范工程 班级: 2015级安全防范工程班 实验课程名称:程序设计 实验日期:2016年月日 开课时间:2015学年第二学期

(2)输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字李方和等于该数本身。例如,153是水仙花数,因为153=12+53+33程序如下: #include int main() { int i,j,k,n; printf("paicissus numbers are"); for (n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf("%d",n); } printf("\n"); return 0; } 运行结果: (3)猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又

多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下了1个桃子了。求第一天共摘了多少桃子。 程序如下: #include int main() { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2; x2=x1; day--; } printf("total=%d\n",x1); return 0; } 运行结果: (4)①用牛顿迭代法求方程0634223=-+-x x x 在1.5附近的根. #include #include int main() {double x1,x0,f,f1; x1=1.5; do {x0=x1; f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x1=x0-f/f1;

实验组和对照组的判定方法

对照实验是在设计实验过程中才出现地一个环节,所以实验组和对照组地判断要在第二步骤作出假设地基础上来判断,根据假设提出地变量,符合假设地条件地就是实验组,控制条件地就是对照组,所以我感觉实验组和对照组地确定是根据假设地前提来确立地而不是固定地,所以“具体问题具体分析”乃是最正确地方法. 比如我们提出问题:光合作用是不是不要光?那么就会有两种假设:需要光或者是不需要光.如果我们提出地假设是:光合作用需要光,那么设计实验中,有光地就是实验组,遮光地就是对照组;如果提出地假设是:光合作用不需要光,那么无光就是实验组,有光就是对照组.所以我地观点应该是视题地假设而定,符合假设预期地就是实验组,另一种控制变量地就是对照组.又比如,研究温度对酶地活性地影响,如果你是为了证明酶在℃条件下地催化特性,那么℃地是对照.如果你为了证明酶在℃条件下地催化特性,其他任何温度地实验都是对照.文档收集自网络,仅用于个人学习 从物理学上讲,运动是绝对地,静止是相对地,只是选择了不同地参照物,或者是互相作为参照物,从严格意义上讲各组都是实验组,而各组之间则是相互对比参照,互为对照组或实验组.因而“条件对照”地实验结果则是不明确地,只有通过实验才能得出.单组单变量对照实验:施加变量地为实验组,不施加变量地是对照组;多组多变量对照实验:所有组都既是实验组也是其它组地对照组.文档收集自网络,仅用于个人学习 下面我们结合几个具体地实例来说明这个问题. 如探究唾液淀粉酶地消化作用实验,在这个实验中我们都知道滴加清水地(也就是不包含研究对象“唾液淀粉酶”)为对照组,而滴加唾液地为实验组.文档收集自网络,仅用于个人学习 例年,德国科学家萨克斯将绿色叶片放在暗处几小时,然后把此叶片一半遮光,一半曝光.经过一段时间后,用碘蒸气处理叶片,成功地证明绿色叶片在光合作用中产生了淀粉.萨克斯对这个实验地设计具有严密地逻辑性,具体体现在()文档收集自网络,仅用于个人学习 .没有对照实验.本实验不需要设对照实验 .曝光处作为对照实验.遮光处作为对照实验 答案:,但有人认为应选. 例为了解土壤微生物是否能分解农药,并尽快得出实验结论,有人用“敌草隆”(一种除草剂)进行了实验.取等量砂土分装于相同地两容器中,组高压灭菌,组不灭菌,下列有关事项地叙述不正确地是()文档收集自网络,仅用于个人学习 .组为实验组,组为对照组 .向、中喷入等量敌草隆,再置于同一恒温箱中培养相同时间 .检测敌草隆消失地情况,预计组敌草隆含量不变,组地全部消失 .只用砂土,实验效果不如几种典型土壤混合后地好 答案:,但有人认为选项地说法是正确地. 师生关于对照实验地模糊认识主要表现在以下几个方面: 一是认为处于正常情况下地实验是对照组,而经过特別处理地是实验组.这种说法还是很模糊.二是认为显示正结果地实验为对照实验.什么是正结果?什么是负结果?同样不好确定.三是认为处于正常情况且有正结果地是对照实验.这种说法结合了以上两种说法.四是认为沒有限制因素地为对照实验.五是认为具负(相反)结果地是对照实验.文档收集自网络,仅用于个人学习 究竟实验组和对照组判段地依据到底是什么呢? 通常,一个实验总要进行对照实验(有时还要进行对比实验).对照实验只是一个条件(即因素)不同,其他条件(因素)都相同地情况下所进行地实验,研究此条件(因素)和结果

循环程序设计实验

循环程序设计实验 实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 实验预习要求 复习比较指令、条件转移指令和循环指令。 复习循环程序的结构、循环控制方法等知识。 读懂“实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。 根据“实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 从“实验习题”中任选一道题目,编写源程序,以便上机调试。 实验内容 计算1+2+……n=,其中n通过键盘输入。要求在屏幕上提供如下信息: Please input a number(1627): ;出现此信息后通过键盘输入一个小于628的无符号整数 1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。编程指导 键盘输入的十进制数如 368在计算机中是以 33H,36H,38H形式存 放的,如何将它们转换 为一个二进制数0B,以 便对累加循环的循环次 数进行控制是本程序首 先要解决的问题。将键 盘输入的十进制数转换为二进制数的程序清单如下: DATA SEGMENT INF1 DB "Please input a number (0-65535):$" IBUF DB 7,0,6 DUP() DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV A X, DATA MOV DS, AX MOV DX, OFFSET INF1 MOV AH, 09H INT 21H MOV DX, OFFSET IBUF ;键入一个十进制数(<65535) MOV AH, 0AH INT 21H MOV CL, IBUF+1 ;十进制数的位数送CX MOV CH, 0 MOV SI, OFFSET IBUF+2 ;指向输入的第一个字符(最高位)

相关主题
文本预览
相关文档 最新文档