C语言程序设计基础实验讲义说课讲解.docx
《C语言程序设计基础实验讲义说课讲解.docx》由会员分享,可在线阅读,更多相关《C语言程序设计基础实验讲义说课讲解.docx(18页珍藏版)》请在冰豆网上搜索。
C语言程序设计基础实验讲义说课讲解
《程序设计基础》实验讲义
黑龙江大学计算机学院、软件学院
《程序设计基础》实验讲义根据《程序设计基础》实验大纲编写,共有十二个实验,其中前十个实验为必做实验,后二个为选作实验,总计36学时。
一、上机实验的目的和要求
程序设计是一站实践性很强的课程。
强化实践,是学好程序设计课的重要环节。
所谓强化实践主要包括两个方面:
一是多编程序,二是多上机调试,要将这两方面结合起来。
为了培养学生的实践动手能力,作到独立编定程序,必须进行上机实验。
上机实验的目的,绝不仅仅是为了验证教材和讲课的内容是否正确,学习程序设计决不能只停留在书本上和纸面上,还要培养上机调试程序能力。
对于实验者来说,决不能仅仅满足于自己所编的程序能得出正确的结果,而应在实践中积累调试程序的经验。
要把听讲-复习-作业-上机这几个环节有机地结合起来,一环扣一环,前后衔接。
对于每个实验题目,要求学生能够作到,自己编写程序,自己输入程序,自己调节器试程序,自己分析结果。
综上所述,学习C程序设计,上机实验的目的主要为:
1.使学生能更好的理解书本上的内容,对于课堂上讲授的语句,语法知识,只有通过上机实践才能作到熟练的掌握。
2.了解和熟悉C语言程序开发的环境。
由于C语言开发环境的种类繁多(UNIXC,TurboC,MSC等),不同的开发环境具有不同的特点、不同的运行环境设置,要求实验者必须了解自己使用的开发环境所处的软、硬件环境。
3.上机调试程序,关于发现程序中的错误,并能很快排除错误,使得程序能正常运行。
调节器试程序时一方面可以借鉴书本上介绍的经验,另一方面要注重自己直接经验的积累。
上机实验的重要性决不亚于课堂的教学因此要求学生认真对待这个教学环节并应按照一定的规范完成。
上机实验过程通常可以按照如下步骤进行:
1.了解实验目的和要求,复习书本上相关的内容。
2.根据经定的题目,事先编好程序,并要经过静态检查,分析可能出现的问题。
3.设计好测试用例。
4.上机输入程序,进行调试,记录调试中出现的问题和采的措施。
5.实验完成后,要分析实验中出现的问题。
二、具体实验内容
实验一C语言程序的运行环境和运行一个C语言程序的方法
一、目的和要求
1.了解所用的计算机系统的基本操作方法,学会使用该计算机系统。
2.了解如何在该计算机系统上编辑、编译、连接和运行一个C语言程序。
3.通过运行简单的C语言程序,初步了解C语言源程序的特点。
(本实验可以在完成第一章内容使用)
二、实验内容
1.了解WINDOWS,DOS操作系统,学习如何进入正确的系统工作状态,掌握其操作命令和应用程序的使用,包括如何建立目录,查找文件,列目录,复制文件等。
(本部分为计算机基础课程的内容,在此应用复习)
2.了解VisualC++6.0开发环境。
(1)系统环境的启动
点击开始菜单中的MicrosoftVisualstudio6.0菜单下的MicrosoftVisualC++6.0,启动系统集成开发环境。
(2)新建C++源文件
图1创建C源文件界面
(3)编译源文件
图2编译C源文件界面
(4)运行程序
图3运行C程序界面
3.输入教材中1.3节中的例1.1,例1.2。
例1.3调试运行程序,了解在VisualC++环境下如何运行C程序。
4.输出如下图型:
*************************
Howareyou?
*************************
5.写出VC++6.0的上机过程!
6.完成从键盘输入3个数,并按从小到大输出。
实验二数据类型、运算符和表达式
一、目的和要求
1.掌握定义整型、字符型和实型变量的方法,以及对它们赋值的方法。
2.学会使用C语言的有关算术运算符,以及包含这些运算符的表达式。
3.学会编辑、编译、连接和运行C语言程序。
二、实验内容(由教师任选几道)
1.输入如下程序,验证运行结果。
main()
{inti1,i2;
charch1,ch2;
floatf1,f2;
doubled1,d2;
i1=12;i2=113;
ch1=`A`;ch2=`B`;
f1=1.23;f2=0.34;
d1=1.23;d2=0.34;
printf(”\ni1=%d,i2=%d”,i1,i2);
printf(”\nch1=%c,ch2=%c”,ch1,ch2);
printf(”\nfl=%f,f2=%f”,f1,f2);
printf(”\ndl=%lf,d2=%lf”,d1,d2);}
2.输入如下程序,验证运行结果。
main()
{inti1,i2;
charch1;
floatf1;
doubled1,d2;
i1=12;ch1=`A`;
f1=1.23;d1=1.23;
i2=i1+ch1;
printf(”\ni2=%d”,i2);
i2=i1+f1;
printf(”\ni2=%d”,i2);
d2=ch1+i2+i1+f1+d1;
printf(”\nd1=%lf”,d2);
d2=ch1+i2+i1+(int)f1+(int)d1;
printf(”\nd1=%lf”,d2);}
3.输入如下程序,验证运行结果。
main()
{charc1,c2;
c1=97;c2=98;
printf(”\ncl=%c,c2=%c”,c1,c2);
printf(”\ncl=%d,c2=%d”,c1,c2);
cl=`a`;c2=`b`;
printf(”\ncl=%c,c2=%c”,c1,c2);
printf(”\ncl=%d,c2=%d”,c1,c2);}
4.输入如下程序,验证运行结果。
main()
{intx,y,z;
x=y=z=1;
printf(”One:
\nx=%d,y=%d,z=%d”,x,y,z);
x+=x;
y—=y*=y+=2;
z+=z*=z-=4;
printf(”Two:
\nx=%d,y=%d,z=%d”,x,y,z);}
5.输入如下程序,验证运行结果。
main()
{intx,y,z;
x=y=z=1;
printf(”One:
\nx=%d,y=%d,z=%d”,x,y,z);
x++;
++y;
z--;
printf(”Two:
\nx=%d,y=%d,z=%d”,x,y,z);
x=y=z=1;
x=x---2;
printf(”Three:
\nx=%d”,x);
y=++y+y;
printf(”Three:
\nx=%d”,y);
x=1;
y=(x++)+(x++)+(x++);
printf(”Three:
\nx=%d”,y);
y=(++x)+(++x)+(++x);
printf(”Three:
\nx=%d”,y);}
6.输入如下程序,验证运行结果。
main()
{printf(”abc\tde\n\txya\b\r123”);
printf(”nabc\b\b\rxya\r123”);
printf(”\nI\`mastudent”);
printf(”\nIt\`sanumber\012”);}
6、输入并运行下面的程序:
#include
voidmain()
{charcl,c2;
c1=’a’;
c2=’b’;
printf(“%c%c\n”,c1,c2);
}
7、完成教材第2章47页习题1、习题2、习题3、习题4。
8、输入并运行下面的程序:
#include
voidmain()
{inta,b;
unsignedc,d;
longe,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”,a,b);
}
实验三最简单的C程序设计
一、目的和要求
1.掌握赋值语句的使用。
2.掌握数据的输入/输出方法,学会输入/输出函数的使用方法。
二、实验内容(由教师任选几道)
1.输入一个字符,并将其输出。
要求:
(1)利用putchar()函数和getchar()函数来实现。
(2)利用scanf()函数,printf()函数来实现。
2.输入下面程序,运行进行正确的数据输入
main()
{inti,j;
charch1;
floatk;
printf(”\n(One)Inputtwonumber:
”);
scanf(”%d%d”,&i,&j);
printf(”i=%d,j=%d”,i,j);
printf(”\n(Two)Inputtwonumber:
”);
scanf(”%d,%d”&i,&j);
printf(”i=%d,j=%d”,i,j);
printf(”\n(Three)Inputtwonumber:
”);
scanf(”i=%d,j=%d”&i,&j);
printf(”i=%d,j=%d”,i,j);
printf(”\n(Four)Inputtwonumberandachar:
”);
scanf(”%d%c%f”&i,&ch1,&k);
printf(”i=%d,ch1=%c,k=%f”,i,ch1,k);}
3.输入一个华氏温度,要求输出摄氏温度公式为:
C=5/9(F-32)
输出要求要有文字说明,取两位小数。
4.编写程序,输入一圆的半径,分别求圆的周长,面积的体积。
5.输入三角形的三边,计算三角形的周长,面积。
6.从键盘上输入一个小写字母,用大写字母输出。
或反之。
实验四 选择结构程序设计
一、目的和要求
1.了解C语言表示逻辑量的方法。
2.学会正确使用逻辑运算符和逻辑表达式。
3.熟练掌握if语句和switch语句的格式及应用。
二、实验内容(由教师任选几道)
1.输入下面程序,验证结果与自己计算的值是否相同。
main()
{intx,y,z;
x=y=z=0;
++x||++y||++z;
printf(”\nx=%d,y=%d,z=%d”,x,y,z);
x=y=z=0;
++x&&++y||++z;
printf(”\nx=%d,y=%d,z=%d”,x,y,z);
x=y=z=0;
++x&&++y&&++z;
printf(”\nx=%d,y=%d,z=%d”,x,y,z);
x=y=z=-1;
++x&&++y&&++z;
printf(”\nx=%d,y=%d,z=%d”,x,y,z);
x=y=z=-1;
++x&&++y||++z;
printf(”\nx=%d,y=%d,z=%d”,x,y,z);}
2.输入四个数,要求按照从小到大的顺序输出。
3.给一个不多于5位的正整数,要求
(1)求出它是几位数。
(2)分别找印出每位数字,数字与数字之间用*号分隔。
(3)按逆序打印出各位数字,例如:
原数为234,应输出432。
4.输入年份和月份,输出该月有多少天?
5.输入三角形的三边,计算三角形的周长,面积,要求判断三角形的合法性。
6.编程序:
设函数
1(x>100)
Y=0(x=100)
-1(x<100)
其中,x从键盘输入。
实验五 循环控制
一、目的和要求
1.熟练掌握用while语句、do—while语句和for语句实现循环的方法。
2.掌握用循环的方法实现各种算法(例如:
累加、累乘、迭代等)。
二、实验内容(由教师任选几道)
1.分别用while语句,do-while语句和for语句实现求1+2+3……100的和。
2.编写程序求1!
+2!
+……+20!
值。
3.找钱出所有的水仙花数,所谓水仙水数是指一个3位数,其各位数字的立方和等于其本身。
例如:
153=13+53+33
4.一个数如果恰好等于它的因子的和,则称这个数为完数。
例如6=1+2+3,则是完数。
求出1000以内的所有完数,要求每行输出2个。
5.打印九九表。
6.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?
都是多少?
实验六 数组
一、目的和要求
1.掌握数组的定义、赋值和输入/输出方法。
2.掌握字符数组的使用,了解字符串函数的使用。
3.掌握与数组有关的算法(例如:
各种排序算法)。
二、实验内容(由教师任选几道)
1.用选择法对10个整数进行排序。
2.已有一个已排好序的数组,今输入一个数,要求按照原来顺序的规律将它插入到数组中。
3.将两个字符串连起来,不要用strcat()函数。
4.求3*3矩阵对角线的元素之和。
5.求3*3矩阵中最大元素所在的行列位置。
6.有N个学生,每人考M门课程,要求:
(1)找出成绩最高的学生号和课程号。
(2)找出有不及格课程的学生号及其各门课的全部成绩。
(3)求出全部学生全部课程的总平均数。
7.求输入的10个正整数的最大数和最小数,并输出最大数和最小数及其所在的位置。
8.利用公式Cij=∑aik*bkj计算矩阵A和矩阵B的乘积。
其中A为m×n矩
k=1
阵,B为n×m矩阵,C为m×m矩阵。
实验七函数
一、目的和要求
1.掌握定义函数的方法。
2.掌握函数实参与形参的对应关系,以及“值传递”的方式。
3.掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法。
4.掌握函数的嵌套调用方法,学会递归调用方法。
二、实验内容(由教师任选几道)
1.编写判断一个数是否是素数的函数,在主函数中调出用100以内的所有素数。
2.编写求一个数阶乘的函数,在主函数中调用输出10以内的所有数的阶乘。
3.写一个函数,使给定的一个二维数组(3*3)转置。
4.编写递归函数实现汉诺塔问题。
5.编写递归函数,求出给定数字的所有(质数)因子。
例如:
72=2*2*2*3*3。
6.从键盘上输入10个人的高数成绩,统计不及格,60-70,70-80,80-90,90-100,100分的人数,并输出。
用函数来实现。
7.编写递归函数,求输入的n个整数的和,并编写主函数测试它
8.写一个函数,将两个字符串拼接。
9.完成教材第7章,第12、13题。
实验八指针
一、目的和要求
1.掌握指针的概念,掌握定义和使用指针变量的方法。
2.掌握使用数组的指针和指向数组的指针变量。
3.掌握使用字符串的指针和指向字符串的指针变量。
4.掌握使用指向函数的指针变量。
5.掌握指针数组、指向指针的指针的概念,学会其使用方法。
二、实验内容(由教师任选几道)
(以下题目要求用指针来完成)
1.输入10个整数,将其中最小的数与第一个数互换,把最大的数与最后一个数和互换。
写三个函数(1)输入10个数(2)具体互换处理(3)输出10个数。
2.将N个数按照输入时顺序的逆序排列,并输出(用函数实现)。
3.写一函数,将一个3*3矩阵转置。
4.有一个班4个学生,5门课。
(1)求第一门课的平均分;(2)找出有2门以上课程不及格的学生输出他们的学号和全部课程成绩以及平均成绩;(3)找出平均成绩的90分以上或全部课成绩在85分以上的学生。
分别编3个函数实现以上3个要求。
5.输入10个字符串,按照由小到达的顺序输出。
6.用一个函数实现两个字符串的比较,即自己编写一个strcmp函数,函数原型为intstrcmp(chqr*p1,char*p2);设P1指向字符串S1,P2指向字符串S2。
要求当S1=S2时,返回值为0;若S1<>S2,返回值为它们两者第一个不同字符的ASCII码差值。
如果S1>S2,则输出正值,如果S1<S2,则输出负值。
7.用指向指针的方法对10个字符串排序并输出。
8.用指向指针的方法对N个整数进行排序,并输出。
(要求排序单独写成一个函数)
9.利用指针编写字符串拷贝的函数。
(不能使用系统函数)
实验九 (一个小MIS的实现)结构体和共用体
一、目的和要求
1.掌握结构体类型变量的定义和使用方法。
2.掌握结构体类型数组的概念和使用方法。
3.掌握指向结构体的指针变量的定义和使用方法。
4.掌握共用体的概念和使用方法。
二、实验内容(由教师任选几道)
1.10名学生的数据信息,包括学号,姓名,性别,出生年,月,日,C语言的成绩,BASIC语言的成绩,离散数学的成绩,平均成绩和名次等。
按照如下步骤编写程序:
(1)要求定义一个结构体数据类型来描述学生的信息。
(2)输入学生的基本信息以及三门课程的成绩。
(3)求出每个学和三门课程的平均分。
(4)对10名学和按照平均分进行排队。
(5)输出每门课程成绩最高的同学的基本信息。
2.对学生的基本信息用链表进行处理,基本信息包括:
学号、姓名、性别、年龄、C语言的成绩。
要求:
(1)建立链表,输入一个学生的基本信息,插入链表,插入要求为链表必须按照学号从小到大的顺序进行排列。
(2)可以在链表中删除某一学生的信息即输入一个学生的学号,查找到该节点信息作删除。
3.口袋中有红、绿、蓝三种颜色的球若干,每次从口袋中取出2个球。
求2种不同颜色的球可能取法并打印出每种组合的两种颜色。
(用枚举类型来做)
run跑ranrun4.编写一个程序,将5个学生的身高、体重及姓名存放在一个结构体中,从中查出身材最高和身体最重的学生姓名,以及与之相应的身高和体重。
5.设计和实现一个学生班级的电话簿程序。
实验十 文件
一、目的和要求
feel触摸feltfelt1.掌握文件和文件指针的概念。
rise上升roserisen2.学会使用文件打开、关闭、读、写等文件操作函数。
catch捕捉caughtcaught3.掌握二进制文件、文本文件的概念及操作。
不规则动词变化,大体上归纳有以下六条记忆法:
win获胜wonwon二、实验内容(由教师任选几道)
1.按照要求进行如下基本文件操作
buy买boughtboughtget得到gotgot(1)从键盘上输入一串字行,以﹩结束,将输入的字符串存入到文件char.dat中;
(2)从文件char.dat中将存放在字符串读出,将其中的小写字母变成大写输出到屏幕上。
go去wentgone2.有5个学生。
每个学生有3门课程的成绩,从键盘上输入学生号,姓名,三门课的成绩,计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件STUD中。
tell告诉toldtold
wear穿着worewornmean表…意思meantmeant3.从上一题目文件STUD中,输入学生的学号,读出该学生的数据信息。
shall将should×4.把文件1中的小写字母转换成相应的大写字母,数字字符也转换成大写字母,如1转换成A,2转换成B等,其他字符不变,然后写到文件2中。
bend使弯曲bentbent5.利用指向结构体的指针编写程序,实现输入4个学生的学号、数学成绩、英语成绩,将此四个学生的信息写到文件中,输入一个学生的学号,从文件中定位查询,然后计算其平均成绩并输出该生成绩。
wet淋湿wet/wettedwet/wetted
make制作mademadetear撕裂toretorn6.完成教材第10章,第10、11题。
buy买boughtbought
seek寻觅soughtsought
prove证明provedproved/proven