《程序设计》实验讲义

来源:网络收集 时间:2025-06-14 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

信息 学院

本科教学实验讲义

(实验)课程名称 程序设计

贵州财经学院教务处制表

程序设计实验教学讲义

英文名称:The Programming of C 适用对象:计科专业、软件工程专业

学时学分:共64学时,实验16学时,3学分。

一、实验的目的

本课程是学生进行程序设计的入门课,它是学生今后从事计算机程序设计的基础,也是学习计算机其它专业课程(如数据结构,软件工程、面向对象的程序设计、编译原理等)的基础,C程序设计课程是一门实践性很强的课程,需要同学们认真而扎实地练习,按时完成作业。通过实验,使学生掌握C语言的基本语法、基本操作、程序设计的基本概念与编程技术,并能运用所学知识解决实际问题,为以后学习面向对象的程序设计及其它专业课程打下扎实的基础。

二、实验开设对象

本实验开设对象计科、软件工程专业本科学生,实验为必修内容。

四、指导教师要求

本实验课程教学配1名教师担任实验指导教师,实验室人员配合指导。指导教师应在实验前阐述实验目的、基本方法、基本技术、实验要求等,指导学生在规定的时间内完成相关课程实验。

五、实验设备配置

每人配置1台电脑,安装有VC++ 6.0系统和其他相关组件,要求具有上网条件。

六、考核与报告

1、实验完成后,学生实验过程简要写到实验报告中,并完成心得体会和问题,符合实验教学的要求,并得到指导教师的认可。 2、指导教师对每份实验报告进行审阅。

实验一 C语言程序初步(必做)

1

一、实验题目

C程序的运行环境和编辑程序的方法 二、实验课时 课内2课时 三、实验目的

1、 熟悉C语言运行环境。

2、 掌握C语言程序的书写格式和C语言程序的结构。 3、 掌握C语言上机步骤,了解运行一个C程序的方法。 4、 本实验可在学习完教材第一章后进行。

四、实验步骤

1、静态地检查上述程序,改正程序中的错误。 2、在编辑状态下照原样键入上述程序。

3、编译并运行上述程序,记下所给出的出错信息。 4、按照事先静态检查后所改正的情况,进行纠错。

5、再编译执行纠错后的程序。如还有错误,再编辑改正,直到不出现语法错误为止。

五、实验内容和要求

1、熟悉上机环境及常用命令;

2、编写输出”Hello World”的第一个程序; 3、验证两个数比较大小程序;

4、有下面的C程序,目的是想计算由键盘输入的任意两个整数的积。 /********exl.c********/ #include (stdio.h); main()

scanf(“%x,%y”,&x,%y) int p p=x+y

printf(“The product is :”,p) 请调试上述程序;

下面给出6组测试用例,你认为哪几组较好?为什么? (1)0, 0 (2)0, 99 (3)20,50

(4)33000,20 (5)-5,-2 (6)-5,2 要测试出上述程序中所有错误,你认为应当用几组测试用例?

实验二 数据类型、运算符和表达式(必做)

2

一、实验题目

数据类型、运算符和表达式

二、实验课时

课内2课时

三、实验目的

1、了解C语言中数据类型的意义。 2、理解常用运行符的意义。

3、掌握C语言表达式的运行规则。

四、实验步骤

1、完成实验内容

2、如何正确地选用数据类型? 3、分析总结运算符的优先级。

五、实验内容和要求

1、下面的程序试图计算由键盘输入的任意两个整数的平均值: #include main() {

int x,y,a;

scanf(“%x,%y,&x,&y); a=(x+y)/2;

printf(“The average is :”a); }

调试无语法错误后,分别使用下列测试用例对上述程序进行测试: 序号 1 2 3 4 5 6 7 8 9 分析上述哪几组测试用例较好?通过测试,你发现程序有什么错误了吗?若有错误,请指出错误原因。

2、操作符sizeof用以测试一个数据或类型所占用的存储空间的字节数。请编写一个程序,测试各基本数据类型所占用的存储空间大小。

3

测试用例 2 1 -2 -1 -2 -1 1 32800 -32800 6 3 -6 -3 6 3 0 33000 33000 预计结果 实际结果 备注 3、编写一个C语言程序,测试下列各表达式 i , j

i + 1,j + 1 i + + ,j + + + + i, + + j i + + + + + j

+ + i + + + + + j + +

要求在各表达式中i 和j都分别有相同的初值。在实验中注意下列问题: (1) 哪些表达式是错误的?为什么?

(2) 理解+,++,++i,i++的意义和优先级别。 4、编写一个程序,测试常用的十个运算符的优先顺序。(选作)

实验三 输入与输出(选做)

一、实验题目

输入、输出及顺序结构程序设计

二、实验课时

课内2课时

三、实验目的

1、掌握C语言程序输入、输出的方法和格式。 2、理解程序的顺序结构

四、实验步骤

1、完成实验内容

2、总结在printf函数中可以使用的各种格式指定符,并给出样例。 3、总结在printf函数中可以使用的各转义字符及其功能。

五、实验内容和要求

1、输入并编辑下面的程序 main() {

int a,b; float c,d; long e,f;

unsigned int u,v; char c1,c2;

scanf(“%d,%d”,a,b); scanf(“%f,%f”,c,d); scanf(“%ld,%ld”,e,f); scanf(“%o,%o”,u,v); scanf(“%c,%c”,c1,c2);

4

printf(“\\n”);

printf(“a=},b=}\\n”,&a,&b);

printf(“c=.2f,d=.2f\\n”,&c,&d); printf(“e=17ld,f=ld\\n”,&e,&f); printf(“u=%o,d=%o\\n”,&u,&v); printf(“c1=%c,d=%c\\n”,&c1,&c2); 这个程序有语法错误吗?为什么?

2、调试上述程序无语法错误后,用下面的测试数据,对程序进行测试:

a=123,b=456,c=17.6,d=71837.65,e=70000,f=2174506,u=62000,v=58765,c1=’a’,c2=’b’ 分析运行结果。特别注意输入c1,c2的值是什么?什么原因? 3、将输入e和f的语句改为: scanf(“%d,%d”,&e,&f);

再用上述测试数据测试并分析结果。 4、将输入u、v的语句改为: scanf(“%d,%d”,&u,&v);

再用上述测试数据测试并分析结果。 5、将输出e ,f 的语句改为: printf(“e=d,f=d\\n”,e,f);

再用上述测试数据测试并分析结果。 6、将输出u、v的语句改为: printf(“u=%u,v=%u\\n”,u,v); 或

printf(“u=%d,v=%d\\n”,u,v);

再用上述测试数据测试并分析结果。

7、请读者自己修改程序和改变数据输入的形式,分析各种情况下的输入与输出。 8、在scanf(“%c,%c”,&c1,&c2);语句之前加一个语句: getchar();

9、验证转义字符\\n 与 \\r的意义有何不同。

实验四 分支程序设计(选做)

一、实验题目

选择语句的演练

二、实验课时

课内2课时

三、实验目的

1、了解条件与程序流程的关系

2、了解用不同的数据使程序的流程覆盖不同的语句、分支和路径。

四、实验步骤

1、完成实验内容; 2、分析讨论

5

(1)用哪一组数据就可使程序中的每个处理语句都执行一次?为了找出程序中各条处理语句中的错误,应该使用什么样的数据对程序进行测试?请上机验证自己的结论。 (2)用哪两组数据就可以使程序段中的每个分支都运行一次?这种情形与上面的讨论有何不同?如果为了找出程序中积压分支中的错误,应该使用什么样的数据对程序进行测试?请上机验证自己的结论。 (3) 用哪两组数据就可以把判定框中的每个条件运算都进行一次?如果为了测试出判定条件中的错误,应使用哪些数据对程序进行测试?请上机验证自己的结论。 (4)用哪四组数据才可以把各种条件的组合都检测一遍? 如果为了测试各种条件的组合的情形,应该使用什么样的测试数据?请上机验证自己的结论。

(5)用哪四组数据才可以把起始到终止的各条路径都覆盖一次?如果为了测试出程序在不同路径下的错误,应该使用什么样的测试数据?请上机验证自己的结论。

五、实验内容和要求

1、有如下程序段: {…… if (a>1&&b= =0) x=x/a; if(a==2||x>1) x=x+1; }

为了更容易明白程序的逻辑结构,我们用下图所示流程图来加以描述。

y

a>1&&b= =0 n

x=x/a

y a= =2||x>1 n x=x+1

要求增加一些输入语句和输出语句,以便使上述程序能在不同的a,b和x值下运行,并且能观察程序流程经过(覆盖)了哪些语句、哪些分支及哪些路径。 2、记下分别使用下列各组数据运行时的操作流程。 (1) a=1,b=1,x=1; (2) a=1,b=1,x=2; (3) a=3,b=0,x=1; (4) a=2,b=1,x=4; (5) a=2,b=1,x=1; (6) a=1,b=0,x=2; (7) a=2,b=1,x=1; (8) a=3,b=0,x=2。

6

选做题目

1、从键盘上输入三个数,让它们代表三条线段的长度,请写一个判断这三条线段所组成的三角形属于什么类型(不等边,等腰,等边或不构成三角形)的C程序。 2、请设计测试数据对自己的程序进行测试:

实验五 循环结构程序设计(必做)

一、实验题目

循环结构程序设计

二、实验课时

课内2课时

三、实验目的

1、掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。

2、了解条件型循环结构的基本测试方法。

3、 掌握如何正确地控制计数型循环结构的次数 4、 了解对计数型循环结构进行测试的基本方法 5、 了解在嵌套循环结构中,提高程序效率的方法

四、实验步骤

1、完成试验内容

2、总结测试条件循环结构的一般方法

3、如何测试计数型循环结构的控制表达式中的错误? 4、从实验中你得到了哪些提高嵌套循环程序效率的启示?

五、实验内容和要求

1、下面是一个计算e的近似值(使误差小于给定的δ)的程序。 main() {

double e=1.0,x=1.0,y,detax; int i=1;

printf(“\\n please input enter a error:”); scanf(“%lf”,&detax); y=1/x;

while(y>=detax) {

x=x*i; y=1/x; e=e+y; ++i; }

printf(“.10lf”,e); } (1)、阅读上面的程序,写出程序所依据的计算公式。 (2)、当输入的detax各是什么值时,能分别使程序按下面的要求运行:

7

.不进入循环; .只循环一次; .只循环两次;

.进入死循环(程序将永远循环下去)。

为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?

(3)、原程序中while语句中的y>=detax,分别换成y>detax,y=detax,y

假如不知道机器内的程序中的各语句实际上是什么,分别输入什么样的detax来测试出while语句的循环条件写错了。

(4)、把原程序中while语句之前的y=1/x语句去掉,观察程序的运行将会发生什么样的变化。

假如不知道机器内的程序实际上是怎么写的,输入什么样的detax就能测试出少了上述这条语句。

(5)、若把原程序中的++i换成i++,观察程序的运行发生了什么变化?

假如不知道这条语句到底是怎么写的,输入什么样的detax就能测试出这条语句写错了. (6)、把原程序中的while结构改写成do—while结构,再分别按上述的(2)、(3)两步进行实验。 选作:

2、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?设计程序实现并调试。

3、用100元兑换成20、5、2、1元的零钞,共有多少种兑换方法,要求每种至少有1种,要求输出计算的次数。

选作题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

实验六 文件(必做)

一、实验题目

文件

二、实验课时

课内2课时

三、实验目的

1、文件和文件指针的概念以及文件的定义方法。 2、了解文件打开和关闭的概念及方法。 3、掌握有关文件的函数。

四、实验步骤

完成试验内容

五、实验内容和要求

1、编写程序,要求从键盘输入一个字符串,然后将其以文件形式存到磁盘上。磁盘文件名为file1.dat。

8

2、从磁盘文件file1.dat读入一行字符,将其中所有小写字母改为大写字母,然后输出到磁盘文件file2.dat中。

3、已有两个文本文件,今要求编程序从这两个文件中读出各行字符,逐个比较这两个文件中相应的行和列上的字符,如果遇到互不相同的字符,输出它是第几行第几列的字符。

实验七 数组(必做)

一、实验题目

数组

二、实验课时

课内2课时

三、实验目的

1、掌握数组定义的规则。

2、掌握C语言数组的基本用法。

四、实验步骤

1、完成试验内容

2、通过实验,分析定义与引用数组的区别。

五、实验内容和要求

1、编写程序,测试下列数组的定义方式是否正确 (1) main() {

int n;

scanf(“%d”,&n); int a[n]; …… } (2) main() {

const int n=10; int a[n]; } (3)

#include #define M 10 main() {

9

int a[M];

} (4) main() {

int a[2+2*4]; } (5)

#include #define M 2 #define N 8 main() {

int a[M+N]; }

通过这一实验,可以说明什么问题?

2、运行下面的C程序,根据运行结果,可以说明什么? main( )

{ int num[5]={1,2,3,4,5}; inti i;

for(i=0;i<=5;i++)

printf(“%d”,num[i]); }

3.从键盘输入一字符串,然后按逆序存放并输出。

4、操作符&用以求一个变量的地址,这在函数scanf中已经使用过了。现在要你设计一个程序,返回一个3 * 5 的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存储的。 选做:

1、 为一个起泡排序程序设计测试用例,并测试之。

2、 写一个程序,使用一维数组计算并输出杨辉三角形前面的n行。

实验八 函数及递归程序设计(必做)

一、实验题目

函数及递归程序设计

二、实验课时

课内2课时

三、实验目的

1、 掌握C语言函数定义及调用的规则。 2、 理解参数传递的过程。

10

四、实验步骤

1、完成试验内容

2、 针对以上实验内容写出相应的参数传递过程并分析结果。 3、 讨论参数的传递的几种形式。

五、实验内容和要求

1、 上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。 main() {

int,y;

printf(“%d\\n”,sum(x+y)); int sum(a,b) {

int a,b;

return(a+b); } }

2、 编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示

递归函数被调用的轨迹。

3、 使用递归和递推公式分别计算Fabonacci数列,分别两种方式求10,20,30,40,

50……递增测试直到计算时间超过3分钟,比较两种方法的运算时间并分析原因。

实验九 指针 (选做)

一、实验题目

指针

二、实验课时

课内2课时

三、实验目的

1. 熟悉指针的正确用法。

四、实验步骤

1、完成试验内容;

2、讨论数组与指针的联系。

五、实验内容和要求

1、指出下面程序错误的原因。 main( ) {

int x=10,y=5,*px,*py;

11

px=py; px=&x; py=&y;

printf(“*px=%d,*py=%d,*px,*py); }

2、下面的程序试图有如下运行结果: which style you want to : Capital ( c ) or uncapital ( a ):c ↙ COMPUTER Which sytle you want to : Capital ( c ) or uncapital ( a ) : u↙ computer 请调试下面的程序,使其有如上执行结果。 #include main () {

char s*; char c;

printf(“which style you want to :ln”); printf(“capital ( c ) or uncapital(a):”); c=getchar();

if(c=’c’)strcpy(s,”COMPUTER”); else strcpy(s,”computer”); put(s); }

分析出错原因。

3.下面的程序能获得上述运行结果吗? main() {

char *S=”COMPUTER”; char c;

printf(“which style you want to \\n”); printf(“capital (c) or uncapital(u);”); c=getchar(); if(c=’c’)

put(s); else {

s=”computer”; puts(s); } }

分析出错原因。

4.设计一个C程序,用以测试下列各表达式的运算。

12

(1) y=*px++ (2) y=*++py (3) y=(*py)++ (4) y=--*ppx++

实验十 结构及共用体(选做)

一、实验题目

结构及共用体

二、实验课时

课内2课时

三、实验目的

1、掌握结构体类型方法以及结构体变量的定义和引用。

2、掌握指向结构体变量的指针变量的应用,特别是链表的应用。 3、掌握运算符”.”和”->”的应用。 4、共用体的概念和应用。

四、实验步骤

完成试验内容

五、实验内容和要求

1、编写程序:有4名学生,每个学生的数据包括学号、姓名、成绩,要求找出成绩最高者的姓名和成绩,上机运行程序。

2、编写程序,将一个整数的高字节和低字节分别输出(用位运算方法)。上机运行。

实验十一 综合设计:程序设计的综合应用(必做) 一、实验题目

程序设计的综合应用

二、实验课时

课内2课时

三、实验目的

1、掌握用C语言进行简单的数据库管理。

13

2、了解C程序菜单设计的一般方法。 3、理解链表的概念及应用。

四、实验步骤

完成试验内容

五、实验内容和要求

建立一个链表,每个结点包括学号、姓名、及三科成绩、平均成绩。除平均成绩 外,各项均由键盘输入。

要求:

(A).计算平均成绩。 (B).要实现插入功能。 (C).要有排序功能。

(D).要有存取功能。 参考菜单:

void Menu()

{ puts(\ puts(\ puts(\ puts(\ puts(\ puts(\ puts(\ * I = Insert records *\ puts(\ puts(\ puts(\ puts(\ puts(\ puts(\ puts(\}

14

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库《程序设计》实验讲义在线全文阅读。

《程序设计》实验讲义.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/212179.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219