您好,欢迎来到年旅网。
搜索
您的当前位置:首页C语言课程实验讲义48学时教案资料

C语言课程实验讲义48学时教案资料

来源:年旅网
C语言课程实验讲义48学时教案资料

实验1 C程序的运行环境和运行一个C程序的方法 1.实验目的

(1)了解所用的计算机系统的基本操作方法,学会使用该系统。

(2)了解在该系统上如何编辑、编译、连接和运行一个C程序。 (3)通过运行简单的C程序,初步了解C程序的特点。 2.实验学时与要求:2学时,不提交实验报告。实验类型:验证。 3. 实验内容

(1)检查所用的计算机系统是否安装了C编译系统并确定它所在的子目录。

(2)进入所用的集成环境

(3)熟悉集成环境的界面和有关菜单的使用方法 (4)输入并运行一个简单、正确的程序 ①输入下面的程序 #include void main() {

printf(\"This is a c program.\\n\"); }

②仔细观察屏幕上的已输入的程序,检查有无错误。

③对源程序进行编译,观察屏幕上显示的编译信息。如果出现出错信息,应找出原因并改正之,再进行编译,如果无错,则进行连接。

④如果编译连接无错误,运行程序,观察分析运行结果。 (5)输入并编辑一个有错误的C程序。

①输入以下程序(教材第一章中的例1.2,故意漏输入或输入错几个字符)。

#include void main ( )

{

int a,b,sum; a=123; b=456; sum=a+b;

printf (\"sum is %d\\n\}

②进行编译,仔细分析编译信息窗口,可能显示有多个错误,逐个修改,直到不出现错误。最后与教材上的程序对照。

③使程序运行,分析运行结果。

(6)输入并运行一个需要在运行时输入数据的程序。 ①输入下面的程序 #include void main()

{ int max(int x, int y); int a,b,c;

printf(“input a & b:”); scanf(” %d,%d”,&a,&b); c=max(a,b);

printf(“max=%d”,c); }

int max(int x,int y) { int z; if(x>y) z=x; else z=y; return(z); }

②编译并运行,在运行时从键盘输入整数2和5,然后按Enter键观察运行结果。

③将程序中的第4行改为 int a;b;c;

再进行编译,观察其结果。

④将max函数中的第3,4两行合并写为一行,即 if(x>y) z=x;else z=y; 进行编译,观察其结果。 (7)运行一个自己编写的程序。

题目是教材第1章的习题1.5,即:输人a, b,c三个值,输出其中最大者。

①输人自己编写的源程序。

②检查程序有无错误(包括语法错误和逻辑错误),有则改之。 ③编译和连接,仔细分析编译信息,如有错误应找出原因并改正。 ④运行程序,输入数据,分析结果。

⑤自己修改程序(例如,故意改成错的),分析其编译和运行情况。

⑥将调试好的程序保存在自己的用户目录中,文件名自定。 ⑦将编辑窗口清空,再将该文件读入,检查编辑窗口中的内容是否是刚才保存的程序。

⑧关闭所用的集成环境,用windows中的“我的电脑”找到刚才使用的用户子目录,浏览其中的文件,观察有无刚才保存的后缀为.c、.obj和、.exe的文件。

实验2 数据类型、运算符和表达式 1.实验目的

(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。

(2)掌握不同的类型数据之间赋值的规律。

(3)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。

(4)进一步熟悉C程序的编辑、编译、连接和运行的过程。 2. 实验学时与要求:2学时,不提交实验报告。实验类型:验证。 3. 实验内容

(1) 输入并运行下面的程序

#include void main() {char c1,c2; c1=’a’; c2 =’b’;

printf (\"%c%c\\n\}

①运行此程序,并分析结果。

②在上面的printf语句的下面再增加一个语句: printf(“%d%d\\n”,cl,c2); 再运行,并分析结果。 ③将第3行改为: int c1,c2;

再使之运行,并观察结果。 ④再将第4,5行改为: c1=a;/*不用单撇号*/ c2=b;

再使之运行,分析其运行结果 ⑤再将第4,5行改为: c1=\"a\";/*用双撇号*/ c2=\"b\";

再使之运行,分析其运行结果。 ⑥再将第4,5行改为:

c1 = 300;/*用大于255的整数*/ c2 = 400;

再使之运行,分析其运行结果。

(2) 输入并运行教材第2章习题2.5给出的程序 #include void main()

{ char c1='a',c2='b',c3='c',c4='\\101',c5='\\116';

printf (\"a%c b%c\c%c\abc\\n\; printf(\"\\\b%c %c\; }

在上机前先用人工分析程序,写出应得结果,上机后将二者对照。 (3) 输入习题2.9 #include void main() { int i,j,m,n; i=8; j=10; m=++i; n=j++;

printf(\"%d,%d,%d,%d\",i,j,m,n); }

①运行程序,注意i,j,m,n各变量的值,分别做以下改动并运行。

②将第6,7行改为: m=i++; n=++j; 再运行。 ③将程序改为: #include void main() { int i, j; i=8; j=10;

printf(\"%d,%d\\n\",i++,j++); }

④在③的基础上,将printf语句改为: printf(\"%d,%d\\n\",++i,++j);

编译运行分析结果。 ⑤再将printf语句改为:

printf(\"%d,%d,%d,%d\",i,j,i++,j++); 编译运行分析结果。 ⑥将程序改为: #include void main()

{int i,j,m=0,n=0; i=8; j=10;

m+=i++;n–=––j;

printf(\"i=%d,j=%d,m=%d,n=%d\",i,j,m,n); }

编译运行分析结果。

(5) 按习题2.6的要求编程序并上机运行 该题的要求是:

要将\"China\"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母。例如,字母\"A\"后面第4个字母是\"E\",用\"E\"代替\"A\"。因此,\"China\"应译为\"Glmre\" 。请编一程序,用赋初值的方法使c1,c2,c3,c4,c5五个变量的值分别为'C'、'h'、'i'、'n'、'a',经过运算,使c1,c2,c3,c4,c5分别变为'G'、'l'、'm'、'r'、'e',并输出。

输人事先已编好的程序,并运行该程序。分析是否符合要求。 实验3 最简单的C程序设计--顺序程序设计 1.实验目的

(1)掌握C语言中使用最多的一种语句——赋值语句的使用方法。 (2)掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。

2. 实验学时与要求:2学时,编程序上机调试运行,提交实验报告。实验类型:验证。

4. 实验内容

(1)通过下面的程序掌握各种格式转换符的正确使用方法 ①输入程序 #include void main() {int a,b; float d,e; char c1,c2; double f,g; long m,n; unsigned int p,q; a=61;b=62; c1='a';c2 ='b'; d=3.56;e= -6.87;

f=3157.0121;g=0.1234567; m=50000;n=–60000; p=32768;q=40000;

printf(”a=%d,b=%d\\nc1=%c,c2=%c\\nd=%6.2f,e=%6.2f\\n”,a,b,c1,c2,d,e);

printf(”f=%15.6f,g=%15.12f\\nm=%ld,c2=%ld\\np=%u,q=%u\\n”,f,g,m,n,p,q);

}

②运行此程序并分析结果。

③在此基础上,修改程序的第10-14行: c1=a;c2=b;

f=3157.0121;g=0.1234567; d=f; e=g;

p=a=m=50000;q=b=n= -60000; 运行程序,分析结果。

④改用scanf函数输人数据而不用赋值语句,scanf函数如下: scanf (\"%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u\

&a,&b,&c1,&c2,&d, &e,&f, &g,&m, &n, &p,&q); 输入的数据如下:

61,62,a,b,3.56,-6.87,3157.0121,0.1234567,50000,-60000,32768,40000

分析运行结果。

(说明:lf和ld格式符分别用于输人double型和long型数据)分析运行结果。

⑤在④的基础上将printf语句改为:

printf(\"a=%d,b=%d\\nc1=%c,c2=%c\\nd=%15.6f,e=%15.12f\\n\;

printf(\"f=%f,g=%f\\nm=%d,n=%d\\np=%d,q=%d\\n\"f,g,m,n,p,q);

运行程序。

⑥将p,q改用%o格式符输出。

⑦将scanf函数中的%lf和%ld改为%f和%d,运行程序并观察分析结果。

(2)按习题3.6要求编写程序

题目为:设圆半径r=1. 5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

用scanf输入数据,输出计算结果。输出时要有文字说明,取小数点后两位数字。

(3)编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf

函数输出这两个字符。

上机运行程序,比较用printf 和putchar 函数输出字符的特点。 实验4 选择结构程序设计 1. 实验目的

(1)了解C 语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。

(2)学会正确使用逻辑运算符和逻辑表达式。

(3)熟练掌握if 语句和switch 语句。 (4)结合程序掌握一些简单的算法。 (5)学习调试程序。

2. 实验学时与要求:2学时,编程序上机调试运行,提交实验报告。实验类型:验证。

4. 实验内容

本实验要求先编好解决下面问题的程序,然后上机输人程序并调试运行程序。

(1) 有一函数 ≥-≤≤-<=) 10(113)101(1

2)1(x x x x x x y 用scanf 函数输入x 的值,求 y 值。(习题 4.5) 运行程序,输入x 的值(分别为x <1、1≤x <10、x ≥10三种情况,检查输出的y 值是否正确。

(2) 给出一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。90分以上为A ,81~分为B ,70~79分为C ,60~69分为D ,60分以下为E 。(习题4.6)

①事先编好程序 要求分别用if 语句和switch 语句实现。运行程序,并检查结果是否正确。

②再运行一次程序,输入分数为负值(如 -70),这显然是输入时出错,不应给出等级。修改程序,使之能正确处理任何数据。当输入数据大于100或小于0时,通知用户“输人数据错’,程序结束。

(3) 托儿所收2-6岁儿童,其中2-3岁进小班,4岁进中班,5-6岁进大班,分别用if 和switch 编程,输入儿童年龄,输出该年龄及所进入的班级。

实验5 循环结构程序设计 1. 实验目的

(1) 熟悉掌握用while 语句,do-while 语句和for 语句实现循环的方法。

(2) 掌握在程序设计中用循环的方法实现一些常用算法(如穷举、

迭代、递推等)。

(3) 进一步学习调试程序。

2. 实验学时与要求:2学时,编程序上机调试运行,提交实验报告。实验类型:验证。

3. 实验内容

(1) 打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身,例如153是一个水仙花数,因为153=13+53+33(习题5.6)

提示:

for(n=100;n<1000;n++) { i=n/100; j=(n/10)%10; k=n%10;

if (n==i*i*i+j*j*j+k*k*k) printf(\"%d\}

(2)输入一个正整数n,输出n!. 实验六三种程序结构综合实验 1. 实验目的

(1)进一步掌握顺序、选择及循环结构的综合编程,练习使用if语句,if…else语句,while 语句,do…while语句和for语句的嵌套使用。

(2)学习调试程序

2. 实验学时与要求:2学时,编程序上机调试运行,提交实验报告。实验类型:综合。

3. 实验内容

(1)百鸡问题:用100元买100只鸡,公鸡5元1只,母鸡3元1只,小鸡1元3只。

编写程序输出所能购买公鸡、母鸡和小鸡的数目(可能多解)。

(2)编写程序输出左下三角形式的乘法九九表,即输出结果为 1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 9 18 27 36 45 63 72 81

(3)编写程序输出右上三角形式的乘法九九表,即输出结果为 1 2 3 4 5 6 7 8 9 4 6 8 10 12 14 16 18 9 12 15 18 21 24 27 16 20 24 28 32 36 25 30 35 40 45 36 42 48 49 56 63 72 81

实验七 数组 1. 实验目的

(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。 (2)掌握字符数组和字符串函数的使用。 (3)掌握与数组有关的算法(特别是排序算法)

2. 实验学时与要求:4学时,编程序上机调试运行,提交实验报告。实验类型:综合。

3. 实验内容:

(1)输入n 个数(n<50),分别用冒泡法和选择法进行排序,从小到大顺序输出。

(2)输入一个三行四列的二维数组,求出数组中每行的最小值和每列的最大值。

(3)有一篇文章,共3行文字,每行有80个字符,要求分别统计其中的英文大写字母,小写字母,数字,空格以及其他字符的个数。

实验八 函数 1. 实验目的

(1)掌握定义函数的方法。 (2)掌握声明函数的方法。

(3)掌握函数实参与形参的对应关系,以及“值传递”的方式 (4) 掌握函数的嵌套调用和递归调用的方法。

2. 实验学时与要求:4学时,编程序上机调试运行,提交实验报告。实验类型:综合。

3. 实验内容:

(1)写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息(习题7.3)。 本程序应当准备一下测试数据:17,34,2,1,0。分别运行并检查结果是否正确。要求所编写的程序,主函数的位置在其他函数之前,在主函数中对其所调用的函数作声明。

① 输入程序,编译和运行程序,分析结果。

② 将主函数的函数声明删去,再进行编译,分析编译结果。 ③ 把主函数的位置改为在其他函数之后,在主函数中不含函数声明。

④ 保留判别素数的函数,修改主函数,要求实现输出100-200之间的素数。

(2)用数组做函数参数的方法实现一个2*3矩阵和一个3*2矩阵的乘积,在主函数调用函数。

(3)将一个整型一维数组中的元素逆序存放并输出

(4)用递归的方法求1-+=n n x x x ,x x =1,输入x 和n ,输出n x 的值

实验九指针与数组和字符串 1. 实验目的

(1)掌握指针和间接访问的概念,会定义和使用指针变量 (2)能正确使用数组的指针和指向数组的指针变量 (3)能正确使用字符串的指针和指向字符串的指针变量

2. 实验学时与要求:6学时,编程序上机调试运行,提交实验报告。实验类型:综合。

3. 实验内容

(1)分析下列程序的运行结果,并输入数据测试,并指明原因 ①swap1(int x,int y) { int t; t=x; x=y; y=t;} main( ) { int a,b;

scanf(\"%d,%d\swap1(a,b);

printf(\"\\n%d,%d\\n\}

②swap2(int *p1, int *p2)

{ int *p;*p=*p1; *p1=*p2; *p2=*p; } main( )

{ int a,b; int *pointer_1,*pointer_2; scanf(\"%d,%d\pointer_1=&a; pointer_2=&b; swap2(pointer_1,pointer_2); printf(\"\\n%d,%d\\n\}

③swap3(int *p1, int *p2) { int p; p=*p1; *p1=*p2; *p2=p;} main( )

{ int a,b; int *pointer_1,*pointer_2; scanf(\"%d,%d\pointer_1=&a; pointer_2=&b;

swap3(pointer_1,pointer_2); printf(\"\\n%d,%d\\n\}

(2)以数组作为函数参数实现下列程序

从键盘输入一个班(全班最多不超过30人)学生某门课成绩,当输入成绩为负值时输入结束,分别统计下列内容:

(1)统计各分数段(<60,60~69,70~79,80~,90~100)的学生人数及所占的百分比并输出

(2)统计成绩在平均分及平均分之上的学生人数并输出。 (3)以指针为函数参数实现第2题。

(4)写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。

(5)利用指针交换数组a和数组b中的对应元素。 实验十结构体与共用体 1. 实验目的

(1)掌握结构体类型变量的定义和使用 (2)掌握结构体类型数组的概念和应用。

2. 实验学时与要求:4学时,编程序上机调试运行,提交实验报告。实验类型:综合。

3. 实验内容

(1)编写程序,利用结构体类型编制一程序,实现输入一个学生的数学期中和期末成绩,然后计算并输出其平均成绩。

(2)有5个学生,没个学生的数组包括学好、姓名、三门课的成绩、从键盘输入5个学生的数据,要求输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均成绩)(习题9.5)。

程序要求:用input函数输入5个学生数据,用average函数求总平均分;用max函数找出最高分的学生数据;总平均分和最高分学生的数据都在主函数中输出。

实验十一文件操作

1. 实验目的

(1)掌握文件以及缓冲文件系统、文件指针的概念。 (2)学会使用简单的文件打开、关闭、读写等文件操作函数 2. 实验学时与要求:2学时,编程序上机调试运行,不提交实验报告。实验类型:验证。

3. 实验内容

(1)用“r”只读方式打开一个已存在的方本文件;

(2)用“w”方式建立且打开一个不存在的文件,建立前后都到Windows (操作系统)中去查找一下,以确认是C语言语句建立的。

(3)从键盘中输入三个整数,依次写入到文件1.txt,再从该文件中读出前两个整数,在显示器上输出这两个整数的和。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务