《C程序设计》实验教学大纲一、适用范围大纲适用信息管理专业本科教学使用。
二、课程名称C程序设计三、学时数与学分总学时:90 总学分: 4实验学时:28 实验学分:1四、教学目的和基本要求目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握C 语言程序设计的基本方法和编程技巧。
基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。
上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。
注:带*的实验项目为选做实验项目六、教材、讲义及参考书《C程序设计题解与上机指导》谭浩强主编清华大学出版社七、实验成绩评定办法实验成绩=平时实验表现+实验报告。
实验成绩占总成绩的20%。
实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。
1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。
在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。
2、实验报告:学生实验后应按时完成实验报告。
八、实验教学大纲说明本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。
实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。
九、实验项目实验一 C程序的运行环境和运行一个C程序的方法一、实验目的1.了解Visual C++编译系统的基本操作方法,学会独立使用该系统。
2.了解在该系统上如何编辑、编译、连接和运行一个C程序。
3.通过运行简单的C程序,初步了解C源程序的特点。
二、实验内容1.用编辑程序,输入教材第一章例程序,并进行编译和运行。
应了解所用的系统是用什么命令进行编译和连接运行的。
编译和连接后所得到的目标程序的后缀是什么形式的2.编写一个C程序,输出以下信息:****************************very good!****************************3.输入并运行教材第一章中例,了解如何在运行时向程序变量输入数据。
实验二数据类型、运算符和表达式一、实验目的1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。
2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。
二、实验内容1.输入并运行以下程序:main( ){ char c1,c2;c1=97;c2=98;printf(“%c %c\n”,c1,c2);printf(“%d %d\n”,c1,c2);}在此基础上①将第三行、第四行改为:c1=321;c2=353;再使之运行,分析其运行结果。
②将第二行改为:int c1,c2;再使之运行,分析其运行结果。
2.输入并运行以下程序:main( ){int i=8,j=10,m,n;m=++i;n=j++;printf(“%d,%d,%d,%d\n”,i,j,m,n);}分别作以下改动并运行:①程序改为:main( ){int i=8,j=10;printf(“%d,%d\n”,i++,j++);}②在②的基础上,将printf语句改为:printf(“%d,%d\n”,++i,++j);③再将printf语句改为:printf(“%d,%d,%d,%d\n”,i,j, i++,j++);④程序改为:main( ){int i=8,j=10,m=0,n=0;;m+=i++;n-=--j;printf(“i=%d,j=%d,m=%d,n=%d\n”,i,j,m,n);}3. 请将下列给出的两个程序段分别输入计算机后,分析其运行结果:①main(){ int num;num=32767;printf(“num=%d\n”,++num);}② main(){ int a=-2;printf(“%d, %d\n”,a, a--);}实验三最简单的C程序设计一、实验目的1.掌握C语言中使用最多的一种语句——赋值语句的使用。
2.掌握数据的输入输出的方法,能正确使用各种格式转换符。
二、实验内容1.上机输入以下程序:main( ){int a,b;float c;scanf(“%d%d%f”,&a,&b,&c);printf(“a=%-4d,b=%4d,c=%f,c=%.2f\n”,a,b,c,c);}要使a=3,b=4,c=,在键盘上应如何输入有几种方式2.若将输入函数改为scanf(“%d, %d ,%f”,&a,&b,&c);应该如何输入数据3.上机输入以下程序:main( ){int a; float b; char c;scanf(“%4d%5f%3c”,&a,&b,&c);printf(“a=%d,a=%o,a=%x,b=%8.3f,b=%4.0f,c=%c\n”,a,a,a,b,b,c);}要使a=77,b=,c= ‘A’,在键盘上应如何输入4.输入两面整型变量a、b的值,输出下列算式以及运算结果。
a+b、a-b、a*b、a/b、(float)a/b、a%b每个算式占一行。
如a等于10,b等于6,a+b应输入为:10+6=165.编写程序,用getchar函数读入两个字符c1、c2,然后分别用putchar函数和printf 函数输出这两个字符。
上机运行程序,比较用printf和putchar函数输出字符的特点。
实验四选择结构程序设计一、实验目的1.了解C语言表示逻辑量的方法(以0代表“假”,以1代表“真”);2.学会正确使用逻辑运算符和逻辑表达式;3.熟练掌握if语句和switch语句。
二、实验内容先编程序,解以下问题,然后上机调试运行程序。
1.有一个函数用scanf函数输入x的值(分别为x<1、1~10、≥10三种情况),求y值。
2.给出一个百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。
90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
要求分别用if语句和switch语句实现3.输入一个三位数,若此数是水仙花数输出“Y”,否则输出“N”,若输入值不是三位数输出“data error”。
提示:水仙花数是一个三位数,组成这个三位数的三个数字的立方和与这个三位数相等。
如:153=13+53+33。
判断是否是水仙花数需把构成三位数的三个数字分离出来并存入变量。
实验五循环控制一、实验目的1.熟悉用while语句,do-while语句和for语句实现循环的方法。
2.掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。
二、实验内容编程序并上机调试运行。
1.输入两个正整数,求其中最大公约数和最小公倍数。
2.输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。
3.打印出以下图案:*************************4.编程求1!+2!+3!+……+20!。
5.编写程序输出乘法表实验六数组一、实验目的1.掌握一维数组和二维数组的定义、赋值和输入输出的方法;2.掌握字符数组和字符串函数的使用。
3.掌握与数组有关的算法(特别是排序算法)。
二、实验内容编程序并上机调试运行。
1. 编写程序,用scanf函数输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。
2.有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值,如果该数不在数组中,则输出“无此数”,并且可以实现连续查找。
15个数用赋初值的方法在程序中给出,要找的数用scanf函数输入。
3.将以下二维数组中数按列的顺序存放到一个一维数组中。
二维数组的内容是11 22 33 4411 22 33 4411 22 33 44则一维数组中的内容是11 11 11 22 22 22 33 33 33 44 44 444.将两个字符串连接起来,不要用strcat函数。
5.从键盘输入5个字符串,找出最长的字符串和最大的字符串。
实验七函数一、实验目的1.掌握定义函数的方法;2.掌握函数实参与形参的对应关系,以及“值传递”的方式;3.掌握函数的嵌套调用和递归调用的方法;4.掌握全局变量和局部变量,动态变量和静态变量的概念和使用方法。
二、实验内容编程序并上机调试运行之。
1.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。
2.两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。
两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,返回到主函数输出最大公约数和最小公倍数。
3.已知二阶Fibonacci数列:0 若n=0Fib(n)= 1 若n=1Fib(n-1)+Fib(n-2) 其他情况定义递归函数求Fib(n)。
!n4. 编写函数,求 101实验八指针一、实验目的1.掌握指针的概念,会定义和使用指针变量;2.学会使用数组的指针和指向数组的指针变量;3.学会使用字符串的指针和指向字符串的指针变量;4.学会使用指向函数的指针变量;5.了解指向指针的指针的概念及其使用方法。
二、实验内容编程序并上机调试运行程序(都要求用指针处理)。
1.定义函数void fun(int x[ ],int *max,int *min),找出数组x中的最大值和最小值,最大值和最小值通过形参指针max和min传回。
2.编写一个函数comp(s1,s2)实现两个字符串的比较。
如果s1=s2,则函数返回值为0;如果s1≠s2,返回它们二者第一个不同字符的ASCII 码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如s1<s2则输出负值。
两个字符串s1,s2由main函数输入,strcmp函数的返回值也在main函数输出。
3.从键盘输入一个字符串与一个指定字符,调用函数,将字符串中出现的指定字符全部删除。