1、. .?C程序设计?实验教学大纲一、适用X围大纲适用信息管理专业本科教学使用。二、课程名称C程序设计三、学时数与学分总学时:90 总学分: 4实验学时:28 实验学分:1四、教学目的和根本要求目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规那么,使学生全面了解 C 语言的特点,熟练掌握C 语言程序设计的根本方法和编程技巧。根本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,到达实验知识和理论知识的融会贯穿。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时
2、输入程序、调试程序、直至运行结果正确为止,上机完毕后,应整理出实验报告。五、实验工程与学时分配序号实验工程名称实验学时实验类型1C程序的运行环境和运行一个C程序的方法2验证性实验2数据类型、运算符和表达式3验证性实验3最简单的C程序设计3验证性实验4选择构造程序设计4设计性实验5循环控制4设计性实验6数组4设计性实验7函数4设计性实验8指针4设计性实验总计28注:带*的实验工程为选做实验工程六、教材、讲义及参考书?C程序设计题解与上机指导?谭浩强主编清华大学七、实验成绩评定方法实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格
3、五类。1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进展综合考核。2、实验报告:学生实验后应按时完成实验报告。八、实验教学大纲说明本大纲共安排28学时的实验,其中带*号实验工程为选做实验工程,实际课时为18学时。实验工程多为设计性实验工程,每个设计性实验工程中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。九、实验工程实验一 C程序的运行环境和运行一个C程序
4、的方法一、实验目的1.了解Visual C+6.0编译系统的根本操作方法,学会独立使用该系统。2.了解在该系统上如何编辑、编译、连接和运行一个C程序。3.通过运行简单的C程序,初步了解C源程序的特点。二、实验内容1.用编辑程序,输入教材第一章例1.1程序,并进展编译和运行。应了解所用的系统是用什么命令进展编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的?2.编写一个C程序,输出以下信息:* very good!*3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。实验二 数据类型、运算符和表达式一、实验目的1.掌握C语言数据类型,熟悉如何定义一个整型、字符型
5、、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+)和自减(-)运算符的使用。二、实验内容1.输入并运行以下程序:main( ) char c1,c2; c1=97;c2=98; printf(“%c %cn,c1,c2);printf(“%d %dn,c1,c2);在此根底上将第三行、第四行改为:c1=321;c2=353;再使之运行,分析其运行结果。将第二行改为:int c1,c2;再使之运行,分析其运行结果。2.输入并运行以下程序: main( ) int i=8,j=10,m,n;m=+i;
6、n=j+;printf(“%d,%d,%d,%dn,i,j,m,n); 分别作以下改动并运行:程序改为:main( ) int i=8,j=10;printf(“%d,%dn,i+,j+); 在的根底上,将printf语句改为:printf(“%d,%dn,+i,+j);再将printf语句改为:printf(“%d,%d,%d,%dn,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=%dn,i,j,m,n); 3. 请将以下给出的两个程序段分别输入计算机后,分析其运行结果:m
7、ain() int num; num=32767; printf(“num=%dn,+num); main() int a=-2; printf(“%d, %dn,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=%.2fn,a,b,c,c);要使a=3,b=4,c=12.3456,在键盘上应如何输入
8、?有几种方式?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=%cn,a,a,a,b,b,c);要使a=77,b=4.56,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
9、+6=165.编写程序,用getchar函数读入两个字符c1、c2,然后分别用putchar函数和printf函数输出这两个字符。上机运行程序,比拟用printf和putchar函数输出字符的特点。实验四 选择构造程序设计一、实验目的1.了解C语言表示逻辑量的方法(以0代表“假,以1代表“真);2.学会正确使用逻辑运算符和逻辑表达式;3.熟练掌握if语句和switch语句。二、实验内容先编程序,解以下问题,然后上机调试运行程序。1.有一个函数用scanf函数输入x的值(分别为xs2,那么输出正值;如s1s2那么输出负值。两个字符串s1,s2由main函数输入,strcmp函数的返回值也在mai
10、n函数输出。3.从键盘输入一个字符串与一个指定字符,调用函数,将字符串中出现的指定字符全部删除。4将一个的矩阵转置,用一函数实现。在一主函数中用scanf函数输入以下矩阵元素:将数组名作为函数参数,在执行函数的过程中实现矩阵转置,函数调用完毕后在主函数中输出转置后的矩阵。实验九 构造体和共用体一、实验目的1.掌握构造体类型变量的定义和使用;2.掌握构造体类型数组的概念和应用;3.掌握链表的概念,初步学会对链表进展操作;4.掌握共用体的概念与使用。二、实验内容编程序,然后上机调试运行。1.有3个学生,每个学生的数据包括学号、三门课的成绩,要求用input函数实现从键盘输入学生数据,用averag
11、e函数求每个人的平均分,用output函数打印学生数据及平均成绩。2.建立一个带有头结点的单链表,每个结点包括:学号、年龄,并输出链表中所有结点的数据。在链表中查找年龄最大的结点,并将链表中等于此年龄的结点删除年龄最大的结点可能不止一个。*3.将一个链表按逆序排列,即将链头当链尾,链尾当链头。4.上机输入如下程序:main( )union bt int k; char c2;a; a.k= -7; printf(“%o,%on,a.c0,a.c1);分析其运行结果。实验十 位运算一、实验目的1.掌握按位运算的概念和方法,学会使用位运算符;2.学会通过位运算实现对某些位的操作。二、实验内容编写程
12、序,上机调试并运行。1.编一个函数getbits,从一个16位的单元中取出某几位(即该几位保存原值,其余位为0)。函数调用形式为:getbits(value,n1,n2)value为该16位数的值,n1为欲取出的起始位,n2为欲取出的的完毕位。如:getbits(0101675,5,8)表示对八进制数101675,取出其从左面起的第5位到第8位。要求把这几位数用八进制数打印出来。注意,应当将这几位数右移到最右端,然后用八进制形式输出。2.利用位运算操作,实现交换两个变量的值。3.将一个十六进制整数的各位循环左移4位,然后用十六进制形式输出。实验十一 文件一、实验目的1.掌握文件以及缓冲文件系统
13、、文件指针的概念;2.学会使用文件翻开、关闭、读、写等文件操作函数。3.学会用缓冲文件系统对文件进展简单的操作。二、实验内容编写程序并上机调试运行。1.编程序求100以内的素数,分别将它输出到显示器屏幕和x.txt文件中,要求每行5个数。2.从键盘输入几本书的数据,每本书的数据包括条形码、书名和价格,将每项数据分别写入文本文件s.txt和二进制文件s.dat。*3.从上题的文本文件s.txt或二进制文件s.dat中读入每本书的数据,计算所有书的平均价格。要求用input函数读入,average函数求平均价格。统计与信息学院?C程序设计?实验报告 一 学号:班级:成绩:实验名称:C程序的运行环境
14、和运行一个C程序的方法指导教师:实验日期:实验地点:实验软件主要仪器设备:Visual C+6.0实验要求1.了解Visual C+6.0编译系统的根本操作方法,学会独立使用该系统。2.了解在该系统上如何编辑、编译、连接和运行一个C程序。3.通过运行简单的C程序,初步了解C源程序的特点。实验过程与步骤实验:1、 翻开Visual C+6.0。2、 新建文件 C+ Source File,文件名.c并更改位置后确定。3、 编辑#includestdio.hint main()printf(This is a C program.n);return 0;4、 编译,无错误无警告后执行实验:#inc
15、ludestdio.hint main()printf(*n);printf(Very good!n);printf(*n);return 0;实验:#includestdio.hint main()printf(This is a C program.n);return 0;实验总结统计与信息学院?C程序设计?实验报告 二 学号:班级:成绩:实验名称:数据类型、运算符和表达式指导教师:实验日期:实验地点:实验软件主要仪器设备:Visual C+6.0实验要求1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。2.学会使用
16、C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+)和自减(-)运算符的使用。实验过程与步骤实验1、 运行Visual C+6.0并新建工作区2、 输入#includemain()char c1,c2; c1=321;c2=353; printf(%c %cn,c1,c2); printf(%d %dn,c1,c2);3、 编译,无错误、无警告后运行,结果如下:4、 在步骤2的根底上将第三行、第四行改为:c1=321;c2=353;5、 编译,无错误、无警告后运行,结果提示:aa.obj - 0 error(s), 2 warning(s)6、 在步骤2的根底上将第二行改为:int
17、 c1,c2;7、 编译,无错误、无警告后运行,结果如下:实验1、 输入#includemain()int i=8,j=10,m,n; m=+i;n=j+; printf(%d,%d,%d,%dn,i,j,m,n);实验1、输入#includemain()int num; num=32767; printf(num=%dn,+num);2、 编译,无错误、无警告后运行,结果如下:2、编译,无错误、无警告后运行,结果如下:3、 将步骤2程序改为:#includemain()int i=8,j=10; printf(%d,%dn,i+,j+);4、 编译,无错误、无警告后运行,结果如下:5、 在步
18、骤3的根底上,将printf语句改为:printf(“%d,%dn,+i,+j);6、 编译,无错误、无警告后运行,结果如下:7、 在步骤3的根底上,将printf语句改为:printf(“%d,%d,%d,%dn,i,j, i+,j+);8、 编译,无错误、无警告后运行,结果如下:9、 将步骤2程序改为:#includemain()int i=8,j=10,m=0,n=0;m+=i+,n-=-j;printf(i=%d,j=%d,m=%d,n=%dn,i,j,m,n);10、编译、运行,结果如下:3、 输入#includemain()int a=-2; printf(%d,%dn,a,a-)
19、;4、 编译,无错误、无警告后运行,结果如下:实验总结统计与信息学院?C程序设计?实验报告 三 学号:班级:成绩:实验名称:最简单的C程序设计指导教师:实验日期:实验地点:实验软件主要仪器设备:Visual C+6.0实验要求1.掌握C语言中使用最多的一种语句赋值语句的使用。2.掌握数据的输入输出的方法,能正确使用各种格式转换符。实验过程与步骤实验1、 运行Visual C+6.0并新建工作区2、 输入#includemain()int a,b;float c;scanf(%d%d%f,&a,&b,&c);printf(a=%-4d,b=%4d,c=%f,c=%.2fn,a,b,c,c);3、
20、 编译,无错误、无警告后运行,结果如下: 有空格、tab、回车三种输入方式。4、 将步骤2中的scanf(%d%d%f,&a,&b,&c);改为scanf(“%d, %d ,%f,&a,&b,&c);5、 编译,无错误、无警告后运行,结果如下:实验1、 输入#includemain()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=%cn,a,a,a,b,b,c);2、 编译,无错误、无警告后运行,结果如下:实验(1) a+b1、 输入#includemain()int
21、 a,b,c; scanf(%d,%d,&a,&b); c=a+b; printf(%d+%d=%dn,a,b,c);2、 编译,无错误、无警告后运行,结果如下:(2) a-b1、 输入#includemain()int a,b,c; scanf(%d,%d,&a,&b); c=a-b; printf(%d-%d=%dn,a,b,c);2、 编译,无错误、无警告后运行,结果如下:(3) a*b1、 输入#includemain()int a,b,c;scanf(%d,%d,&a,&b);c=a*b;printf(%d*%d=%dn,a,b,c);2、 编译,无错误、无警告后运行,结果如下:实验
22、1getchar输出1、输入#includeint main()char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);return 0;2、编译,无错误、无警告后运行,结果如下:(4) a/b1、输入#includemain()int a,b,c; scanf(%d,%d,&a,&b); c=a/b; printf(%d/%d=%dn,a,b,c);2、编译,无错误、无警告后运行,结果如下:(5) (float)a/b1、输入#includemain()int a,b,c; scanf(%d,%d,&a,&b); c=(flo
23、at)a/b; printf(%d/%d=%dn,a,b,c);2、编译,无错误、无警告后运行,结果如下:(6) a%b1、输入#includemain()int a,b,c; scanf(%d,%d,&a,&b); c=a%b; printf(%d%d=%dn,a,b,c);2、编译,无错误、无警告后运行,结果如下:2printf输出1、输入#includeint main()char c1,c2;c1=getchar();c2=getchar();printf(%c%cn,c1,c2);return 0;2、编译,无错误、无警告后运行,结果如下:实验总结统计与信息学院?C程序设计?实验报告
24、 四 学号:班级:成绩:实验名称:选择构造程序设计指导教师:X雄实验日期:实验地点:实验软件主要仪器设备:Visual C+6.0实验要求1.了解C语言表示逻辑量的方法(以0代表“假,以1代表“真);2.学会正确使用逻辑运算符和逻辑表达式;3.熟练掌握if语句和switch语句。实验过程与步骤实验1、 运行Visual C+6.0。2、 输入#includeint main()int x,y;scanf(%d,&x);if(x=10)y=3*x-11;elsey=2*x-1;printf(x=%d,y=%dn,x,y);return 0;3、 编译,无错误、无警告后运行,结果如下:X1时,1=
25、x=10时,2switch语句1、输入#includemain()float x;int y;char ch;printf(Your score:);scanf(%f,&x);y=x/10;switch(y)case 10:case 9:ch=A;break;case 8:ch=B;break;case 7:ch=C;break;case 6:ch=D;break;default:ch=E;printf(%cn,ch);return 0;2、编译,无错误、无警告后运行,结果如下:实验1if语句1、输入#includemain()float x;char ch;scanf(%f,&x);if(x
26、=90) ch=A;else if(x=80) ch=B;else if(x=70) ch=C;else if(x=60) ch=D;else ch=E;printf(%cn,ch);2、编译,无错误、无警告后运行,结果如下:实验:水仙花数1、输入#includeint main()int m,a,b,c;scanf(%d,&m);if(m/100=0)printf(data errorn);return 0;a=m%10;b=(m/10)%10;c=m/100;if(m=a*a*a+b*b*b+c*c*c)printf(Yn,m);return 0;else printf(Nn,m);ret
27、urn 0;2、编译,无错误、无警告后运行,结果如下:实验总结统计与信息学院?C程序设计?实验报告 五 学号:班级:成绩:实验名称:循环控制指导教师:实验日期:实验地点:实验软件主要仪器设备:Visual C+6.0实验要求1.熟悉用while语句,do-while语句和for语句实现循环的方法。2.掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。实验过程与步骤实验:输入两个正整数,求其中最大公约数和最小公倍数。1求最大公约数1、输入#includemain()int m,n,i,t;scanf(%d%d,&m,&n);if(nm)t=n;n=m;m=t;i=m;while(
28、1)if(m%i=0&n%i=0) break;i-;printf(它们的最大公约数是:%dn,i);return 0;2、编译,无错误、无警告后执行,结果如下:2求最小公倍数1、输入#includemain()int m,n,i,t;scanf(%d%d,&m,&n);if(nm)t=n;n=m;m=t;实验:输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。1、输入#includemain()char c; int letter,space,number,other; letter=space=number=other=0; do c=getchar(); if(c=a&
29、c=A&c=0&c=9) number+; else if(c= ) space+; else other+; while(c!=n); printf(letter=%d,space=%d,number=%d,other=%dn,letter,space,number,other); return 0;2、编译,无错误、无警告后执行,结果如下:实验:打印出以以下图案:7行7列菱形1、输入#include#define n 3int main()int i,j;for(i=0;i=n;i+) for(j=1;j=n-i;j+)printf( );i=m;while(1)if(i%m=0&i%n=
30、0) break;i+;printf(它们的最小公倍数是:%dn,i);return 0;2、编译,无错误、无警告后执行,结果如下:实验:编写程序输出乘法表1、 输入#includemain()int i,j;for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%-3d,j,i,i*j); printf(n); system(pause);2、 编译,无错误、无警告后运行,结果如下: for(j=1;j=0;i-) for(j=1;j=n-i;j+) printf( ); for(j=1;j=2*i+1;j+) printf(*); printf(n);
31、2、编译,无错误、无警告后运行,结果如下:实验:编程求1!+2!+3!+20!。1、输入#includeint main()int n,m=1,sum=0;for(n=1;n=20;n+)m=n*m;sum=sum+m;printf(1+2!+3!.+20!=%dn,sum);2、编译,无错误、无警告后运行,结果如下:实验总结统计与信息学院?C程序设计?实验报告 六 学号:班级:成绩:实验名称:数组指导教师:实验日期:实验地点:实验软件主要仪器设备:Visual C+6.0实验要求1.掌握一维数组和二维数组的定义、赋值和输入输出的方法;2.掌握字符数组和字符串函数的使用。3.掌握与数组有关的算
32、法(特别是排序算法)。实验过程与步骤实验:编写程序,用scanf函数输入10个整数的数列,先将整数按照从大到小的顺序进展排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。1、输入#include main () void Rank(int N,int n); int i,j,k; int n11; for(i=0;in9) n10=k; else for(i=0;ni=i;j-) nj+1=nj; ni=k; for(i=0;i=10;i+) printf(%-4d,ni); printf(n); void Rank(int N,int n) int i,k,t; for(k=1;k=k;i-) if(ni-1ni) 实验:有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值,如果该数不在数组中,那么输出“无此数