C_上机实验(含作业)总的目的、要求和评分标准20xx0302

上机实验(含作业)总的目的、要求和评分标准

一、实验目的

实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。

C程序设计课程实践性很强,即要求独立编写程序,学会独立上机调试程序。

学会独立上机调试程序。也就是要善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。计算机技术是实践性很强的技术,要求从事这一领域的人不仅能了解和熟悉有关理论和方法,还要求自己动手实践。

对程序设计来说,要求会编写程序并上机调试通过。因此调试程序本身是程序设计课程的一个重要的内容和基本要求,应给予充分的重视。调试程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“会意”难以“言传”。因此,在实验时不但要达到通过程序完成每一次的实验任务,而且应当在已通过的程序基础上作进一步的修改、提高和完善。甚至于“自设障碍”,即把正确的程序改为有错的(如用scanf函数为输入变量输入数据时,漏写“&”符号,double变量使用格式符“%f”;使数组下标出界;使整数溢出等等),观察和分析所出现的情况。这样的学习才会有真正的收获。

实验目的可归纳如下:

⒈ 验证自己已建立起来的概念或所编写的程序是否正确;

⒉ 加深对课堂所学内容的理解和语法规则的记忆;

⒊ 理解和掌握运用计算机高级语言进行编程的思想方法;

⒋ 掌握常用算法的设计与应用实现;

⒌ 熟悉Turbo C 2.0程序开发环境,掌握C程序常用的调试手段;

⒍ 学会上机调试程序的方法,不断积累调试经验,提高排错能力;

⒎ 使自己具有独立的应用编程和熟练的程序调试能力。

二、要求:

⒈ 做好每一次上机前的准备以提高上机效率:

① 预先认真阅读相关实验内容,做到心中有明确的目的要求和任务,要有备而来;

② 按照实验内容规定的习题题目,事先在实验预习报告上编写好源程序及运行程序所需的典型数据,并经人工静态检查认为无误;手编程序应书写整齐,应在每个题目之间留出一定的空间,以备记录上机调试情况和运行结果等;对程序中自己有疑问的地方,应作出记号,以便上机时给以注意。

③ 将想要上机验证的问题草拟提纲;制定一个简捷的程序调试计划。

⒉ 上机时输入和调试自己所编写的程序。在使用键盘时,应采用正确的指法击键,为今后正确使用键盘打下基础;应该一人一组,尽量独立思考,上机过程中出现的问题,除了是系统的问题外,一般应自己独立处理,尤其对“出错信息”,应善于自己分析判断,并充分利用开发工具提供的错误信息和调试手段解决出现的问题,及时修改与完善源程序,随时记录有价值的内容。解决问题是学习调试程序的良好机会。初学者切不可不编程序或抄别人的程序去上机,应从一开始就养成严谨的科学作风。

⒊ 程序调试通过后,应运行程序并根据事先准备的典型数据验证结果,在运行时要注意在输入不同数据时所得到的不同结果(如解一元二次方程上时,不同的a、b、c组合应得到实根、复根的不同结果)。此时应运行几次,分别检查在不同情况下程序是否正确。

⒋ 为便于教师、助教检查和以后复习,请不要删除已通过的程序,包括有问题待答疑的程序,应保存在自己的工作目录内。源程序名应能反映哪一次实验的哪一个题目,例如:若已完成第一次实验第二道程序题的编写且学生名称为李明,则完成后的源文件应命名为LM_1_2.C,其中LM是姓名首字母的大写,1表示第一次实验,2表示第二道程序题,下划线“_”不可丢失。若有未完成调试的源程序,可以作存盘保存处理,待课外继续完成。

⒌ 在实验课堂上至少要完成每次实验任务的前三道程序题,可以课后继续完成其余题目,但每次实验任务中所有的程序题都必须写在实验报告上并递交。

三、实验报告内容:

上机结束后,应整理出实验报告,实验报告可采用英文或中文书写,每份实验报告总分100分,实验报告必须在该次实验后下一周星期四下午5、6节课前交到学习委员处,由学习委员按学号整理好,在上课前交到讲台上。

实验报告应包括以下内容:

⒈ 实验目的(10分)

⒉ 实验题目(10分)

程序清单(50分)(此部分要求:① 含算法的伪代码描述或流程图描述;② 必须包括注释。)

⒋ 运行结果(10分)(必须是程序清单所对应的输入、数据和打印输出的结果);

⒌ 调试分析和体会(20分)(这是实验报告中最重要的一项,也是最容忽视的一项。实验过程中大量的工作是程序调试,在调试过程中会遇到各种各样的问题,每解决一个问题就能积累一点经验,提高编程的能力。因此,对实验的总结,最重要的是程序调试经验的总结。调试分析也包括对结果的分析。体会主要是指通过本次实验是否达到了实验目的,有那些基本概念得到了澄清等。)

四、实验纪律(参照学生守则):

⒈ 无故缺勤实验一次,取消期末考试的资格;

⒉ 在实验进行中,累计2次玩游戏者,取消期末考试的资格;

⒊ 因故缺勤实验一次,必须补做,补交实验报告。

 


Lab 1 Sequence Structure

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

 在自己的系统上运行“Hello, World”,再让程序遗漏一些部分,观察出现的错误信息。

⒉ 调试并改正下列程序中的错误。该程序能够计算某个数x的平方,并赋值给y,且分别以“y=x *x”和“x *x = y”的形式输出xy的值。要求记录错误信息,说明错误原因和改正方法,最后写正确的程序。

#include <stdio>

void main(void)

{

       int x,y;

      

       y = x*x

       printf(“%d = %d * %d”,x);

       printf(“d *%d = %d,y);

}

⒊ 输入两个数,交换它们的值。

 求摄氏温度26对应的华氏温度。计算公式为,其中,c表示摄氏温度;f表示华氏温度。

⒌ 输入某员工的基本工资(以元为单位,工资为整数值),如果他的住房补贴是基本工资的20%,岗位补贴是基本工资的40%,计算该员工的总工资。

Lab 2 Selection Structure

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ 输入一个年份,判断其是否为闰年。

⒉ 假设现在90号汽油6.95/升、93号汽油7.44/升、97号汽油7.93/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%3%的折扣。请编写程序,输入顾客的加油量a,汽油品种b909397)和服务类型cm为自助服务,e为协助服务),计算并输出应付款(保留小数点后2位)。

⒊ 给一个不多于5位的正整数,求出它是几位数,并计算组成该整数的每位上的数字的和。

⒋ 输入三角形的三边a,b,c,若能构成三角形,输出YES,否则输出NO

⒌ 输入某学生语文课程的成绩,输出该成绩的等级。判断规则为:如果成绩在90-100的范围内,则等级为A;若成绩在80-89的范围内,则等级为B;若成绩在70-79的范围内,则等级为C;若成绩在60-69的范围内,则等级为D;若少于60分,则等级为F。(要求:用switch语句实现。)

Lab 3 Repetition Structure

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ 500开始,求被357除余数均为2的前50个数。

⒉ 打印形状为正方形和直角三角形的乘法九九表。

⒊ 由键盘输入一个正整数,判断它是否为素数(只能被1和自身整除的数)。

⒋ 输入一个正整数n,输出的前n项和之和,保留小数点2位。

⒌ 将一笔零钱(大于8分,小于1元,精确到分)换算成1分、2分和5分的硬币组合。输入金额,输出共有多少种换法及换算的方案。

 编写程序输出以下的图形:

   A   B   C   D

   E   F   G

   H   I

   J

Lab 4 Function ( Part Ⅰ)

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

要求:从本次实验开始,每一个功能模块都必须用一个函数来实现。

⒈ 输入一批正整数(以0或负数为结束标志),求其中所有奇数的和。要求:定义和调用函数even(n) 判断整数的奇偶性,当n为偶数时返回1,否则返回0

⒉ 输入两个正整数mn1mn1000),输出mn之间的所有满足各位数字的立方和等于它本身的数(如153 = 13 + 53 + 33)。要求定义并调用函数isnumber(number)判断number的各位数字之立方和是否等于它本身。

⒊ 随机产生50200500之间的整数,输出所有的整数,判断每个整数是否为素数;若是素数,则在输出整数时,用*标记。要求每行输出10个数。要求:判断一个整数是否为素数,必须用自定义的函数实现。

⒋ 给定平面任意两点坐标(x1,y1)(x2,y2),求这两点之间的距离(保留2位小数)。要求:定义和调用函数dist(x1,y1,x2,y2)计算两点间的距离。

⒌ 输入两个正整数,求其最大公约数和最小公倍数。要求:求最小公约数必须用自定义的函数实现。

Lab 5 Function ( Part Ⅱ )

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ 编程计算Xn(要求:用递归函数)。

⒉ 编程计算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))

⒊ 写出下列程序的输出结果

(1)   int x1=30,x2=40;

void sub(int x,int y)

{

       x1 = x ; x =y; y=x1;

}

int main(void)

{

       int x3=10,x4=20;

  sub(x3,x4);

  sub(x2,x1);

       printf(“%d,%d,%d,%d\n”,x3,x4,x1,x2);

       return 0;

}

  (2)

       int x=3;

       void incre()

       {

       static int x=1;

          x*=x+1;

       printf(“%d”,x);

       }

  

   int main(void)

   {

              int i;

              for(i=1,i<x,i++) incre();

              return 0;

}

Lab 6 Array ( Part Ⅰ )

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ 产生1000—5000之间的100个随机整数,找出其中的素数,用冒泡法对找出的素数进行排序。请将产生的随机数、找出的素数和排序后的素数分别输出。

⒉ 有一个按非递增排列好的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。

⒊ 计算以下整数的标准差和平均值。

-6, -12, 8, 13, 11, 6, 7, 2, -6, -9, -10, 11, 10, 9, 2

  其中,标准差的计算公式为:

⒋ 输入数组x的全部10个元素,求出数组x中各相邻两个元素的和并依次存放到a数组中,然后输出a数组的所有元素。

⒌ 有15个已经排序好的数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“no found”。

⒍ 输入字符串(以回车结束),统计该字符串中元音字母(’a’,’e’,’i’,’o’,’u’)的个数。

Lab 7 Array ( Part Ⅱ )

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ NN列(N不超过5)的二维数组中每一行的元素进行排序,第0行从小到大排序,第1行从大到小排序,第2行从小到大排序,第3行从大到小排序,……,以此类推。

⒉ 用递推法打印杨辉三角形(提示:利用二维数组)。

⒊ 找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。

⒋ 编程找出一个二维数组中值最大和值最小的元素,并告知所在行号和列号。

 输入两个正整数mnm≥1,n≤6),然后输入该mn列二维数组a中的元素,将该二维数组a中的每个元素向右移一列,最后一列换到第一列,移动后的数组存到另一个二维数组b中,按矩阵形式输出b数组。

Lab 8 Pointers

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

要求:本次实验的所有题目要求用指针来实现。

⒈ 输入10个整数,将其中最大的数与第一个数对换,把最小的数与最后一个数对换。要求:输入、处理和输出分别用一个函数实现。

⒉ 输入一个以’#’结束的字符串s,将该字符串中的所有数字字符放入另外一个数组d中,最后输出d中的数字字符串。要求:对字符的逐个扫描需要用指针来实现。

⒊ 输入一个以回车结束的字符串(长度少于30个字符),删除字符串中所有的数字字符。要求:逐个取出字符的工作变量要用指针来实现。

 输入10个整数,再输入一个待查找的整数,采用二分查找法在前10个整数中搜索,若存在输出“found”,否则输出“not exist”。要求:二分查找时搜索的工作变量要用指针来实现。

 假设有一个数组int A[nSize],假设其中隐藏着若干0,其余非0整数,写一个函数int Fun(int* A, int nSize),使把0移至后面,非0整数移至数组前面并保持原来的顺序,返回值为原数据中第一个元素为0的下标。

Lab 9 Strings, Preprocessor

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ n个国家名,要求按字母先后顺序排列,并按升序输出。(要求:尽量使用标准字符串函数)

 输入字符串1和字符串2,若字符串1比字符串2大,则把字符串2连接到字符串1的后面;若字符串2比字符串1大,则把字符串1连接到字符串2的后面,并输出连接后的新字符串的长度。

⒊ 输入一个以回车结束的字符串(少于30个字符),将它的内容逆序输出。如“ABCD”输出为“DCBA”。

⒋ 输入一行字母字符,根据需要设置条件编译,使之能升序输出或降序输出。

⒌ 定义一个求三个数中最大值的宏,并在在主函数中使用这个宏,求出输入的三个整数的最大值。

Lab 10 Structures and Linked Lists

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ 编写时间换算程序。用结构体类型表示时间的时、分、秒,输入一个时间数值,再输入一个秒数nn<60),以hh:mm:ss的格式输出该时间再过n秒后的时间值(超过24点就从0点开始计时)。

   例如:

    输入:time : 11:59:40

          n: 30

    输出:12:0:10

⒉ 编写程序,从键盘输入n(n<10)本书的名称和定价并存入结构体数组中,从中查询定价最高和最低的书的名称和定价,并输出。

  10个职工,每个职工的数据包括:职工号、姓名、基本工资、奖励工资、扣项合计和实发工资,从键盘输入这10个人的数据(不含实发工资)。要求实发工资由前三项工资计算,找出工资最高者的职工号和姓名,并打印整张职工工资表。

⒋ 建立一个链表,每个结点中包括学号、姓名、性别和成绩。要求输入一个成绩x,查找该链表中是否有成绩等于x的结点。

⒌ 建立一个结点按学生成绩从小到大顺序排列的链表,每个结点中包括学号、姓名、性别和成绩。要求:输入一个新的学生结点信息,根据其成绩,插入到原链表中并将链表输出;要求:输入一个学生的学号,查找该链表中是否有学号等于x的结点,若存在,则删除该结点。

 

第二篇:C_上机实验(含作业)总的目的、要求和评分标准

上机实验(含作业)总的目的、要求和评分标准

一、实验目的

实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。

C程序设计课程实践性很强,即要求独立编写程序,学会独立上机调试程序。

学会独立上机调试程序。也就是要善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。计算机技术是实践性很强的技术,要求从事这一领域的人不仅能了解和熟悉有关理论和方法,还要求自己动手实践。

对程序设计来说,要求会编写程序并上机调试通过。因此调试程序本身是程序设计课程的一个重要的内容和基本要求,应给予充分的重视。调试程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“会意”难以“言传”。因此,在实验时不但要达到通过程序完成每一次的实验任务,而且应当在已通过的程序基础上作进一步的修改、提高和完善。甚至于“自设障碍”,即把正确的程序改为有错的(如用scanf函数为输入变量输入数据时,漏写“&”符号,double变量使用格式符“%f”;使数组下标出界;使整数溢出等等),观察和分析所出现的情况。这样的学习才会有真正的收获。

实验目的可归纳如下:

⒈ 验证自己已建立起来的概念或所编写的程序是否正确;

⒉ 加深对课堂所学内容的理解和语法规则的记忆;

⒊ 理解和掌握运用计算机高级语言进行编程的思想方法;

⒋ 掌握常用算法的设计与应用实现;

⒌ 熟悉Turbo C 2.0程序开发环境,掌握C程序常用的调试手段;

⒍ 学会上机调试程序的方法,不断积累调试经验,提高排错能力;

⒎ 使自己具有独立的应用编程和熟练的程序调试能力。

二、要求:

⒈ 做好每一次上机前的准备以提高上机效率:

① 预先认真阅读相关实验内容,做到心中有明确的目的要求和任务,要有备而来;

② 按照实验内容规定的习题题目,事先在实验预习报告上编写好源程序及运行程序所需的典型数据,并经人工静态检查认为无误;手编程序应书写整齐,应在每个题目之间留出一定的空间,以备记录上机调试情况和运行结果等;对程序中自己有疑问的地方,应作出记号,以便上机时给以注意。

③ 将想要上机验证的问题草拟提纲;制定一个简捷的程序调试计划。

⒉ 上机时输入和调试自己所编写的程序。在使用键盘时,应采用正确的指法击键,为今后正确使用键盘打下基础;应该一人一组,尽量独立思考,上机过程中出现的问题,除了是系统的问题外,一般应自己独立处理,尤其对“出错信息”,应善于自己分析判断,并充分利用开发工具提供的错误信息和调试手段解决出现的问题,及时修改与完善源程序,随时记录有价值的内容。解决问题是学习调试程序的良好机会。初学者切不可不编程序或抄别人的程序去上机,应从一开始就养成严谨的科学作风。

⒊ 程序调试通过后,应运行程序并根据事先准备的典型数据验证结果,在运行时要注意在输入不同数据时所得到的不同结果(如解一元二次方程上时,不同的a、b、c组合应得到实根、复根的不同结果)。此时应运行几次,分别检查在不同情况下程序是否正确。

⒋ 为便于教师、助教检查和以后复习,请不要删除已通过的程序,包括有问题待答疑的程序,应保存在自己的工作目录内。源程序名应能反映哪一次实验的哪一个题目,例如:若已完成第一次实验第二道程序题的编写且学生名称为李明,则完成后的源文件应命名为LM_1_2.C,其中LM是姓名首字母的大写,1表示第一次实验,2表示第二道程序题,下划线“_”不可丢失。若有未完成调试的源程序,可以作存盘保存处理,待课外继续完成。

⒌ 在实验课堂上至少要完成每次实验任务的前三道程序题,可以课后继续完成其余题目,但每次实验任务中所有的程序题都必须写在实验报告上并递交。

三、实验报告内容:

上机结束后,应整理出实验报告,实验报告可采用英文或中文书写,每份实验报告总分100分,实验报告必须在该次实验后下一周星期四9、10节课前交到学习委员处,由学习委员按学号整理好,在上课前交到讲台上。

实验报告应包括以下内容:

⒈ 实验目的(10分)

⒉ 实验题目(10分)

程序清单(50分)(此部分要求:① 含算法的伪代码描述或流程图描述;② 必须包括注释。)

⒋ 运行结果(10分)(必须是程序清单所对应的输入、数据和打印输出的结果);

⒌ 调试分析和体会(20分)(这是实验报告中最重要的一项,也是最容忽视的一项。实验过程中大量的工作是程序调试,在调试过程中会遇到各种各样的问题,每解决一个问题就能积累一点经验,提高编程的能力。因此,对实验的总结,最重要的是程序调试经验的总结。调试分析也包括对结果的分析。体会主要是指通过本次实验是否达到了实验目的,有那些基本概念得到了澄清等。)

四、实验纪律(参照学生守则):

⒈ 无故缺勤实验一次,取消期末考试的资格;

⒉ 在实验进行中,累计2次玩游戏者,取消期末考试的资格;

⒊ 因故缺勤实验一次,必须补做,补交实验报告。

 


Lab 1 Sequence Structure

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒉   在自己的系统上运行“Hello, World”,再让程序遗漏一些部分,观察出现的错误信息。

⒉ 输入两个城市之间的距离(以千米为单位),将其转换为以英里为单位的距离。

⒊ 输入两个数,交换它们的值。

⒋ 输入以华氏为单位的温度,将其转换为以摄氏为单位的温度。

⒌ 输入某员工的基本工资(以元为单位,工资为整数值),如果他的住房补贴是基本工资的20%,岗位补贴是基本工资的40%,计算该员工的总工资。

Lab 2 Selection Structure

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ 输入一个年份,判断其是否为闰年。

⒉ 读入x的值,计算函数fx):

                            x(x+2)      (2<x≤10)

                   f(x)=     2x         (-1<x≤ 2)

                            x-1         (    x≤-1)

⒊ 给一个不多于5位的正整数,求出它是几位数,并计算组成该整数的每位上的数字的和。

⒋ 输入三个坐标(x1,y1)、(x2,y2)、(x3,y3),判断这三个点是否在一条直线上。

⒌ 输入某学生语文课程的成绩,输出该成绩的等级。判断规则为:如果成绩在90-100的范围内,则等级为A;若成绩在80-89的范围内,则等级为B;若成绩在70-79的范围内,则等级为C;若成绩在60-69的范围内,则等级为D;若少于60分,则等级为F。(要求:用switch语句实现。)

Lab 3 Repetition Structure

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ 500开始,求被357除余数均为2的前50个数。

⒉ 打印形状为正方形和直角三角形的乘法九九表。

⒊ 由键盘输入一个正整数,判断它是否为素数(只能被1和自身整除的数)。

⒋ 按下面的近似公式计算常量e的值,e的计算公式如下:

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

    由键盘输入误差δ,当最后一个子项1/n!的值小于δ时,计算结束。

⒌ 百马百担问题。有100匹马,驮100担货,大马驮3担,中马驮2担,两个小马驮1担。问有大、中、小马各多少匹?

 编写程序输出以下的图形:

                     1

2   3

4            5            6

7            8            9            10

Lab 4 Function ( Part Ⅰ)

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

要求:从本次实验开始,每一个功能模块都必须用一个函数来实现。

⒈  m!/(n!*(m-n)!) 的值。要求:求某个数的阶层必须用自定义的函数实现。

⒉ 用二分法求下面方程2x3-4x2+3x-6=0的根,要求误差小于10-5

⒊ 随机产生50200500之间的整数,输出所有的整数,判断每个整数是否为素数;若是素数,则在输出整数时,用*标记。要求每行输出10个数。要求:判断一个整数是否为素数,必须用自定义的函数实现。

⒋ 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则提示重做,显示“Not correct! Try again!”,最多给三次机会,如果三次仍未做对,则显示“Not correct. You have tried three times! Test over!”程序结束。

⒌ 输入两个正整数,求其最大公约数和最小公倍数。要求:求最小公约数必须用自定义的函数实现。

Lab 5 Function ( Part Ⅱ )

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ 编程计算Xn(要求:用递归函数)。

⒉ 编程计算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))

⒊ 在自己的系统上分别运行下列程序,再让其中的变量做些存储类别上的变化,观察输出结果,写出你对变量存储类别、变量作用范围的理解。

main()

{

   int a=2,i;

   clrscr();

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

           printf("%4d",f(a));

}

void f(int a)

{

  int b=0;static int c=3;

  b++;c++;

}

┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅

int a=3,b=5;

int max(int a,int b) {

?     int c;

?     c=a>b?a:b;

?     return c;

 }?

main() 

{

?       int a=8;

?       printf("%d\n",max(a,b));

}

┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅

int a=3,b=5;

void num() {

?     extern int x,y;

?     int a=15,b=10;

?     x=a-b;

?     y=a+b;

}

int  x,y;

main() {

 int a=7,b=5;?

?  x=a+b;

?  y=a-b;

?  num();

?  printf("%d,%d\n",x,y);

?  }

┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅

int a;

fun(int i)  {

?  a+=2*i;

?  return a;

}

main() {

?  int a=10;

?  printf("%d,%d\n",fun(a),a);

?}

Lab 6 Array ( Part Ⅰ )

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ 产生1000—5000之间的100个随机整数,找出其中的素数,用冒泡法对找出的素数进行排序。请将产生的随机数、找出的素数和排序后的素数分别输出。

⒉ 有一个按非递增排列好的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。

⒊ 计算以下整数的标准差和平均值。

-6, -12, 8, 13, 11, 6, 7, 2, -6, -9, -10, 11, 10, 9, 2

  其中,标准差的计算公式为:

⒋ 某班级有100个学生,现选举班长,有5个候选人,请统计每个候选人的票数,并用冒泡排序法对票数进行排序。

⒌ 任意输入10个数,求这个10个数中最大的间隔值(即是最大值与最小值的差)。要求:若需要排序,必须用选择法排序。

⒍ 约瑟夫问题。M个人围成一圈,从第一个人开始依次从1N循环报数,每当报数为N时此人出圈,直到圈中只剩下一个人为止。请按退出次序输出出圈人原来的编号以及留在圈中的最后一个人原来的编号。

Lab 7 Array ( Part Ⅱ )

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ 假设有一个数组,存放着10个数,现输入一个数,用顺序查找法找出该数是数组中第几个元素。如果该数不在数组中,则打印无此数

⒉ 用递推法打印杨辉三角形(提示:利用二维数组)。

⒊ 找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。

⒋ 编程找出一个二维数组中值最大和值最小的元素,并告知所在行号和列号。

 输入一个34列的矩阵和45列的矩阵,计算这两个矩阵相乘的结果。

Lab 8 Pointers

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

要求:本次实验的所有题目要求用指针来实现。

⒈ 输入10个整数,将其中最大的数与第一个数对换,把最小的数与最后一个数对换。要求:输入、处理和输出分别用一个函数实现。输入三个整数,要求由大到小输出。

⒉ 设计一个函数,对10个字符串由小到大顺序排序。要求:对字符串赋初值、排序和输出都用一个函数来实现。

⒊ 编写程序,验证哥德巴赫猜想。哥德巴赫提出:一个不小于6的偶数必定能表示为两个素数之和。例如:

6=3+3 8=5+3  10=7+3  ……

要求将6500之间的偶数表示为两个素数之和。即该程序将打印出一个偶数分解成两个素数和的全部组合。

 输入10个整数,再输入一个待查找的整数,采用二分查找法在前10个整数中搜索,若存在输出“found”,否则输出“not exist”。要求:二分查找时搜索的工作变量要用指针来实现。

 假设有一个数组int A[nSize],假设其中隐藏着若干0,其余非0整数,写一个函数int Fun(int* A, int nSize),使把0移至后面,非0整数移至数组前面并保持原来的顺序,返回值为原数据中第一个元素为0的下标。

Lab 9 Strings, Preprocessor

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ n个国家名,要求按字母先后顺序排列,并按升序输出。(要求:尽量使用标准字符串函数)

 输入字符串1和字符串2,若字符串1比字符串2大,则把字符串2连接到字符串1的后面;若字符串2比字符串1大,则把字符串1连接到字符串2的后面,并输出连接后的新字符串的长度。

⒊ 定义一个带参数的宏,计算n!,并在主函数中使用这个宏。并比较带参数的宏与函数的异同。

⒋ 输入一行字母字符,根据需要设置条件编译,使之能升序输出或降序输出。

⒌ 定义一个求三个数中最大值的宏,并在在主函数中使用这个宏,求出输入的三个整数的最大值。

Lab 10 Structures and Linked Lists

上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。

⒈ 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。

⒉ 10个职工,每个职工的数据包括:职工号、姓名、基本工资、奖励工资、扣项合计和实发工资,从键盘输入这10个人的数据(不含实发工资)。要求实发工资由前三项工资计算,找出工资最高者的职工号和姓名,并打印整张职工工资表。

⒊ 建立一个链表,每个结点中包括学号、姓名、性别和成绩。要求输入一个成绩x,查找该链表中是否有成绩等于x的结点。

⒋ 建立一个结点按学生成绩从小到大顺序排列的链表,每个结点中包括学号、姓名、性别和成绩。要求:输入一个新的学生结点信息,根据其成绩,插入到原链表中并将链表输出;要求:输入一个学生的学号,查找该链表中是否有学号等于x的结点,若存在,则删除该结点。

⒌ 建立一个链表,存放10个整数,要求逆置该链表。

相关推荐