C_上机实验(含作业)总的目的、要求和评分标准_大作业要求和评分标准
C_上机实验(含作业)总的目的、要求和评分标准由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“大作业要求和评分标准”。
上机实验(含作业)总的目的、要求和评分标准
一、实验目的实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。
C程序设计实践性很强,即要求独立编写程序,学会独立上机调试程序。
学会独立上机调试程序。也就是要善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。计算机技术是实践性很强的技术,要求从事这一领域的人不仅能了解和熟悉有关理论和方法,还要求自己动手实践。
对程序设计来说,要求会编写程序并上机调试通过。因此调试程序本身是程序设计课程的一个重要的内容和基本要求,应给予充分的重视。调试程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“会意”难以“言传”。因此,在实验时不但要达到通过程序完成每一次的实验任务,而且应当在已通过的程序基础上作进一步的修改、提高和完善。甚至于“自设障碍”,即把正确的程序改为有错的(如用scanf函数为输入变量输入数据时,漏写“&”符号,double变量使用格式符“%f”;使数组下标出界;使整数溢出等等),观察和分析所出现的情况。这样的学习才会有真正的收获。
实验目的可归纳如下:
⒈ 验证自己已建立起来的概念或所编写的程序是否正确;
⒉ 加深对课堂所学内容的理解和语法规则的记忆;
⒊ 理解和掌握运用计算机高级语言进行编程的思想方法;
⒋ 掌握常用算法的设计与应用实现;
⒌ 熟悉Turbo C 2.0程序开发环境,掌握C程序常用的调试手段;
⒍ 学会上机调试程序的方法,不断积累调试经验,提高排错能力;
⒎ 使自己具有独立的应用编程和熟练的程序调试能力。
二、要求:
⒈ 做好每一次上机前的准备以提高上机效率:
① 预先认真阅读相关实验内容,做到心中有明确的目的要求和任务,要有备而来;
② 按照实验内容规定的习题题目,事先在实验预习报告上编写好源程序及运行程序所需的典型数据,并经人工静态检查认为无误;手编程序应书写整齐,应在每个题目之间留出一定的空间,以备记录上机调试情况和运行结果等;对程序中自己有疑问的地方,应作出记号,以便上机时给以注意。
③ 将想要上机验证的问题草拟提纲;制定一个简捷的程序调试计划。
⒉ 上机时输入和调试自己所编写的程序。在使用键盘时,应采用正确的指法击键,为今后正确使用键盘打下基础;应该一人一组,尽量独立思考,上机过程中出现的问题,除了是系统的问题外,一般应自己独立处理,尤其对“出错信息”,应善于自己分析判断,并充分利用开发工具提供的错误信息和调试手段解决出现的问题,及时修改与完善源程序,随时记录有价值的内容。解决问题是学习调试程序的良好机会。初学者切不可不编程序或抄别人的程序去上机,应从一开始就养成严谨的科学作风。
⒊ 程序调试通过后,应运行程序并根据事先准备的典型数据验证结果,在运行时要注意在输入不同数据时所得到的不同结果(如解一元二次方程上时,不同的a、b、c组合应得到实根、复根的不同结果)。此时应运行几次,分别检查在不同情况下程序是否正确。
⒋ 为便于教师、助教检查和以后复习,请不要删除已通过的程序,包括有问题待答疑的程序,应保存在自己的工作目录内。源程序名应能反映哪一次实验的哪一个题目,例如:若已完成第一次实验第二道程序题的编写且学生名称为李明,则完成后的源文件应命名为LM_1_2.C,其中LM是姓名首字母的大写,1表示第一次实验,2表示第二道程序题,下划线“_”不可丢失。若有未完成调试的源程序,可以作存盘保存处理,待课外继续完成。
⒌ 在实验课堂上至少要完成每次实验任务的前三道程序题,可以课后继续完成其余题目,但每次实验任务中所有的程序题都必须写在实验报告上并递交。
三、实验报告内容:
上机结束后,应整理出实验报告,实验报告可采用英文或中文书写,每份实验报告总分100分,实验报告必须在该次实验后下一周星期四上午1、2节课前交到学习委员处,由学习委员按学号整理好,在上课前交到讲台上。
实验报告应包括以下内容:
⒈ 实验目的(10分)
⒉ 实验题目(10分)
⒊ 程序清单(50分)(此部分要求:① 含算法的伪代码描述或流程图描述;② 必须包括注释。)⒋ 运行结果(10分)(必须是程序清单所对应的输入、数据和打印输出的结果);
⒌ 调试分析和体会(20分)(这是实验报告中最重要的一项,也是最容忽视的一项。实验过程中大量的工作是程序调试,在调试过程中会遇到各种各样的问题,每解决一个问题就能积累一点经验,提高编程的能力。因此,对实验的总结,最重要的是程序调试经验的总结。调试分析也包括对结果的分析。体会主要是指通过本次实验是否达到了实验目的,有那些基本概念得到了澄清等。)
四、实验纪律(参照学生守则):
⒈ 无故缺勤实验一次,取消期末考试的资格;
⒉ 在实验进行中,累计2次玩游戏者,取消期末考试的资格;
⒊ 因故缺勤实验一次,必须补做,补交实验报告。
Lab 1 Sequence Structure
上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。
⒈ 在自己的系统上运行“Hello, World”,再让程序遗漏一些部分,观察出现的错误信息。
⒉ 输入两个城市之间的距离(以千米为单位),将其转换为以英里为单位的距离
⒊ 输入两个数,交换它们的值。
⒋ 输入以华氏为单位的温度,将其转换为以摄氏为单位的温度。
⒌ 输入某员工的基本工资(以元为单位,工资为整数值),如果他的住房补贴是基本工资的20%,岗位补贴是基本工资的40%,计算该员工的总工资。
Lab 2 Selection Structure
上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。
⒈ 输入一个年份,判断其是否为闰年。
⒉ 读入x的值,计算函数f(x):
x(x+2)(2
f(x)=2x(-1
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开始,求被3、5、7除余数均为2的前50个数。
⒉ 打印形状为正方形和直角三角形的乘法九九表。
⒊ 由键盘输入一个正整数,判断它是否为素数(只能被1和自身整除的数)。
⒋ 按下面的近似公式计算常量e的值,e的计算公式如下:
e=1+1/1!+1/2!+1/3!+……+1/n!
由键盘输入误差δ,当最后一个子项1/n!的值小于δ时,计算结束。
⒌ 百马百担问题。有100匹马,驮100担货,大马驮3担,中马驮2担,两个小马驮1担。问有大、中、小马各多少匹?
⒍ 编写程序输出以下的图形:
456
78910
Lab 4 Function(Part Ⅰ)
上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。
要求:从本次实验开始,每一个功能模块都必须用一个函数来实现。
⒈ 求 m!/(n!*(m-n)!)的值。要求:求某个数的阶层必须用自定义的函数实现。
⒉ 用二分法求下面方程2x3-4x2+3x-6=0的根,要求误差小于10-5。
⒊ 随机产生50个200至500之间的整数,输出所有的整数,判断每个整数是否为素数;若是素数,则在输出整数时,用*标记。要求每行输出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
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(“%dn”,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;
}
intx,y;
main(){
int a=7,b=5;
x=a+b;
y=a-b;
num();
printf(“%d,%dn”,x,y);
}
┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅
int a;
fun(int i){
a+=2*i;
return a;
}
main(){
int a=10;
printf(“%d,%dn”,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
其中,标准差的计算公式为:xix
n2
⒋ 某班级有100个学生,现选举班长,有5个候选人,请统计每个候选人的票数,并用冒泡排序法对票数进行排序。
⒌ 任意输入10个数,求这个10个数中最大的间隔值(即是最大值与最小值的差)。要求:若需要排序,必须用选择法排序。
⒍ 约瑟夫问题。M个人围成一圈,从第一个人开始依次从1至N循环报数,每当报数为N时此人出圈,直到圈中只剩下一个人为止。请按退出次序输出出圈人原来的编号以及留在圈中的最后一个人原来的编号。
Lab 7 Array(Part Ⅱ)
上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。
⒈ 假设有一个数组,存放着10个数,现输入一个数,用顺序查找法找出该数是数组中第几个元素。如果该数不在数组中,则打印“无此数”。
⒉ 用递推法打印杨辉三角形(提示:利用二维数组)。
⒊ 找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。
⒋ 编程找出一个二维数组中值最大和值最小的元素,并告知所在行号和列号。
⒌ 输入一个3行4列的矩阵和4行5列的矩阵,计算这两个矩阵相乘的结果。
Lab 8 Pointers
上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。
要求:本次实验的所有题目要求用指针来实现。
⒈ 输入10个整数,将其中最大 的数与第一个数对换,把最小的数与最后一个数对换。要求:输入、处理和输出分别用一个函数实现。输入三个整数,要求由大到小输出。
⒉ 设计一个函数,对10个字符串由小到大顺序排序。要求:对字符串赋初值、排序和输出都用一个函数来实现。⒊ 编写程序,验证哥德巴赫猜想。哥德巴赫提出:一个不小于6的偶数必定能表示为两个素数之和。例如: 6=3+3 8=5+310=7+3……
要求将6~500之间的偶数表示为两个素数之和。即该程序将打印出一个偶数分解成两个素数和的全部组合。⒋ 输入10个整数,再输入一个待查找的整数,采用二分查找法在前10个整数中搜索,若存在输出“found”,否则输出“not exist”。要求:二分查找时搜索的工作变量要用指针来实现。
⒌ 假设有一个数组int A[nSize],假设其中隐藏着若干0,其余非0整数,写一个函数int Fun(int* A, int nSize),使把0移至后面,非0整数移至数组前面并保持原来的顺序,返回值为原数据中第一个元素为0的下标。
Lab 9 Strings, Preproceor
上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。
⒈ 有n个国家名,要求按字母先后顺序排列,并按升序输出。(要求:尽量使用标准字符串函数)
⒉ 输入字符串1和字符串2,若字符串1比字符串2大,则把字符串2连接到字符串1的后面;若字符串2比字符串1大,则把字符串1连接到字符串2的后面,并输出连接后的新字符串的长度。
⒊ 定义一个带参数的宏,计算n!,并在主函数中使用这个宏。并比较带参数的宏与函数的异同。⒋ 输入一行字母字符,根据需要设置条件编译,使之能升序输出或降序输出。
⒌ 定义一个求三个数中最大值的宏,并在在主函数中使用这个宏,求出输入的三个整数的最大值。
Lab 10 Structures and Linked Lists
上机前的预习:在实验预习报告上画好流程图,并编写好源程序及运行程序所需的典型数据。
⒈ 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。
⒉ 有10个职工,每个职工的数据包括:职工号、姓名、基本工资、奖励工资、扣项合计和实发工资,从键盘输入这10个人的数据(不含实发工资)。要求实发工资由前三项工资计算,找出工资最高者的职工号和姓名,并打印整张职工工资表。
⒊ 建立一个链表,每个结点中包括学号、姓名、性别和成绩。要求输入一个成绩x,查找该链表中是否有成绩等于x的结点。
⒋ 建立一个结点按学生成绩从小到大顺序排列的链表,每个结点中包括学号、姓名、性别和成绩。要求:输入一个新的学生结点信息,根据其成绩,插入到原链表中并将链表输出;要求:输入一个学生的学号,查找该链表中是否有学号等于x的结点,若存在,则删除该结点。
⒌ 建立一个链表,存放10个整数,要求逆置该链表。