《C语言程序设计实验》大纲.doc
C语言程序设计课程实验大纲(本科)一、大纲说明C语言程序设计是计算机科学与技术专业的一门专业基础课。设置本课程的目的是使学生掌握算法设计的思想,培养学生分析问题和解决问题的能力,养成良好的结构化的程序设计风格,并初步掌握软件开发的基本技巧,同时也为后继课程的学习打下坚实基础。C语言程序设计实验性质上属于课内实验,是教学环节不可分割的一部分,因此实验必须以课堂教学相适应。本实验大纲以教学的具体展开为参考,每个教学内容都设计了相应的实验,既是对课堂学习的补充,也是教材内容的延伸。C语言程序设计实验的教学目的在于帮助学生熟悉和了解C语言,并能在TC环境下编写和调试具有简单功能的原程序代码,掌握程序设计的基本思路,培养良好的编程风格。课程编号适用专业计算机开设方式课内实验总学时学分考核方式课内考核执笔人 (签名)年月日教研室主任审核意见(签名)年月日系务委员会审核意见(签名)年月日综合性/设计性/验证性二、实验项目及学时分配序号实验名称学时实验类别每组人数一C语言程序基本结构和TC编程环境2验证性二数据类型、运算符和表达式2设计性三顺序结构设计2设计性四关系/逻辑运算和if语句2设计性五Switch语句及条件语句的嵌套使用2设计性六循环语句2设计性七循环嵌套及中断2设计性八数组的定义及使用2设计性九字符数组及使用2设计性十函数定义及调用2设计性十一变量的存储类别2验证性十二预处理命令2可选十三指针(一)2设计性十四指针(二)2设计性十五结构及共用体2设计性十六文件操作2验证性备注:C语言程序设计课内实验实施时,由于每位同学都可配备一台计算机,可不考虑分组。但为培养同学们团结协作的团队精神,仍将同学分成8-10组,每组3-5人,为期末综合课题做准备。三、实验内容及考核要求实验一 实验名称C语言程序基本结构和TC编程环境实验目的了解和熟悉TC的编程环境;掌握在TC下进行C语言程序设计的基本步骤实验内容1、参照第一章的例1.1,编写一个C程序,输出以下信息:*VeryGood!*2、编写一个C程序,输入a、b、c 3个变量值,输出其中的最大值。(参考第一章的例1.3)考核要求能完成实验内容中给出的习题,调试通过;基本掌握C语言程序设计的基本步骤和方法。实验二 实验名称数据类型、运算符和表达式实验目的熟悉并掌握C语言的常用基本数据类型,了解给类数据在内存中的表现形式及数值型数据的混合运算规则;理解各类运算符及其优先级、结合性;掌握表达式及其在C语言中的重要性。实验内容1、写出以下程序运行的结果,先分析,再上机验证。main()char c1=a, c2=b, c3=c, c4=101, c5=116;printf(“a%c b%ctc%ctabcn”,c1,c2,c3);printf(“tb%c%c”, c4,c5);main()int a, b, c, d;a=b=c=d=5;printf(“a=%dn”, -a);printf(“a=%dn”, b-c);printf(“a=%dn”, d+=+b);a=b=c=5;printf(“a=%dn”, +a/b+*-c);2、要将“China”译成密码,密码规律是:用原来字母后的第4个字母代替原来的字母。请编写一个程序,用赋值方法使c1、c2、c3、c4、c5五个变量分别为C、h、i、n、a,经运算,输出密码变化后的5个变量值Glmre。考核要求能完成实验内容中给出的习题并调试通过,在验证相关知识点的基础上理解C语言编程的基本方法。实验三 实验名称顺序结构设计实验目的理解语句与表达式的概念与关系;掌握标准输入/输出函数;理解C程序设计的一般过程。实验内容1、用下面的scanf()函数输入数据,令a=3、b=7、x=8.5、y=71.28、c1=A、c2=a,问在键盘上应如何输入?main()int a, b;float x, y;char c1, c2;scanf(“a=%d b=%d”,&a, &b);scanf(“ %f %e”, &x, &y);scanf(“ %c %c”,&c1, &c2);2、从键盘输入一个三位数整数,分别输出它的个位、十位、百位数。3、交换从键盘读入的两个整数,并输出。考核要求能完成实验内容中给出的习题并调试通过;掌握C语言的输入/出函数。实验四 实验名称关系/逻辑运算和if语句实验目的熟悉并掌握常用的关系运算符和逻辑运算符,能利用它们进行条件定义;掌握if语句的三种形式,能使用if语句编程解决实际问题。实验内容1、如下函数,写程序,输入x,输入y值。x( x < 1)y =2x-1( 1x < 10)3x-11(x 10)2、编写一个程序,根据输血者的性别和体重,判断他们的输血量。对于男性,体重超过120斤的输200毫升,低于120斤的输血量为180毫升;女性体重超过100斤的输150毫升,否则输120毫升。3、编程实现一个简单的计算器,通过键盘输入表达式:data1 op data2,计算表达式的结果并输出。Op代表操作符+、-、*、/、%。考核要求能完成实验内容中给出的习题并调试通过;掌握C语言的条件表达式的书写,并能利用if语句完成条件选择。实验五 实验名称switch语句及条件语句的嵌套使用实验目的熟悉并理解选择分支结构及其应用;掌握switch语句;掌握多种选择结构的混合使用及嵌套使用,能用之编程解决实际问题。实验内容1、给出一个小于5位的正整数,判断它是几位数?打印它的每一位数;逆序打印各位上的数字。2、输入4个整数,按由小到大的顺序输出。3、给出一个百分制成绩,要求输出成绩等级:90分以上为A,8089分为B,7079为C,6069分为D,60分以下为E。考核要求能完成实验内容中给出的习题并调试通过;掌握条件表达的各种方法,并能利用if语句完成条件选择。实验六 实验名称循环语句实验目的熟悉循环控制结构;掌握while()、dowhile()语句,能用之编程解决实际问题。实验内容1、从键盘输入一段字符串,以#表示结束,单词以空格分隔。请编程统计输入串中的单词数。2、计算并输出方程x2+y2=2007的正整数解。3、循环地从键盘输入一个整数x,并判断x的奇偶性和正负性。考核要求能完成实验内容中给出的习题并调试通过;掌握循环语句的用法。实验七 实验名称循环嵌套及中断实验目的熟悉并理解for()及break、contnue语句;掌握循环嵌套等深层次用法,能用之编程解决实际问题。实验内容1、分析程序,并给出输入为-8*4+10/5=Enter时程序的输出。请先进行逻辑分析,然后上机验证。main()int m=0, sum=0;char c,oldc=+;doc=getchar();if(c<=9 && c>=0) m=10*m+c-0;elsesum=sum-m;m=0;oldc=c;while(c!=);printf(“%d#”,sum);2、打印以下图案。* * * * * * * * * *3、打印100-999间的水仙花数。考核要求能完成实验内容中给出的习题并调试通过;进一步掌握循环语句的用法。实验八 实验名称数组的定义及使用实验目的理解数组的概念及数组元素的引用;熟悉数组的初始化,掌握借助数组实现的两个排序算法:冒泡/选择排序。实验内容1、输入十个数据,采用冒泡/选择排序算法对其进行排序,并输入有序数列。2、采用二分查找算法在1中有序数列中查找随机输入的某个数据,如果找到,请给出该数在数列中的序号。3、程序阅读:说明程序实现的功能。#define M 10main()int i, j, n, aM=1,2,2,3,3,3,4,6,6,7;n=i=M-1;while(i>=0)if(ai=ai-1)for(j=i;j<=n;j+) aj-1=aj;n-;/*end if*/i-;/*end while*/for(i=0;i<=n;i+) printf(“%d ”,ai);考核要求能完成实验内容中给出的习题并调试通过;掌握数组这一常用数据结构的基本用法,理解基于数组的几个经典算法。实验九 实验名称字符数组及使用实验目的理解并掌握字符数组及字符串处理函数;能利用数组完成具体编程任务。实验内容1、简单的文本加密器。输入文本行直到遇到一个空行为止,对输入文本做加密处理,加密规则为:第一个字符编程第26个字符,第i个字母变成第(26-i+1)个字母,非字母字符不变。输出加密文本,再加密一次,看输入结果是什么?2、编程完成以下菜单功能:根据输入的学生学号给出该生各次考试的成绩和平均成绩;根据输入的考试序号打印该次考试中每个学生的成绩及平均成绩;根据学号及考试序号查找某学生某次考试的成绩录入考试成绩,表格如下:12345618578829645832745866856981396616189558346678991005178菜单显示:本程序有如下4项功能:1、 根据学号查询学生成绩2、 根据考试序号统计成绩3、 根据学号及考试号查询成绩4、 成绩录入请输入功能号(1-4):考核要求能完成实验内容中给出的习题并调试通过;掌握字符数串的常用处理函数。实验十/十一 实验名称函数及变量作用范围实验目的熟悉函数及其使用;理解并能正确使用全局变量、局部变量、变量存储类型等概念。实验内容1、写两个函数,分别求解两个正整数的最大公约数、最小公倍数,编写一个主函数调用这两个函数,并输入结果。两个正整数由键盘随机输入。2、有递归法将一个整数转换成对应字符串,例如483->”483”。3、写一个函数,用冒泡法对输入的10个数据按由大到小的顺序排列。4、编写函数invert( char *str,int n),将str中存放的长度为n的字符串逆序反转。例如”ABCE”->”ECBA”。5、给出某人的出生年月日,计算目前为止他已经活了多少天。6、程序分析。/声明三个函数void head1();void head2();void head3();int count;void head1()register int index;head1(); head2(); head3();for(index=8;index>0;index-)int stuff;for(stuff=0;stuff<=6;stuff+) printf(“%d ”, stuff);printf(“index is now %dn”,index);int counter;void head1()int index;index=23;printf(“the head1 value is %dn”,index);void head2()int count=53;printf(“the head2 value is %dn”,count);counter=77;void head3()printf(“the head3 value is %dn”,counter);考核要求能完成实验内容中给出的习题并调试通过;掌握函数及函数的具体运用。实验十二/十三 实验名称指针及其运用实验目的熟悉指针及指针变量的概念,掌握指针与变量、数组、函数的关系,并能利用指针编程解决实际问题。实验内容1、输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:输入10个数;进行处理;输出10个数。2、写一个函数,将3*3的整型矩阵转置。3、写一个函数,求一个字符串的长度。在main()函数中输入字符串,并输出其长度。以上程序题要求用指针实现。4、程序阅读及分析。1)有若干学生的成绩(每人有4门课程),要求用户输入学生序号后,能输出该生的全部成绩。用指针函数实现。main()float score4=60,70,80,90,56,89,67,88,34,78,90,66;float *search(float(*pointer)4, int n );float *p;int i,m;printf(“Enter the number of student:”); scanf(“%d”,&m);printf(“The scores of No. %d are:n”, m);p=search(score,m);for(i=0; i<4; i+) printf(“%5.2ft”,*(p+i);float *search(float(*pointer)4, int n )float *pt;pt=*(pointer+n);return(pt);2)指向指针的指针。main()char *name=“Follow me”,”BASIC”,”Great Wall”,”FORTRAN”,”Computer design”;char *p;int i;for(i=0; i<5; i+)p=name+i;printf(“%sn”,*p);3)带参数的main()函数。main(int argc, char *argv)while(argc>1)+argv;printf(“%sn”,*argv);-argc;考核要求能完成实验内容中给出的习题并调试通过;掌握指针概念,能运用指针解决程序问题。实验十四实验名称结构及共用体实验目的熟悉结构体的概念,掌握链表的简单操作。实验内容参照课本的相关内容,编写一个包含链表的动态生成、链表的删除及插入、链表的输入的程序。考核要求能完成实验内容中给出的习题并调试通过;掌握结构体的基本概念,能运用结构体进行链表操作。实验十五实验名称文件操作实验目的熟悉文件的概念,掌握文件的常用操作,并能编程实现对具体文件的操作。实验内容对一个文本文件进行编码并显示、存储。编码规则参照实验九。考核要求能完成实验内容中给出的习题并调试通过;掌握文件的基本概念,能对文件进行简单操作。