C语言程序设计案例教程(第2版)(txt+pdf+epub+mobi电子书下载)


发布时间:2021-02-24 19:13:57

点击下载

作者:刘会超,杨锋英

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

C语言程序设计案例教程(第2版)

C语言程序设计案例教程(第2版)试读:

前言

PREFACE

C语言是国内外应用广泛、最具影响力的计算机语言之一,是大学理工科专业学生的必修课。为使初学者对C语言有一个很好的入门,作者融合多年的教学经验和教学资源编写了本书。这是一本面向广大初学者的C语言教程,最大的特色是以任务导学、案例丰富、深入浅出、立体配套。针对初学者的特点,力求做到将复杂的概念用简洁浅显的语言娓娓道来。

本书的创新在于以能力培养为目标,用案例引入知识,用任务驱动教学。按照读者的认知规律和特点选择案例,把知识融入案例。围绕案例中的任务展开知识点教学,在实际任务的驱动下,引导读者学习C语言基础知识与编程技能,引导C语言教学从传统的“讲授+上机”模式向“做中学、学中做”模式转变。

书中每个案例包括任务描述、任务分析、解决方案和源程序4部分,并且提供与教学案例相关知识的习题和

实训项目

作为读者练习巩固之用。为了保证知识的系统性与完整性,拓宽知识面,在相关案例后增加了相关知识与知识拓展;另外,本书还配有电子教学参考资料包(包括书中所有案例的源代码、电子教案、习题参考答案)。

本书内容共分为11章,第1章认识C语言,第2章简单的C语言程序,第3章分支结构程序设计,第4章循环结构程序设计,第5章函数,第6章数据类型与数据的输入/输出,第7章数组,第8章指针,第9章结构体,第10章文件,第11章综合案例——学生成绩管理系统,以及附录和参考书目。在内容上,新版教程删除了第1版的“常用算法”章节,增加了一个“综合案例——学生成绩管理系统”章节。变更主要是考虑到算法在一些专业的实际教学中用不到,且内容比较浅显,而综合案例可以为相关专业的课程设计教学或综合实训提供支持。

本书由刘会超和杨锋英担任主编,崔英杰、魏雪峰、汪洋、吴海涛担任副主编。第2、3、4章由崔英杰编写,第1、10章由魏雪峰编写,第9章由汪洋编写,第6章由吴海涛编写,第8、11章由刘会超编写,第5、7章及附录由杨锋英编写。全书由耿红琴统稿审核。

由于编写时间仓促,书中难免有疏漏和不妥之处,衷心希望广大读者,尤其是任课教师提出宝贵的意见和建议,以便再版时修正。编者2019年5月目录封面扉页版权信息前言

第1章 认识C语言

案例1 用计算机求解圆的面积

相关知识——计算机求解问题的步骤

案例2 使用Dev-C++环境

相关知识——C语言的程序结构

知识拓展——算法

本章小结

习题

实训项目

第2章 简单的C语言程序

案例1 超市收费程序的设计

相关知识——算术表达式与赋值表达式

案例2 超市促销活动收费程序的设计

相关知识——二分支if语句

案例3 超市收银程序的设计

相关知识——while语句

本章小结

习题实训项目

第3章 分支结构程序设计

案例1 计算阶梯电费

相关知识——关系表达式与逻辑表达式

相关知识——if语句

案例2 简单算术计算器的设计

相关知识——switch语句

案例3 自动售货机商品价格的查询

本章小结

习题实训项目

第4章 循环结构程序设计

案例1 日积硅步相关知识——for语句案例2 寻找行李箱密码相关知识——do-while语句案例3 幸运编号相关知识——break语句与continue语句案例4 打印九九乘法表相关知识——多重循环案例5 猜数游戏相关知识——随机函数案例6 百钱买百鸡相关知识——穷举法案例7 八戒吃西瓜本章小结习题实训项目第5章 函数案例1 居民日常计费系统相关知识——函数基础案例2 最小公倍数相关知识——函数的嵌套调用案例3 “魔幻”长方体相关知识——变量进阶案例4 猜年龄相关知识——递归思想案例5 汉诺塔游戏案例6 幕后英雄相关知识——编译预处理本章小结习题实训项目第6章 数据类型与数据的输入/输出6.1 数据类型6.2 数据的输入/输出6.3 运算符和表达式6.4 类型转换本章小结习题第7章 数组案例1 天外有天相关知识——一维数组的增删改查操作案例2 网店热销手机排行榜相关知识——冒泡排序与选择排序案例3 揪心的房价相关知识——折半查找案例4 生存游戏相关知识——筛法案例5 矩阵转置相关知识——二维数组案例6 杨辉三角形案例7 信息加密处理相关知识——字符数组与字符串处理操作案例8 统计单词个数案例9 进制转换本章小结习题实训项目第8章 指针案例1 寻找存折密码相关知识——指针与指针变量案例2 拨云见日相关知识——指针的交换案例3 猜宝游戏相关知识——指针作为函数参数案例4 产品使用寿命统计分析相关知识 —— 一维数组与指针案例5 实现简单电子表格相关知识——二维数组与指针案例6 信息解密相关知识——字符指针案例7 常任理事国国名的字典次序相关知识——指针数组与多级指针案例8 我的程序我作主相关知识——带参的main案例9 由我差遣相关知识——函数指针与指针函数案例10 我心飞翔相关知识——动态内存空间管理函数本章小结习题实训项目第9章 结构体案例1 学生信息表相关知识——结构体的定义与结构体变量案例2 民主选举得票统计相关知识——结构体数组案例3 输出班长的基本信息相关知识——结构体指针案例4 摸球游戏相关知识——枚举类型案例5 设计教师与学生通用的表格相关知识——共用体类型本章小结习题实训项目第10章 文件案例1 导出学生信息到文件相关知识——文件的基本操作案例2 学生信息的导入案例3 学生信息的备份相关知识——文件定位函数本章小结习题实训项目第11章 综合案例——学生成绩管理系统综合案例 学生成绩管理系统相关知识——创建链表相关知识——遍历链表相关知识——在链表中插入节点相关知识——删除链表中的节点本章小结习题附录A ASCII码表附录B C语言运算符的优先级与结合性参考书目第1章 认识C语言

学习目标

通过本章内容的学习,使读者熟悉Dev-C++环境,掌握在其中创建、编辑、编译、运行C语言项目的过程,并且掌握C语言程序的基本格式和用计算机解决问题的思路、方法和步骤。

主要内容

♦ 程序设计的基本概念。

♦ 用计算机解决问题的思路、方法和步骤。

♦ C语言程序的基本格式。

♦ Dev-C++环境的使用。案例1 用计算机求解圆的面积【任务描述】

输入圆的半径,计算其面积。【任务分析】

该任务中的量有3个,即圆的半径、圆周率及圆的面积,其中圆周率是已知量;圆的半径和圆的面积是未知量;圆的半径是在计算机运行程序时输入的,而圆的面积是利用公式圆周率×半径的平方求得的。【解决方案】(1)定义符号PI表示圆周率3.14159。(2)定义实型变量r和area,r表示半径,area表示圆的面积。(3)调用函数scanf为半径r输入数据。(4)将PI和r代入面积公式求圆的面积area。(5)输出圆的面积area。【源程序】【说明】

从这个案例中可以了解一个C语言程序的基本结构和书写格式。

C语言程序由函数组成,每一个C语言项目的文件中有且只能有一个主函数(main函数),它指示计算机执行程序时的入口。

double r,area;是变量定义语句,用来定义实数类型变量r和area,分别保存圆的半径和面积。

printf()和scanf()是两个函数调用,其中printf函数的功能是把输出内容输出到显示器;scanf函数的功能是从键盘输入指定类型的数据。二者都是由系统定义的标准函数,可在程序中直接调用,但使用时需在程序开头添加预编译命令“#include ”。

将这段程序代码在 Dev-C++开发环境中编辑后,通过 C 语言的编译系统编译并运行。程序首先提示用户输入圆的半径,然后计算圆的面积,最后在屏幕上显示所求圆的面积。相关知识——计算机求解问题的步骤(一)程序和程序设计语言

1.程序

计算机诞生之前就有了“程序”的概念,《现代汉语词典》解释“程序”就是事情进行的先后次序,如日常说的“工作程序”“会议程序”等,本书所讲的程序是计算机程序。

计算机程序是让计算机完成某项特定任务而编写的一组指示计算机工作的指令。计算机就像一个士兵,无条件地服从长官(程序员)的命令。为了完成一项任务,长官下达的一系列命令就是“程序”。

简单的程序只有几条指令,而复杂的程序多达数千万条指令。任务的规模越大,内容越复杂,所需要的程序指令就越多,程序的结构也就越复杂。仅一个Windows操作系统就有几千万条的指令,所以给计算机下命令需要团队的集体智慧。

为了有效地指挥计算机工作,需要开展程序设计。这是设计、编写、调试程序的方法和过程,是目标明确的智力活动。它要求程序员首先对需要完成的任务有一个比较清晰的认识,然后按照计算机可以识别的方式来组织相应的指令以形成程序。最后将程序提交给计算机执行,从而完成预定任务。由于任务的复杂性和多样性,因此程序设计工作也不可能一蹴而就。需要在设计过程中不断地修改和完善,最终满足任务的需求,这就是程序的调试和测试过程。

2.程序设计语言

程序设计语言为程序员编写一个好的程序提供了所需要的抽象机制、组织原则及控制结构,其一基础是一组符号和一组规则,符号按照规则构成的符号串的总体就是程序设计语言。程序设计语言包含3个要素,即语法、语义和语用。语法表示程序的结构或形式,包括构成程序设计语言的各个符号之间的组合规律,但不涉及这些符号的特定含义及使用者;语义表示程序的含义,包括程序设计语言中各个符号及按语法形成的符号串的特定含义,也不涉及使用者;语用就是程序设计语言的实际应用,是人和计算机之间沟通的工具。

机器语言是计算机所能直接识别的语言,是由0和1(即二进制)组成的指令序列。由于人们书写和理解二进制数据存在一定的困难,于是诞生了汇编语言。

汇编语言用英文字母或符号串来替代机器语言,把不易理解和记忆的机器语言按照对应关系转换成汇编指令,使得汇编语言比机器语言易于阅读和理解。但是汇编语言依赖于硬件,程序的可移植性差。而且程序员在使用新的计算机时必须学习该机器对应的汇编指令,大大增加了工作量,为此产生了高级语言。

高级语言比汇编语言更接近人类的自然语言,因此易于理解、记忆和使用。常见的高级语言有C、C++、Java、Python等。高级语言不能被计算机直接识别,需要将其“翻译”成机器语言,这个过程称为“编译”(也称为“解释”)。编译过程由相应计算机语言的编译程序自动完成,不需要手工处理。(二)计算机求解问题的步骤

计算机求解问题是人们解决某一问题的方法和步骤的计算机化,或者说是通过计算机来表达人们对某一问题的解决方法。一般来说,用计算机解决一个具体问题时,首先从具体问题抽象出一个适当的数学模型;其次设计一个解此数学模型的算法;最后编制程序进行调试与测试,直至得到最终解。具体来说使用计算机求解问题的步骤包括问题分析与算法设计、编写、编译,以及运行与调试程序,下面以案例1为例说明。

1.问题分析与算法设计

为了计算圆的面积,根据问题描述需要输入圆的半径。然后根据2圆的面积公式(πr)求出圆的面积,算法设计如下:(1)为计算机提供圆的半径值(输入)。(2)根据计算公式求圆的面积(处理)。(3)将计算的结果显示在屏幕上(输出)。

2.编辑程序

为了让计算机能代替人工完成以上流程,需要将以上流程转化成计算机可以识别的指令序列(即程序),下面的代码是运用C语言对这个任务的计算机描述:

3.编译

编好程序(C语言源程序文件,扩展名为 .c)后,下一步运用C语言的编译器对其进行编译形成可执行的程序(扩展名为 .exe)。

4.运行与调试

程序通过语法检查,编译生成可执行文件后在Dev-C++集成开发环境或操作系统环境中运行(Run)。

如果程序有语义错误,则需要对程序进行调试,即查找并修改错误。

在Dev-C++环境中调试过程常用的方法是设置断点并观察变量。(1)设置断点:在Dev-C++环境的当前语句行按F4键,设置断点标记(默认语句行的底色变为红色,并且行首有断点标记红点,其中有对号),程序调试到此行停下。如果当前语句行已经设置断点标记,则在该语句行按F4键取消断点标记。(2)观察变量:对于设置断点的程序,按F5键开始单步调试,即将执行的调试行底色变为蓝色且行首变为蓝色箭头。

Dev-C++环境的调试器如图1-1所示。图1-1 Dev-C++环境的调试器

当程序运行到设有断点行时暂停执行,程序员此时可以通过单击【添加查看】按钮设置需要观察的变量,在调试输出窗口中给出该程序行之前此变量的当前值。

Dev-C++源程序及调试输出窗口如图1-2所示。图1-2 Dev-C++源程序及调试输出窗口

判断变量的当前值是不是所预期的,如果不是,说明该断点之前有错误发生;如果是,说明该断点之前满足要求,单击【下一步】按钮或者按 F7键继续。通过设置断点与观察变量可以有效地排查程序的出错范围。

结束调试按F9键或者单击【停止执行】按钮。【思考题】(1)思考C语言程序的基本结构。(2)模仿案例1,输入长方形的长和宽,计算并输出长方形的面积。案例2 使用Dev-C++环境【任务描述】

利用Dev-C++环境完成基本对话程序的运行。【任务分析】

完成本任务首先需要成功安装并启动Dev-C++,然后创建项目和程序文件,使用该环境的编辑和编译功能将源程序转换为可执行程序后运行该程序得到结果。【解决方案】

在安装并配置Dev-C++之后(本书采用的是简体中文版),双击桌面上的快捷方式,或者单击【开始】→【所有程序】→【Bloodshed Dev-C++】下的Dev-C++程序,都可以打开Dev-C++的运行界面,如图1-3所示。图1-3 Dev-C++的运行界面

为创建一个工程,打开【文件】下拉菜单,如图1-4所示。图1-4 【文件】下拉菜单

选择【新建】→【项目】命令,弹出【新项目】对话框。打开【Basic】选项卡,选择“Empty Project”选项和“C项目”单选按钮,如图1-5所示。图1-5 选择“Empty Project”选项和“C项目”单选按钮

在【名称】文本框中输入项目名“第1章”,单击【确定】按钮,弹出【另存为】对话框,如图1-6所示。图1-6 【另存为】对话框

在【保存在】下拉列表框中选择保存路径,本例为“E:\源程序”。单击【保存】按钮,打开创建成功的界面,如图1-7所示。图1-7 创建成功的界面

在编辑区域中输入程序1_2.c的代码:

按 Ctrl+S 组合键或者单击主工具栏中的保存按钮或者选择【文件】→【保存】命令,弹出【保存为】对话框,如图1-8所示。图1-8 【保存为】对话框

在【文件名】文本框中输入文件名“1_2”,保存类型选择为“C source files(*.c)”。单击【保存】按钮,将该程序保存在“E:\源程序\第1章”中。按F9键或者单击编译运行工具栏中的按钮或者选择【运行】→【编译】命令,C语言编译器编译该程序,编译结果如图1-9所示。图1-9 编译结果

从程序1_2.c的编译信息看出在编译时没有错误和警告,得到可执行文件“第1章.exe”。按F10键或者单击编译运行工具栏中的按钮或者选择【运行】→【运行】命令,程序的运行结果如图1-10所示。图1-10 程序1_2.c的运行结果

第1行是程序输出的运行结果;第2行是系统给出的分隔线;第3行 “Process exited after 0.07013 seconds with return value 0”是程序运行时间;第4行是暂停信息,有助于用户查看程序运行的结果,并提示用户按任意键关闭窗口,回到编辑界面。

程序运行结束后,在创建项目的目录(本书是“E:\源程序\第1章”)中可以看到其中已经生成多个文件。除扩展名为“.c”和“.dev”的文件外,其他文件均可删除。因为每次运行项目文件(扩展名为“.dev”)后,再次编译C语言源程序文件均可产生这些文件。为解决其他文件过多的问题,可以在同一个项目中建立多个C语言源程序文件。这样只有扩展名为“.o”的文件会增加,而其他文件并不增加。

例如,在工程“第1章”中继续使用【New File】命令创建C语言源程序文件“未命名2”,将其保存为“1_1.c”,如图1-11所示。图1-11 保存为“1_1.c”

在C语言源程序文件1_1.c的编辑界面中输入案例1的代码,在这两个C语言源程序文件中均存在main函数。由于在一个项目的活动文件中只能有一个main函数,因此在【项目管理】选项卡中用鼠标右键单击源程序文件1_2.c,弹出如图1-12所示的快捷菜单。

在源程序1_2.c 的相关操作中,选择【移除】命令,则该文件将从当前项目中移除,成为不活动文件。

注意:此处移除1_2.c 文件仅仅是在当前【项目管理】选项卡中临时移除。如果再次使用该文件,则用鼠标右键单击项目名称“第1章”,弹出如图1-13所示的快捷菜单,选择【添加】命令。图1-12 快捷菜单图1-13 选择【添加】命令相关知识——C语言的程序结构(1)一个 C 语言项目可以由多个源程序文件组成,但只有加载到【项目管理】选项卡中的项目为活动项目。在活动项目下的源程序文件为活动文件,每个活动文件可以由多个函数组成。(2)每个函数由一个或多个程序行组成,每个程序行可以有一个或者多个语句,每个语句以英文分号(;)结束。(3)每个语句可以写在一个或多个程序行中,若分行书写,则在尾部加右斜杠“\”或者Enter键。同一个关键字或者字符串不能分行,建议每个语句单独占一个语句行。(4)C语言程序中使用花括号“{”和“}”表示一个完整的程序的结构层次范围,二者必须成对使用。(5)为了增加程序的可读性,C语言程序采用缩进格式书写,即加入适量的空格和空行。C语言编译系统忽略这些空格和空行,一般以默认4个空格为倍数缩进,可通过【工具】菜单项设置,变量名、函数名和C语言保留字中间不能加入空格。

若所写代码没有按缩进格式要求书写,则在VC 6.0环境下编辑程序后按Ctrl+A组合键全选程序代码,然后按Alt+F8组合键自动对齐代码,即格式重排;在Dev-C++环境中按Ctrl+Shift+A组合键或者选择【AStyle】→【格式化当前文件】命令重排当前源文件的格式。(6)C语言程序采用/*…*/(块注释)对程序进行注释,以增加程序的可读性。【思考题】(1)C语言程序中注释的作用。(2)模仿程序1_2.c,要求在屏幕上显示“HELLO WORLD!”。知识拓展——算法(一)C语言概述

1.C语言的发展

C语言的前身是ALGOL60(也称为“A语言”)。

1963年,英国剑桥大学和伦敦大学首先将ALGOL60发展成CPL(Combined Programming Language)。

1967年,英国剑桥大学的 Martin Richards 将 CPL 改写成 BCPL(Basic Combined Programming Language)。

1970年,美国贝尔实验室的Ken Thompson将BCPL修改成B语言,并用B语言开发了第1个使用高级语言的操作系统——UNIX。

1973年,美国贝尔实验室的Dennis M.Ritchie在B语言的基础上设计出了一种新的语言。他取BCPL的第2个字母作为这种语言的名字,即C语言。

1978年,美国贝尔实验室正式发布了 C 语言。同年,Brian W.Kernighan和Dennis M.Ritchie合作出版了著名的The C Programming Language一书,其中介绍的C语言成为后来广泛使用的C语言版本的基础。

1983年,美国国家标准局(American National Standards Institute,ANSI)制定了C语言标准。这个标准不断完善,并在1989年通过了C语言标准ANSI X3.159—1989,即C89。

1990年,国际标准化组织(International Organization for Standards,ISO)也制定了ISO9899—1990标准,被称为“C90”。C89与C90只有细微的差别,因此通常所说的C89和C90指的是同一个版本。

1999年,ISO修订C90标准后推出了C99标准。

2.C语言的特点

C语言被誉为当代最优秀的程序设计语言之一,具有独特的优势。(1)C语言是高级语言,却把高级语言的基本结构和语句与低级语言的实用性结合起来。即可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。(2)C语言是结构化语言,显著特点是代码及数据的分隔,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于编写、维护及调试。C语言以函数形式提供给用户,这些函数可方便调用,并具有多种循环语句控制程序流向,使程序完全结构化。(3)C语言功能齐全,具有多种数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现复杂的决策。C语言在编写需要执行硬件操作的程序时明显优于其他高级语言,有一些大型系统软件就是用C语言编写的。(4)C语言应用指针可以直接操作底层硬件,但对指针操作不做保护,也给程序开发带来了不安全的因素。(5)C语言适用范围非常广,早期的C 语言主要是用于UNIX系统。由于C语言的强大功能和各方面的优点逐渐为人们认识,所以到了20世纪80年代开始进入其他操作系统,当前C语言已广泛应用于Windows、Linux、UNIX等多种操作系统。C语言适用于多种机型,在各类大、中、小和微型计算机上得到了广泛的使用,在嵌入式系统领域的应用也非常多。(6)C语言开发环境非常丰富,常用的有VC 6.0、Dev-C++、Code::Blocks、Borland C++ Builder、Turbo C、C-Free、Win-TC、Xcode等。(7)C 语言对程序员要求较高,用 C 语言写程序限制少、灵活性大、功能强,但较其他高级语言在学习上要困难一些。

3.C语言的符号与规则(1)C语言的字符集。

字符是组成语言的最基本的元素,C语言字符集由字母、数字、空格、标点和特殊字符组成。在字符型常量、字符串常量和注释中还可以使用汉字或其他可表示的图形符号。

● 字母:小写字母a~z共26个,大写字母A~Z共26个。

● 数字:0~9共10个。

● 空白符:空格符、制表符、换行符等统称为“空白符”,只在字符型常量和字符串常量中起作用。在其他位置出现时,只起间隔作用,编译程序忽略不计。在程序中适当使用空白符将提高程序的清晰性和可读性。

● 标点和特殊字符。(2)C语言词汇。

在C语言中使用的词汇分为如下6类。

● 标识符:在程序中使用的变量名、函数名、标号等统称为“标识符”。除库函数的函数名由系统定义外,其余函数的函数名都由用户自己定义。C语言规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下画线(_)组成的字符串,并且其第1个字符必须是字母或下画线。

合法的标识符如A、x、x3、BOOK_1、sum5。

非法的标识符如3s(以数字3开头)、s*T(出现非法字符*)、+3x(以非法字符+开头)、bowy-1(出现非法字符-)。

在使用标识符时必须注意:一是标准C语言不限制标识符的长度,但受各种版本的C语言编译系统和具体机器的限制;二是C语言是大小写敏感语言,如BOOK、BOOk、Book、book是4个不同的标识符;三是标识符虽然可由程序员随意定义,但它是用于标识某个量的符号。因此命名应尽量有相应的意义,以便于阅读理解,做到“见名知义”。例如,PI表示圆周率,area变量表示所求圆的面积;四是标识符不要与系统所提供的关键字重名。

● 关键字:关键字是由C语言规定的具有特定意义的字符串,通常也称为“保留字”,用户定义的标识符不应与关键字相同。C语言的关键字有3类,一是类型声明符,用于定义、声明变量、函数或其他数据结构的类型,如前面例题中用到的int、double等;二是语句定义符,用于表示一个语句的功能,如if…else…就是条件语句的语句定义符;三是预处理命令字,用于表示一个预处理命令,如前面各例中用到的include。

● 运算符:C语言中含有相当丰富的运算符,由一个或多个字符组成。它与常量、变量、函数一起组成表达式,表示各种运算功能。

● 分隔符:在C语言中采用的分隔符有逗号和空格两种,逗号主要用在类型声明和函数参数表中,分隔各个变量;空格多用于语句中的单词之间,作为间隔符。在关键字与标识符之间必须要有一个以上的空格符作为间隔,否则将会出现语法错误。例如,把“int a;”写成“inta;”,C编译器会把“inta”作为一个标识符处理,其结果必然出错。

● 常量:C语言中使用的常量可分为数值常量、字符型常量、符号常量、转义字符等多种,在后面章节中将专门给予介绍。

● 注释符:C 语言的注释符是以“/*”开头并以“*/”结尾的块,在“/*”和“*/”之间的内容为注释,可出现在程序中的任何位置。程序编译时,不处理注释。注释用来解释程序的意义,以增加其可读性。在调试程序中对暂不使用的语句也可用注释符括起来使编译跳过不做处理,待调试结束后删除。

4.书写程序时应遵循的规则

从书写清晰,以及便于阅读、理解和维护的角度出发,在书写程序时应遵循以下规则。(1)一个声明或一个语句占一行。(2)用花括号“{}”括起的部分通常表示程序的某一层次结构,左花括号“{”可以单独占一行,也可以与函数名或者语句放在同一行;右花括号“}”一般与该结构语句的第1个字母对齐,并单独占一行。(3)低一层次的语句或说明可比高一层次的语句或说明缩进若干个空格(通常为4个)后书写,以便看起来更加清晰,增加程序的可读性。(4)在逗号后面、语句中间的分号后面、双目运算符的两侧、关键字的两侧都可以加上空格,以达到规范的要求。

在编程时应力求遵循这些规则,以养成良好的编程风格。(二)程序的灵魂——算法

一个程序应包括对数据的描述(在程序中要指定数据的类型和数据的组织形式,即数据结构)及对操作的描述(即操作步骤,也就是算法)。

著名的瑞士计算机科学家沃思(Nikiklaus Wirth)提出的公式为:数据结构 + 算法 = 程序

1.算法的概念

做任何事情都有一定的步骤,为解决一个问题而采取的方法和步骤即为算法,计算机算法可分为两大类,即数值运算类算法(求解数值)和非数值运算类算法(事务管理领域)。【例1-1】求5!(5!=1×2×3×4×5)。

算法1表示如下。

第1步:先求1×2,得到结果2。

第2步:将上步得到的2继续与3求乘积得到结果6。

第3步:将上步得到的6继续与4求乘积得到结果24。

第4步:将上步得到的24继续与5求乘积得到结果120。

这样的算法虽然简单、正确,但太烦琐,不利于问题的扩展。

算法2(改进的算法)表示如下。

第1步:定义变量t并为其赋值1,即t=1。

第2步:定义变量i并为其赋值1,即i=1。

第3步:执行t×i,乘积仍然放在变量t中。可表示为t×i→t,即t=t×i。

第4步:修改变量i的值,使其增加1,即i=i+1。

第5步:判断i是否小于等于5,即i≤5;若成立,则返回第3步继续执行;否则算法结束。

如果计算10!,算法1较麻烦;算法2只需将第5步中的“i≤5”改成“i≤10”即可。

如果求“1×3×5×7×9×11”,算法1比较麻烦;算法2只需将第4步中“修改变量i的值,使其增加1,即i=i+1”改成“修改变量i的值,使其增加2,即i=i+2”,并将第5步中的“i≤5”改成“i≤11”即可实现。【思考】若将算法2中第5步的“i≤5”修改成“若i<5”,结果如何?【例1-2】有50个学生,要求将他们之中成绩在80分以上者打印出来。

如果用n表示学生数,grade表示学生成绩,则算法可表示如下。

第1步:1→n。

第2步:输入grade。

第3步:如果grade≥80,则打印n和grade;否则不打印。

第4步:n+1→n。

第5步:若n≤50,返回第2步;否则结束。【例1-3】找出2000—2500年中的闰年,并输出结果。

闰年的判断条件如下。(1)能被4整除,但不能被100整除的年份。(2)能被400整除的年份。

设y为被检测的年份,则算法可表示如下。

第1步:2000→y。

第2步:若y不能被4整除,则转到第5步。

第3步:若y能被4整除且不能被100整除,则输出y“是闰年”,然后转到第5步。

第4步:若y能被400整除,则输出y“是闰年”,然后转到第5步。

第5步:y+1→y。

第6步:当y≤2500时,返回第2步继续判断;否则结束。【例1-4】对一个大于或等于2的正整数,判断它是不是一个素数。

素数又称为“质数”,即除了1和它本身外不能被其他数整除的数。

算法可表示如下。

第1步:输入n的值。

第2步:i = 2。

第3步:n对i求余,得余数r。

第4步:如果r = 0,表示n能被i整除并结束;否则继续。

第5步:i+1→i。

第6步:如果i≤n-1,返回第3步;若i = n,则结束。

第7步:若i = n,则打印n“是素数”;否则打印n“不是素数”。

算法改进如下。

第6步:如果,返回第3步;若i = n,则结束。

2.算法的特性(1)有穷性:一个算法应包含有限的操作步骤。(2)确定性:算法中每一个步骤应当是确定的,而不能是含糊的、模棱两可的。(3)可行性:算法中每一个步骤应当能有效地执行,并得到确定的结果。(4)输入:有零个或多个输入。(5)输出:有一个或多个输出。

程序员必须会设计算法,并根据算法写出程序。

3.算法的表示(1)用自然语言表示。

除了很简单的问题,一般不用自然语言表示算法。(2)用流程图表示。

流程图表示算法直观形象,易于理解。流程图有多种,如程序流程图、N-S图、PAD图等,本书以程序流程图为例。

程序流程图包括表示相应操作的框和带箭头的流程线,框内有必要的文字说明,程序流程图的基本符号如图1-14所示。图1-14 程序流程图的基本符号【例1-5】将例1-1求5!的算法用程序流程图表示,如图1-15所示。【例1-6】将例1-3判定闰年的算法用程序流程图表示,如图1-16所示。图1-15 求5!算法的程序流程图图1-16 判定闰年的算法的程序流程图本章小结

本章通过求圆的面积问题引入了C语言的程序,并介绍了程序与程序设计语言、计算机求解问题的步骤。通过案例2说明了Dev-C++环境使用,以及C语言程序在其中的编辑、编译、运行的过程。然后介绍了C语言程序结构、C语言发展史及特点、标识符的命名规则、程序书写应该遵循的规则,并且讲解了算法的概念、特性及其流程图表示方法。习题

一、选择题

1.C语言属于______语言。

A.机器    B.汇编     C.高级      D.自然

2.一个C语言源程序总是从活动文件中的______开始执行。

A.主函数           B.书写顺序的第1条执行语句

C.书写顺序的第1个主函数    D.不确定

3.Dev-C++下将C语言源程序文件编译生成的可执行文件的扩展名是______。

A..c      B..exe      C..obj      D..ini

4.下列有关main函数的位置描述中,正确的是_______。

A.必须作为第1个函数      B.必须作为最后一个函数

C.必须放在它所调用的函数之后   D.任意

5.下列选项中,_______是C语言合法标识符。

A.for     B.8book     C._8book     D._8b*k

6.下列选项中,不属于C语言优点的是_______。

A.简洁、高效         B.运用二进制语言编写程序

C.不依赖计算机硬件       D.可移植

7.下列选项中,属于C语言的注释是_______。

A.//      B.#       C./*  */     D.以上均不是

二、填空题

1.程序设计是指设计、编制、______程序的方法和过程。

2.在DEV-C++开发环境中,C语言源程序文件名的后缀是______。

3.C语言本身提供的语句很少,许多功能是通过______来实现的。

4.C语言中的语句是以______结束的。

5.C语言程序中可以有多个函数,但总是从______开始执行。

6.C语言程序中,如果使用printf函数或者scanf函数,应该包含______头文件。

三、问答题

1.简述计算机解决问题的基本过程。

2.简述程序设计的步骤。实训项目

一、利用Dev-C++环境运行C语言程序(1)实训目标。

● 熟悉Dev-C++环境,掌握一个C语言程序的编辑、编译及运行过程。

● 掌握简单的调试方法。(2)实训要求。

● 编辑并运行如下程序:

● 编辑如下有两处错误的程序,并采用插入断点和单步调试观察变量查错,修改正确后运行该程序:

二、摄氏温度与华氏温度的转换问题(1)实训目标。

● 利用计算机完成摄氏温度转换为华氏温度。

● 熟悉顺序结构程序的设计方法。(2)实训要求。

● 用C语言编写将摄氏温度转换为华氏温度的程序。

● 新建一个以“学号+姓名”命名的工程,将编写的程序以“sx_1”为名存入新建工程对应的文件夹中。

● 调试并运行该程序。第2章 简单的C语言程序

学习目标

通过学习本章内容,使读者具备编写C语言中简单的顺序、分支、循环3种程序结构的能力,了解基本数据类型的使用环境,以及代数表达式转换为C语言表达式的方法。并且理解赋值运算符的作用,熟练掌握运用赋值运算符为变量赋值的方法,巧用自增、自减运算符实现对变量值的运算。

主要内容

♦ 顺序结构程序的编写。

♦ 分支结构程序的编写。

♦ 循环结构程序的编写。

♦ 基本数据类型的介绍。

♦ 常量与变量。

♦ 算术运算符与算术表达式。

♦ 赋值表达式。

♦ 自增、自减运算符。案例1 超市收费程序的设计【任务描述】

已知购买298套运动衣,每套单价为216.8元,请编写程序计算应付金额。【任务分析】

本任务中涉及的量有运动衣的套数298、每套单价216.8元、应付金额,其中套数及单价是已知量,需要通过单价乘以套数得到未知量——应付金额。

若要计算应付金额,需用单价乘以套数。用计算机来完成这一计算,需要将已知量、计算公式和计算过程用C语言编写程序,输入计算机调试运行,即可得出结果。【解决方案】(1)定义整型变量x表示所购运动衣套数。(2)定义实型变量y和z分别表示运动衣的单价及应付金额。(3)为整型变量x赋值298,为实型变量y赋值216.8。(4)运用算术运算符乘(*)计算应付金额并赋值给实型变量z。(5)调用函数printf输出应付金额z。(6)结束程序。【源程序】【说明】

本程序的主要特点是按照解决问题的顺序写出相应的语句,执行顺序为按照书写次序自上而下依次执行,这种程序的结构属于顺序结构。【思考题】(1)试分析顺序结构程序的应用范围。(2)计算64.32与85.56的和及平均值。(3)求上底为8、下底为13.2、高为5.97(单位:厘米)的梯形面积。相关知识——算术表达式与赋值表达式(一)常量与变量

1.常量

在程序执行过程中,其值不改变的量为常量。

常量分为不同的类型,如298、0、-12为整型常量;216.8、9.6、-0.7为实型常量;'a'、'b'、'c’等为字符型常量。有时为了使程序更加清晰和便于修改,用一个标识符来代表常量。即为某个常量取个有意义的名字,这种常量称为“符号常量”。

使用关键字const定义符号常量,如:

注意符号常量也是常量,它的值在其作用域内不能改变,也不能再被赋值。例如,再次使用以下语句为PI赋值:

是错误的。

习惯上符号常量名用大写字母来表示,变量名用小写字母来表示,以示二者的区别,并增加程序的可读性。

2.变量

在程序执行过程中,其值可以改变的量为变量。

一个变量必须有一个名字,在内存中占据一定的存储单元,在该存储单元中存放变量的值。注意变量名和变量值是两个不同的概念,变量名在程序运行中不会改变;变量值会变化,在不同时刻其值可以不同。

变量名是一个标识符,必须遵守标识符的命名规则。

在程序中常量可以不经声明而直接引用,而变量则必须强制定义(声明),即“变量必须先声明,后使用”,如本章案例1中定义x、

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载