步遥情感网
您的当前位置:首页C程序设计实验指导书

C程序设计实验指导书

来源:步遥情感网
目录

《程序设计》教学大纲 ....................................................................................................................... 1 授课计划与实际进度 ............................................................................................................................. 6 实验一——程序的运行环境和运行C程序的方法 .................................................. 8 实验二——数据类型、运算符和表达式 ......................................................................... 11 实验三——数据类型、运算符和表达式 ......................................................................... 16 实验四——逻辑程序设计 ............................................................................................................... 19 实验五——循环控制 ........................................................................................................................... 23 实验六——数组 ........................................................................................................................................ 26 实验七——函数 ........................................................................................................................................ 28 实验八——编译预处理 ..................................................................................................................... 31 实验九——指针 ........................................................................................................................................ 33 实验十——结构体与共用体......................................................................................................... 36 实验十一——位运算 ........................................................................................................................... 39 实验十二——文件.................................................................................................................................. 42

《程序设计》教学大纲

一、课程基本信息 课程编号: 11114620 课程中文名称: 程序设计 课程英文名称: C language programming 课程类别: 专业必修课 适用专业: 计科学院各专业 开课学期: 秋 总 学 时: 78学时(其中理论课52学时,实验26学时。) 总 学 分: 4.5 预修课程(编号): 计算机基础及办公自动化|软件技术及数据库|计算机导论(任选一门) 计算机高级语言是计算机科学与工程中迅速发展的技术之一,也是计课程简介: 算机应用中一个空前活跃的领域。本课程主要通过适当的示例,系统、详细地讲解程序设计的基础知识、C程序设计语言的基本语法、编程方法和常用算法。 建议教材: 谭浩强.C程序设计.(第三版).北京:清华大学出版社,2005 主 要 参 考 书: [1] 徐孝凯.C++语言基础教程.北京:清华大学出版社,2001 [2] 郑阿奇.Visual C++实用教程.北京:电子工业出版社,2000 二、课程教育目标 本课程的教学目的在于培养学生学会分析问题的方法和基本问题的解决能力,初步了解

面向对象程序设计方法、掌握C语言的编程基础和基本编程技能,并能够运用Turbo C集成开发工具编写一些小程序,为以后继续学习打下基础。具体目标如下:

1.了解C语言出现的历史背景;掌握C语言的特点;知晓C语言基本上机步骤。

2.掌握C的数据类型,能够正确书写C表达式。 3.掌握三种基本结构,会编写相关程序。 4.掌握数组的概念及应用。

5.掌握函数的使用及编写方法。

6.掌握指针的概念、定义、和使用方法。

7.掌握结构体的基本概念及使用方法,了解共用体的概念及使用方法。 8.掌握文件的概念,会编程对文件进行读写操作。 9.理解C程序中的位运算功能、预处理命令。

三、理论教学内容与要求(含学时分配)

第一章 C语言概述(2学时)

1、教学目的与要求:

通过教学使学生了解C语言的背景;掌握C语言程序的结构;领会C语言程序设计的风格。

2、主要教学内容:

C语言的历史背景;C语言的特点 ;C语言源程序的结构。

3、教学重点:

C程序结构。

4、思考与练习:

P12 1.2 , 1.3 , 1.6

第二章 程序的灵魂——算法(2学时)

1

1、教学目的与要求:

通过教学使学生掌握算法的基本概念与特征;掌握结构化程序设计的基本概念。

2、主要教学内容:

算法的概念;简单算法举例;算法的特性;算法的表示;结构化程序设计方法。

3、教学重点:

算法的概念、N-S图、常用算法思想。

4、思考与练习:

P37 2.1, 2.2, 2.3 , 2.7。

第三章 C语言的数据类型、运算符、表达式(4学时)

1、教学目的与要求:

通过教学使学生了解基本类型及其常量的表示法;掌握变量的定义及初始化方法; 掌握运算符与表达式的概念;领会C语言的自动类型转换和强制类型转、左值和赋值的概念。

2、主要教学内容:

C的数据类型;常量与变量;整形数据;实型数据;字符型数据;变量赋初值;各类数据型数据间的混合运算;算术运算符和算术表达式;赋值运算符和赋值表达式;逗号运算符和逗号表达式。

3、教学重点:

常用数据类型、常用运算符、数学公式转化为C语言表达式的基本能力。

4、思考与练习:

P65 3.2, 3.6, 3.9, 3.10, 3.1

第四章 最简单的C程序设计(3学时)

1、教学目的与要求:

通过教学与实验使学生了解C语句的概念及种类;掌握C语言常用的输入/出方式。

2、主要教学内容:

C语句概述;赋值语句;字符数据的输入与输出;格式输入与输出;顺序结构程序设计举例。

3、教学重点:

C语句的种类、赋值语句、数据的输入输出及输入输出中常用的控制格式。

4、思考与练习:

P84 4.2, 4.4, 4.6, 4.8, 4.10

第五章 选择结构程序设计(4学时)

1、教学目的与要求:

通过教学使与实验学生熟练掌握if„else的三种语法;领会switch与break语句的作用。 2、主要教学内容:

关系运算符与关系表达式;逻辑运算符与逻辑表达式;if语句;switch语句。

3、教学重点:

关系运算符与逻辑运算符及其组成的具有逻辑值的表达式、二条分支语句的格式及基本应用。

4、思考与练习:

P104 5.1, 5.2, 5.5, 5.9

第六章 循环控制(4学时)

1、教学目的与要求:

通过教学与实验使学生领会程序设计中构成循环的方法;掌握for、while、do-while语句的用法;了解break、continue在循环语句中的作用。 2、主要教学内容:

goto语句构成循环;while语句;do-while语句;for语句;循环的嵌套;break与continue语句

3、教学重点:

2

C构成循环的四种方法,尤其是后三种方法、break与continue语句的基本作用。

4、思考与练习:

P120 6.1, 6.4, 6.8, 6.14

第七章 数组(6学时)

1、教学目的与要求:

通过教学与实验使学生了解一维数组、二维数组的基本概念;掌握数组类型变量

的定义与引用;掌握数组元素的引用。

2、主要教学内容:

一维数组的定义与引用;二维数组的定义与引用;字符数组。

3、教学重点:

一维数组、二维数组的定义与引用;字符数组的定义与引用、常用字符串处理函数及字符处理函数;数组的应用(习题课)。

4、思考与练习:

P141 7.1, 7.3, 7.6, 7.11 第八章 函数(8学时)

1、教学目的与要求:

通过教学与实验使学生掌握函数的定义与调用;掌握函数参数的传递方式;领会

变量存储类型的概念及各种存储类型变量的生存期和有效范围;领会函数的嵌套调用与递归调用; 了解带参数的main函数 。

2、主要教学内容:

函数的定义;函数的参数和函数的值;函数的调用;函数的嵌套调用;函数的递归调用;数组作为函数参数;变量作用域;变量存储类别。

3、教学重点:

函数定义、函数调用、函数声明等基本概念;函数的嵌套调用与递归调用;数组作为函数的参数、变量的存储类别与作用域。

4、思考与练习:

P186 8.1, 8.3, 8.4, 8.10, 8.16, 8.18

第九章 编译预处理(1学时)

1、教学目的与要求:

通过教学与实验使学生了解预处理的概念及特点;掌握有参宏与无参宏的定义及

使用;领会文件包含的使用及效果。

2、主要教学内容:

宏定义;“文件包含”处理 。

3、教学重点:

有参宏、无参宏的定义与应用;文件包含的基本概念。

4、思考与练习:

P199 9.3, 9.8

第十章 指针(8学时)

1、教学目的与要求:

了解指针与地址的概念 ;掌握指针变量的定义、初始化及指针的运算;掌握指针与数组、指针数组、二级指针等知识;了解指针与函数的概念;掌握指针作为函数参数的应用。

2、主要教学内容:

指针与地址的概念;变量的指针和指针变量的指针变量;数组的指针与指向数组的指针变量;字符串的指针与指向字符串的指针变量;指针与函数;指针数组;二级指针。

3、教学重点:

指针与地址的基本概念、指针与变量的关系;指针与数组;指针与字符串、指针数组与二级指针;指针的应用(习题课)。

4、思考与练习:

3

P258 10.1, 10.4, 10.6, 10.11, 10.15, 10.18

第十一章 结构体与共用体(6学时)

1、教学目的与要求:

通过教学与实验掌握结构体和共用体类型的说明、结构体和共用体变量的定义

及初始化方法;掌握结构体与共用体变量成员的引用;领会存储动态分配和释放;领会链表的基本概念和基本操作;领会枚举类型变量的定义;了解typedef的作用。

2、主要教学内容:

结构体类型的说明及结构体类型变量的定义 ; 结构体变量的引用; 结构体变量的初始化;结构体数组;指针与结构体数组;链表;共用体;枚举类型; typedef。

3、教学重点:

结构体的基本概念、结构类型及变量的定义、结构数组;用指针处理链表;共用体及枚举类型的基本概念、typedef的基本概念。

4、思考与练习:

P296 11.1, 11.4, 11.5, 11.6, 11.9

第十三章 文件(4学时)

1、教学目的与要求:

通过教学与实验使学生掌握标准设备输入/输出函数的使用;掌握缓冲文件系统

的使用。

2、主要教学内容:

文件类型指针;文件的打开与关闭;文件的读写。

3、教学重点:

文件的基本概念;文件的打开、关闭、常用读写方法

4、思考与练习:

P327 13.1, 13.4, 13.6, 13.10

四.实验教学内容与要求

1.C程序的运行环境和运行C程序的方法(2学时) C语言集成环境中编辑、修改、调试、运行程序。 2.数据类型、运算符和表达式(2学时)

掌握C语言数据类型,熟悉变量的定义和赋值的方法;学会使用C的有关算术运算符;进一步熟悉C程序的编辑、编译、连接和运行过程。 3.最简单的C程序设计(2学时)

掌握赋值语句和各种类型数据的输入输出的方法,能正确使用各种格式转换符。 4.逻辑结构程序设计(2学时)

学会正确使用逻辑运算符和逻辑表达式,熟练掌握if语句和switch语句,熟悉程序的调试方法。

5.循环控制(2学时)

熟悉并掌握用while语句,do-while语句和for语句实现循环的方法;掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等);进一步学习调试程序。

6.数组(2学时)

数组的义、赋值和输入输出的方法;掌握字符数组和字符串函数的使用;掌握与数组有关的算法(特别是排序算法)。 7.函数(4学时)

掌握定义函数的方法;掌握函数实参与形参的对应关系以及“值传递”的方式;掌握函数的嵌套调用和递归调用的方法;掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。 8.编译预处理(2学时)

4

掌握宏定义的方法;掌握文件包含处理方法;掌握条件编译的方法。 9.指针(4学时)

掌握指针的概念,会定义和使用指针变量;正确使用数组的指针和指向数组的指针变量;能正确使用字符串的指针和指向字符串的指针变量;能正确使用指向函数的指针变量;了解指向指针的指针的概念及其使用方法。 10.结构体和共用体(2学时)

掌握结构体类型变量的定义和使用;掌握结构体类型数组的概念和使用;掌握链表的概念,初步学会对链表进行操作;掌握共用体的概念与使用。

11.文件(2学时)

掌握文件以及缓冲文件系统、文件指针的概念;学会使用文件打开、关闭、读、写等文件操作函数;学会用缓冲文件系统对文件进行简单的操作。

五.作业

每周布置和收交作业,作业总计90道题左右。

作业成绩占本课程总成绩的5%。迟交或缺交的作业次数应少于作业总次数的20%,否则将影响作业成绩的评定。

提倡并鼓励与同学讨论作业,但是最终的作业必须是完成的,抄袭或复制其他同学的作业将违背学术道德,情节严重者将提请学校学生违纪处理委员会处理。

认真完成作业对掌握教学内容以及取得阶段测验和期末考试好成绩是十分有帮助的,测试题中有可能包含作业题。 六.考核方式

学生可以携带一张备考纸(双面A4)参加阶段测验或期中、期末考试。答题必须完成,任何作弊行为将按照《西南民族大学学生考核违纪、作弊处罚规定》处理。

期中和期末前各有一次60分钟的阶段测验,期中考试时间为90分钟,期末考试时间为120分钟。具体考试时间至少提前1周通知学生。

实验考核主要依据实验报告完成情况和实验项目抽测结果评定。

七.成绩评定

成绩评定采取根据学分制学籍管理条例实行学分绩点的方法计算。

课程成绩考核采用百分制和五级制(十一等)记分,各档成绩与绩点的关系如下表:

成绩(分) 90-100 85-.9 82-84.9 78-81.9 75-77.9 72-74.9 68-71.9 66-67.9 -65.9 60-63.9 <60 成绩等级 A A- B+ B B- C+ C C- D D- F 绩点 4.0 3.7 3.3 3.0 2.7 2.3 2.0 1.7 1.3 1.0 0

5

授课计划与实际进度

学分 4.5 周学时 总学时 6 78 讲课 学时 52 实验、26 其它 实 学时 习学时 实际进度 学时 完成 4 0 教学进度计划 周讲 授 内 容 次 第一章 C语言概述 5 第二章 程序的灵魂——算法: 算法的概念;简单算法举例;算法的特性;算法的表示;结构化程序设计方法 未完成 原因 6 第三章 数据类型、运算符、表达式: C的数据类型;常量与变量;整形数据;实 4 型数据;字符型数据;变量赋初值;各类数据型数据间的混合运算;算术运算符和算术表达式;赋值运算符和赋值表达式;逗号运算符和逗号表达式 7 第四章 最简单的C程序设计: C语句概述;赋值语句;字符数据的输入与输出;格式输入与输出;顺序结构程序设计举例。 第五章 选择结构程序设计: 关系运算符与关系表达式;逻辑运算符与逻辑表达式; 4 8 选择结构程序设计: 第五章if语句;switch语句 第六章 循环控制: goto语句构成循环;while语句;do-while语句;for语句; 。 第六章 循环控制: 循环的嵌套;break与continue语句 第七章 数组: 一维数组的定义与引用; 4 9 4 4 第七章 数组: 10 二维数组的定义与引用;字符数组。 第八章 函数: 11 函数的定义;函数的参数和函数的值;函数4 的调用;函数的嵌套调用;函数的递归调用; 第八章 函数: 12 数组作为函数参数;变量作用域;变量存储4 类别。

6

学分 4.5 周学时 总学时 6 78 讲课 学时 52 教学进度计划 周讲 授 内 容 次 第九章 编译预处理 13 第十章 指针: 指针与地址的概念;变量的指针和指针变量的指针变量; 实验、26 其它 实 学时 习学时 实际进度 学时 完成 4 0 未完成 原因 第十章 指针: 14 数组的指针与指向数组的指针变量;字符串4 的指针与指向字符串的指针变量 第十章 指针: 指针与函数;指针数组;二级指针。 第十一章 结构体与共用体: 15 结构体类型的说明及结构体类型变量的定4 义 ; 结构体变量的引用; 结构体变量的初始化;结构体数组;指针与结构体数组; 第十一章 结构体与共用体: 16 指针与结构体数组;链表;共用体;枚举类型; typedef。 第十三章 文件: 17 文件类型指针;文件的打开与关闭;文件的读写。 4 4 复习 此表另备两份,一份送教研组留存,一份公布于有该课的班。

主讲教师签名: 教研室主任签名

7

实验一——程序的运行环境和运行C程序的方法

实验名称 程序的运行环境和运行C程序的方法 姓 名 学号 实验地点 实验目的 实 验 内 容 与 步 骤 班级 成绩 完成日期 1) 了解所用的计算机系统的基本操作方法,学会使用该系统 2) 了解在该系统上如何编辑、编译、连接和运行一个C程序 3) 通过运行简单的C程序,初步了解C源程序的特点 1) 检查所用的计算机系统是否已安装了C编译系统并确定它所在的子目录; 2) 进行所用的集成环境; 3) 熟悉集成环境的界面的有关菜单的使用方法; 4) 输入并运行一个简单的、正确的程序。 输入下面的程序(教材第1章例1.1): #include void main() { printf(\"This is a c program.\\n\"); } ① 根据前面介绍的方法对源程序进行编译,观察屏幕上显示的编译信息。如果出现“出错信息”,则应找出原因并改正之,再进行编译,如果无错,则进行连接。 ② 如果编译连接无错误,使程序运行,观察分析运行结果。 5) 输入并运行一个有错误的C程序。 ① 输入下面的程序((教材第1章例1.2,故意漏打或打错几个字符): #include void main() { int a,b,sum a=123;b=456; sum=a+b print(\"sum is %d\\n\ } ② 进行编译,仔细分析编译信息窗口,可能显示有多个错误,逐个修改,直到不出现错误。最 8

实 验 内 容 与 步 骤 后请与教材上的程序对照。 ③ 使程序运行,分析运行结果。 6) 输入并运行一个需要在运行时输入数据的程序; 输入下面的程序: #include void main() { } int max(int x,int y) { int z; if (x>y) z=x; else z=y; return (z); int max(int x,int y); int a,b,c; printf(\"input a & b;\"); scanf(\"%d,%d\c=max(a,b); printf(\"max=%d\\n\} ① 编译并运行,在运行时从键盘输入整数2和5,然后按“回车”键,观察运行结果。 ② 将程序中的第3行改为 int a; b; c; 再进行编译,观察其结果 ③ 将max函数中的第3、4两行合并写为一行,即 if (x>y) z=x; else z=y; 再进行编译运行,分析结果。 7) 运行一个自己编写的程序,题目是教材第1章习题1.6,即输入a、b、c 3个数,输出其中最大者。 ① 输入自己编写的源程序。 #include void main() 9

实 验 内 容 与 步 骤 { int a,b,c; printf(\"input a,b & c:\"); scanf(\"%d,%d,%d\max=a; if (c>max max=c; printf(\"max=%d\\n\ if (b>max) max=b; } ② 检查程序有无错误(包括语法错误和逻辑错误),有则改之。 ③ 编译和连接,仔细分析编译信息,如有错误应找出原因并改正之。 ④ 运行程序,输入数据,分析结果。 ⑤ 自己修改程序(例如故意改成错的),分析其编译和运行情况。 8) 将调试好的程序保存在自己的用户目录中,文件名自定。 9) 将关闭工作区,再重新打开该文件,检查内容是否是刚才存盘的程序。 10) 关闭VC集成环境,用Windows的“我的电脑”找到刚才使用的用户子目录,浏览其中文件,看有无刚才保存的后缀为.c和.exe的文件。 实验心得 10

实验二——数据类型、运算符和表达式

实验名称 姓 名 实验地点 1) 实验2) 目的 3) 数据类型、运算符和表达式 学号 它们赋值的方法。 掌握不同的类型数据之间赋值的规律。 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 班级 完成日期 成绩 掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对4) 进一步熟悉C程序的编辑、编译、连接和运行过程 实 验 内 容 与 步 骤 1) 输入并运行下面的程序: #include void main() { char c1,c2; c1='a'; c2='b'; printf(\"%c %c\\n\} ① 运行此程序。 ② 在上面的printf语句的下面再增加一个printf语句: printf(\"%d %d\\n\ 再运行,并分析结果。 ③ 将第3行改为: int c1,c2; 再使之运行,并分析结果。 ④ 再将第4、5行改为: c1=a; /*不用单撇号*/ c2=b; 再使之运行,并分析其运行结果。 ⑤ 再将第4、5行改为: c1=97; c2=98; 再使之运行,分析其运行结果。 ⑥ 再将第4、5行改为: c1=300; /*用大于255的整数*/ c2=400; 再使之运行,并分析其运行结果。 2) 输入并运行如下程序: #include void main() 11

实 验 内 容 与 步 骤 { char c1='a',c2='b',c3='c',c4='\\101',c5='\\116'; printf(\"a%c b%c\c%c\abc\\n\ printf(\"\\\b%c %c\\n\} 在上机前先用人工分析程序,写出相应结果,上机后将二者对照。 3) 输入并运行下面的程序: #include void main() { short int a,b; unsigned short c,d; int e,f; a=100; b=-100; e=50000; f=32767; c=a; d=b; printf(\"%d,%d\\n\printf(\"%u,%u\\n\printf(\"%u,%u\\n\c=a=e; d=b=f; printf(\"%u,%u\\n\printf(\"%u,%u\\n\} 请对照程序和运行结果分析: ① 将一个负整数赋给一个无符号的变量,会得到什么结果。画出它们在内存中的表示形式。 ② 将一个大于32767的整数赋给短整型变量(在VC环境下),会得到什么结果。画出它们在内存中的表示形式。 ③ 将一个整数赋给无符号短整型变量,会得到什么结果(分别考虑该长整数的值大于、等于或小于65535的情况)。画出它们在内存中的表示形式。 ④ 改程序中各变量的值,再比较。 4) 输入并运行教材第3章习题3.10(P67)即: 12

实 验 内 容 与 步 骤 #include void main() { int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(\"%d,%d,%d,%d\\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\} ④ 在③的基础上,将printf语句改为: printf(\"%d,%d\\n\⑤ 再将printf语句改为: printf(\"%d, %d,%d,%d\\n\⑥ 程序改为 #include void main() { int i,j,m=0,n=0; i=8; j=10; m+=++i; n-=j--; printf(\"i=%d,i=%d,m=%d,n=%d\\n\); } 5) 按习题3.6的要求编好程序,该题目的要求 13

实 验 内 容 与 步 骤 是:要将“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’,并输出。 ⑥ 输入事先已编好的程序,并运行该程序。分析是否符合要求。 ⑦ 改变c1、c2、c3、c4、c5的初值为:’T’、’o’、’d’、’a’、’y’,对译码规律做如下补充:‘W’用‘A’代替,‘X’用‘B’代替,‘Y’用‘C’代替,‘Z’用‘D’代替,修改程序并运行。 ⑧ 将译码规律修改为:将一字母用它前面的第4个字母代替,例如,“E”用“A”代替,‘Z’用‘U’代替,‘D’用‘Z’代替,‘C’用‘Y’代替,‘B’用‘X’代替,‘A’用‘V’代替,修改程序并运行。 14

实验心得 15

实验三——数据类型、运算符和表达式

实验名称 最简单的C程序设计 成绩 姓 名 学号 班级 实验地点 完成日期 实1) 掌握C语言中使用最多的一种语句——赋值语句的作用方法。 验目2) 掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。 的 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.78; 验 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\与 printf(\"f=%15.6f,g=%15.12f\\nm=%ld, 步 n=%ld\\np=%u,q=%u\\n\ } 骤 ⑥ 运行此程序并分析结果。 ⑦ 在此基础上,将程序第9~14行改为: a=61;b=62; c1=a;c2=b; f=3157.0121;g=0.1234567; d=f;e=g; p=a=m=50000;;q=b=n=-60000; 运行程序,分析结果。 16

实 验 内 容 与 步 骤 ⑧ 改用scanf函数输入数据而不用赋值语句,scanf函数如下: scanf(\"%d,%d,%c,%c,%f,%f,%lf,%lf, %ld,%ld,%u,%u\&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\\n d=%15.6f,e=%15.12f\\n\printf(\"f=%15.6f,g=%15.12f\\nm=%ld, n=%ld\\np=%d,q=%d\\n\运行程序。 ⑩ 将p、q改用%o格式符输出。 将scanf函数中的%lf和%ld改为%f和%d,运行程序并观察分析结果 2) 按要求编写程序,并上机运行。题目为:设半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积,圆柱体积。用scanf输入数据,输出计算结果。输出时要有文字说明,取小数点后两位数字。 17

实 验 内 容 与 步 骤 3) 编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。 实验心得 18

实验四——逻辑程序设计

实验名称 逻辑程序设计 成绩 姓 名 学号 班级 实验地点 完成日期 1) 了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真” )。 实2) 学会正确使用逻辑运算符和逻辑表达式。 验3) 熟练掌握if语句和switch语句。 目的 4) 结合程序掌握一些简单的算法。 5) 学习调试程序。 本实验要求事先编好解决下面问题的程序,然后 上机输入程序并调试运行程序。 (1). 有一函数: x(x1)  y2x1(1x10) 3x11(x10) 用scanf函数输入x的值,求y值。 运行程序,输入x的值(分别为x<1、实 1≤x<10、x≥10三种情况),检查输出的 y值是否正确 验 内 容 与 步 骤 19

实 验 内 容 与 步 骤 (2). 给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,81-分为B,70-79分为C,60-69分为D,60分以下为E。 ① 事先编好程序,要求分别用if语句和switch语句实现。运行程序,并检查结果是否正确。 ② 再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级。修改程序,使之能正确处理任何数据。当输入数据大于100或小于0时,通知用户“输入数据错”,程序结束。 20

实 验 内 容 与 步 骤 3). 给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数为321,应输出123。 应准备以下测试数据:  要处理的数为1位正整数;  要处理的数为2位正整数;  要处理的数为3位正整数;  要处理的数为4位正整数;  要处理的数为5位正整数。 除此之外,程序还应当对不合法的输入作必要的处理。例如:  输入负数;  输入的数超过5位(如123 456)。 (4). 输入4个整数,要求按由小到大顺序输出。 得到正确结果后,修改程序使之按由大到小顺序输出。 21

实 验 内 容 与 步 骤 (5). 根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型。 实验心得 22

实验五——循环控制

实验名称 循环控制 姓 名 实验地点 实验目的 实 验 内 容 与 步 骤 学号 班级 完成日期 成绩 1) 熟悉并掌握用while语句,do-while语句和for语句实现循环的方法。 2) 掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 3) 进一步学习调试程序。 本实验编程序并上机调试运行。 (1). 输入两个正整数m和n,求它们的最大公约数和最小公倍数。 在运行时,输入的值m>n,观察结果是否正确。 再输入时,使m实 验 内 容 与 步 骤 (3). 用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。 在得到正确结果后,请修改程序使所设的x初值由1.5改变为100、1000、10000,再运行,观察结果,分析不同的x初值对结果有没有影响,为什么? 修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。 24

实 验 内 容 与 步 骤 (4). 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。 在得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。请修改程序,并运行,检查结果是否正确。 实验心得 25

实验六——数组

实验名称 数组 姓 名 实验地点 实验目的 实 验 内 容 与 步 骤 学号 班级 完成日期 成绩 1) 掌握一维数组和二维数组的定义、赋值和输入输出的方法; 2) 掌握字符数组和字符串函数的使用; 3) 掌握与数组有关的算法(特别是排序算法。 编程序并上机调试运行。 (1). 用选择法对10个整数排序。10个整数用scanf函数输入。 (2). 有15个数存放在一个数组中,输入一个数,要求用查找找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。 26

实 验 内 容 与 步 骤 实验心得 (3). 将两个字符串连接起来,不要用strcat函数。 (4). 输出n行杨辉三角形,n由键盘输入(n小于等于15) 27

实验七——函数

实验名称 成绩 姓 名 学号 班级 实验地点 完成日期 1) 掌握定义函数的方法; 实2) 掌握函数实参与形参的对应关系以及“值传递”的方式; 验3) 掌握函数的嵌套调用和递归调用的方法; 目的 4) 掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。 学习对多文件程序的编译和运行。 本实验编程序并上机调试运行。 (1). 写一个判别素数的函数,在主函数输入一个整 数,输出是否素数的信息。 本程序应当准备以下测试数据:17、34、2,1、 0。分别输入数据,运行程序并检查结果是否正确。 实 验 内 容 与 步 骤 (2). 用一个函数来实现将一行字符串的内容按反序 存放,在主函数中输入和输出字符串. 把两个函数放在同一个程序文件中,作为一个文 件进行编译和运行。 把两个函数分别放在两个程序文件中,作为两个 文件进行编译、连接和运行。 28

实 验 内 容 与 步 骤 (3). 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意的整数。 (4). 求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数,用另一函数根据求出的最大公约数求最小公倍数。 ①不用全局变量,分别用两个函数求最大公约数和最小公倍数。两个整数在主函数中输人,并传送给函数l,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大公约数和最小公倍数。 29

实 验 内 容 与 步 骤 ②用全局变量的方法,分别用两个函数求最大公约数和最小公倍数,但其值不由函数带回。将最大公约数和最小公倍数都设为全局变量,在主函数中输出它们的值。 (5). 写一函数,输入一个十六进制数,输出相应的十进制数。 实验心得 30

实验八——编译预处理

实验名称 姓 名 实验地点 实验目的 实 验 内 容 与 步 骤 编译预处理 学号 班级 完成日期 成绩 1) 掌握宏定义的方法; 2) 掌握文件包含处理方法; 3) 掌握条件编译的方法。 编程序并上机调试运行。 (1). 定义一个带参数的宏,使两个参数的值互换。在主函数中输入两个数作为使用宏的实参,输出已交换后的两个值。 (2). 设计输出实数的格式,包括:①一行输出一个实数;②一行内输出两个实数;③一行内输出三个实数。实数用“% 6.2f”格式输出。 用一个文件Print-format.h包含以上用#define命令定义的格式。在自己的文件(自己命名)中用#include命令将print-format.h文件包含进来。在程序中用scanf函数读入三个实数给f1、f2、f3。然后用上面定义的三种格式分别输出:①f1;②f1、f2;③f1、f2、f3。 31

实 验 内 容 与 步 骤 实验心得 (3). 用条件编译方法实现以下功能: 输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下一字母(如'a'变成'b'„„'z'变成'a'。其他字符不变)。用#define命令来控制是否要译成密码。例如: 若#define CHANGE 1则输出密码。若#define CHANGE 0则不译成密码,按原码输出。 32

实验九——指针

实验名称 指针 成绩 姓 名 学号 班级 实验地点 完成日期 1) 通过实验进一步掌握指针的概念,会定义和使用指针变量; 实2) 能正确使用数组的指针和指向数组的指针变量; 验3) 能正确使用字符串的指针和指向字符串的指针变量; 目的 4) 能正确使用指向函数的指针变量; 5) 了解指向指针的指针的概念及其使用方法 编程序并上机调试运行程序(都要求用指针处理)。 (1). 输入三个整数,按由小到大的顺序输出, 然后将程序改为:输入三个字符串,按由小到大顺序 输出。 实 验 内 (2). 将一个3X3的矩阵转置,用一函数实现之。容 在主函数中用scanf函数输入以下矩阵元素: 1 3 5 与 7 9 11 13 15 19 步 将数组名作为函数实参,在执行函数的过程中实 函数调用结束后在主函数中输出已转置骤 现矩阵转置,的矩阵。 。 33

实 验 内 容 与 步 骤 (3). 有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 (4). 用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp (char * p1, char * p2); 设p1指向字符串s1,p2指向字符串s2,要求当s1=s2时,函数返回值为 0, 如果sl≠s2,则返回它们二者第一个不相同字符的ASCII码差值(如“BOY”与“BAD”的第二个字母不相同,“O”与“A”之差为79—65=14);如果sl>s2,则输出正值;如果sl实 验 内 容 与 步 骤 别求: 10sinxdx,cosxdx,edx,1012x 说明:sin、cos、exp已在系统的数学函数库中,程序开头要用#include。 (6). 用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n和各整数在主函数中输入,最后在主函数中输出。 实验心得 35

实验十——结构体与共用体

实验名称 姓 名 实验地点 实验目的 实 验 内 容 与 步 骤 学号 成绩 班级 完成日期 1) 掌握结构体类型变量的定义和使用; 2) 掌握结构体类型数组的概念和使用; 3) 掌握链表的概念,初步学会对链表进行操作; 4) 掌握共用体的概念与使用。 编程序,然后上机调试运行程序 (1). 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。 要求用input函数输入10个学生数据;用average函数求总平均分;用max函数找出最高分的学生数据;总平均分和最高分学生的数据都在主函数中输出。 (2). 13个人围成一圈,从第1个人开始顺序报号1、2、3。凡报到“3”者退出圈子,找出最后留在圈子中的人原来的序号。本题要求用链表实现。 36

实 验 内 容 与 步 骤 (3). 建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。 37

实 验 内 容 与 步 骤 (4). 输入和运行以下程序: union data { int i[2]; float a; long b; char c[4]; }u; main ( ) { scanf(\"%d,%d\printf(“i[0]=%d,i[1]=%da=%fb=%1dc[0]=%c, c[1]=%c,c[2]=%c,c[3]=%c “,u.i[0],u.i[1],u.a, u.b,u.c[0],u.c[1],u.c[2],u.c[3]); } 输入两个整数10000、20000给u.i[0]和u.i[l],分析运行结果。 然后将scanf语句改为: scanf(\"%ld\; 输入60000给b,分析运行结果 实验心得 38

实验十一——位运算

实验名称 姓 名 实验地点 实验目的 实 验 内 容 与 步 骤 位运算 学号 班级 完成日期 成绩 1) 掌握按位运算的概念和方法,学会使用位运算符; 2) 学会通过位运算实现对某些位的操作。 编程序,然后上机调试运行程序 (1). 编写一程序,检查所用的计算机系统的C编译在执行右移时是按照逻辑右移的原则,还是按照算术右移的原则进行操作。如果是逻辑右移,请编一个函数实现算术右移;如果是算术右移,请编一个函数实现逻辑右移。 (2). 编一个函数getbits,从一个16位的单元中取出某几 39

实 验 内 容 与 步 骤 位(即该几位保留原值,其余位为0)。函数调用形式为: getbits(value,n1,n2) value为该16位数的值,nl为欲取出的起始位,n2为欲取出的结束位。如: getbits(0101675,5,8) 表示对八进制数101675,取出其从左面起的第5位到第8位。 要求把这几位数用八进制数打印出来。注意,应当将这几位数右移到最右端,然后用八进制形式输出。 (3). 设计一个函数,使给出一个数的原码,能得到该数的 40

实 验 内 容 与 步 骤 补码。要求用八进制形式输入和输出。 实验心得 41

实验十二——文件

实验名称 姓 名 实验地点 实验目的 实 验 内 容 与 步 骤 文件 学号 班级 完成日期 成绩 1) 掌握文件以及缓冲文件系统、文件指针的概念; 2) 学会使用文件打开、关闭、读、写等文件操作函数; 3) 学会用缓冲文件系统对文件进行简单的操作。 编程序,然后上机调试运行程序 (1). 有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。 设5名学生的学号、姓名和3门课成绩如下: 99101 Wang ,98,67.5 99103 Li 60,80,90 99106 Fun 75.5,91.5,99 99110 Ling 100,50,62.5 99113 Yuan 58,68,7l 在向文件stud写入数据后,应检查验证stud文件中的内容是否正确。 (2). 将上题stud文件中的学生数据,按平均分进行排序 42

实 验 内 容 与 步 骤 处理,将已排序的学生数据存入一个新文件stu_sort中.在向文件stu_sort写入数据后,应检查验证stu_sort文件中的内容是否正确。 (3). 对上题已排序的学生成绩文件进行插入处理,插入一个学生的3门课成绩。程序先计算新插入学生的平均成绩, 43

实 验 内 容 与 步 骤 然后将它按成绩高低顺序插入,插入后建立一个新文件。要插入的学生数据为: 99108 Xin 90,95,60 在向新文件stu_new写入数据后,应检查验证stu_new文件中的内容是否正确。 实验心得 44

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