一. 实验教学的目的和要求:
通过实验,让学生全面掌握高级语言程序设计的思想与方法,掌握C语言的特点,C语言的语法规则,C语言的数据类型、表达式及控制流程;通过编程,提高程序设计能力,使学生达到能够熟练使用C语言解决常见实际问题的能力,为全面精通高级语言程序打下基础。
实验要求:
(1)复习和掌握与本实验有关的教学内容。
(2)上机实验前应事先做好准备工作,课下编写程序,以提高上机实验的效率。
(3)对运行中可能出现的问题应事先作出估计,对程序中自己有疑问的地方作出标记,并上机进行验证。
(4)准备好调试和运行时所需的数据。
二、实验项目的内容和要求
实验一:C语言的运行环境
内容:(1)熟悉Turbo C集成环境。
(2)输入并运行一个简单的C程序。
(3)运行一个自己编写的C程序。
要求:熟悉C语言的编程环境,了解在该系统上如何编辑、编译、连接和运行一个C 程序,通过运行简单的C程序,了解C程序的特点。
实验二:数据类型、运算符和表达式
内容:要求事先编好解决下面问题的程序,然后上机输入程序并调试运行,验证程序的运行结果。
(1)输入并运行下面的程序。
main()
{char c1,c2;
c1=‘a’; c2=‘b’;
printf(“%c %c\n”,c1,c2);
}
(2)输入并运行下面的程序。
main()
{char c1=‘a’,c2=‘b’,c3=‘c’,c4=‘\101’,c5=‘\116’;
printf(“a%c b%c\tc%c\tabc\n”,c1,c2,c3);
printf(“\t\b%c %c\n”,c4,c5);
}
(3)输入并运行下面的程序。
main()
{ int a,b;
unsigned int c,d;
long e,f;
a=100; b=-100; e=50000; f=32767;
c=a; d=b;
printf(“%d,%d\n”,a,b);
printf(“%u,%u\n”,a,b);
printf(“%u,%u\n”,c,d);
c=a=e; d=b=f;
printf(“%d,%d\n”,a,b);
printf(“%u,%u\n”,c,d);
}
(4) 输入并运行下面的程序。
main()
{int i,j,m,n;
i=8; j=10;
m=++i; n=j++;
printf(“%d,%d,%d,%d\n”,i,j,m,n);
}
要求:
(1)掌握C语言数据类型,熟悉如何定义一个整型、字符性和实型的变量,以及对它们赋值的方法。
(2)掌握不同的类型数据之间赋值的规律。
(3)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。
(4)进一步熟悉C程序的编辑、编译、连接和运行的过程。
实验三:最简单的C程序设计
内容:
(1)自己编写一个小程序,用scanf函数和printf函数实现数据的输入和输出。
(2)编写下面的程序并上机运行。
设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据,输出计算结果。
(取小数点后两位数字)。
(3)编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf 函数输出这两个字符。
要求:
(1)掌握C语言中使用最多的一种语句--赋值语句的使用方法。
(2)掌握各种数据类型的输入输出的方法,能正确使用各种格式转换符。
实验四:选择结构程序设计
内容:选择结构的程序设计练习,根据下列给定的问题编写程序并上机调试运行。
(1)给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。
90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
(2)给出一个不多于5位的正整数,要求①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数为321,应输出123。
(3)输入4个整数,要求按由小到大的顺序输出。
要求:
(1)了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。
(2)学会正确使用逻辑运算符和逻辑表达式。
(3)熟练掌握if语句和switch语句。
(4)结合程序掌握一些简单的算法。
实验五:循环结构程序设计
内容:循环结构的程序设计练习,根据下列给定的问题编写程序并上机调试运行。
(1)输入两个正整数m和n,求它们的最大公约数和最小公倍数。
(2)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。
(3)用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。
(4)猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩一个桃子了。
求第一天共摘了多少桃子。
要求:
(1)熟练掌握用while语句,do~while语句和for语句实现循环的方法;
(2)掌握在程序设计中用循环方法实现一些常用算法(如穷举、迭代、递推等);
(3)进一步学习调试程序。
实验六:数组
内容:编程,然后上机输入程序并调试运行程序。
(1)输入10个数,输出最大值、最小值以及平均值(用数组实现)。
(2) 输入4名学生的姓名及三门课成绩,打印学生成绩表。
(姓名、三门课成绩、平均分)
(3)有15个数存放在一维数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。
如果该数不在数组中,则输出“无此数”。
(4)将两个字符串连接起来,不要用strcat函数。
要求:
(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法;
(2)掌握字符数组和字符串函数的使用;
(3)掌握与数组有关的算法。
实验七:函数
内容:编程并上机调试运行。
(1)编写程序,通过函数调用方式计算y=|x|。
(2)编写程序,通过函数调用方式删除字符串中的非英文字符,在主函数中输入字符串以及输出删除后的字符串结果。
(3)n 个人按年龄从小到大站成一排,编号依次为 1 到 n ,年龄都相差 2 岁,且第一个人的年龄是 10 岁,问第 n 个的年龄是多大?要求①通过函数递归调用方式实现② n 的值从键盘输入。
(4)求两个整数的最大公约数和最小公倍数。
用一个函数求最大公约数,用另一个函数根据求出的最大公约数求最小公倍数。
要求:①不用全局变量,分别用两个函数求最大公约数和最小公倍数。
两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大公约数和最小公倍数。
②用全局变量的方法,分别用两个函数求最大公约数与最小公倍数,但其值不由函数带回。
将最大公约数和最小公倍数都设为全局变量,在主函数中输出它们的值。
要求:
(1)掌握定义函数的方法;
(2)掌握函数实参与形参的对应关系以及“值传递”的方式;
(3)掌握函数的嵌套调用和递归调用的方法;
(4)掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。