用户投稿、充值登录入口  |  用户注册 |  退出登录
首 页文章社会科学搜榜改进建议哲学宗教政治法律文化科教语言文字医学管理资源艺术资料数理化天文地球专业技术教育资源建筑房地产
当前位置:e书联盟文章

C语言程序设计(第2版).pdf 作者-宁爱军 张艳华 主编120页

减小字体 增大字体 作者:佚名  来源:转载  发布时间:2020-12-31 10:16:26
内容简介:
    本书共14章。章1~第3章介绍程序设计与C语言的基础知识;第4章~第7章介绍顺序、选择、循环和数组的算法与程序设计;第8章~11章介绍函数、编译预处理、指针、结构体和链表等;第12章、第13章介绍位运算与文件;第14章介绍几个综合的编程实例。
目录菜单:
    封面,扉页,版权,第2版前言,第1章 程序设计基础,1.1 程序设计语言,1.2 计算机的组成与程序设计的本质,1.3 算法的概念和特性,1.4 算法的表示方法,1.5 结构化的程序设计方法,习题,第2章 Visual C++6.0简介,2.1 Visual C++6.0简介,2.2 Visual C++6.0的安装与启动,2.3 Visual C++6.0的集成开发环境,2.4 Visual C++6.0的帮助,2.5 Visual C++6.0中的C语言程序设计,习题,第3章 数据类型、运算符与表达式,3.1 C语言的数据类型,3.2 变量与常量,3.3 整型数据,3.4 实型数据,3.5 字符型数据,3.6 字符串,3.7 算术运算符和算术表达式,3.8 数据类型的转换,习题,单元测试,第4章 顺序结构程序设计,4.1 C语句概述,4.2 C程序的注释,4.3 顺序结构程序设计,4.4 常见的编程错误及其调试,习题,单元测试,第5章 选择结构程序设计,5.1 关系运算与逻辑运算,5.2 选择结构算法设计,5.3 if语句,5.4 switch语句,5.5 选择结构的嵌套,5.6 条件运算符,习题,单元测试,第6章 循环结构程序设计,6.1 循环结构概述,6.2 当型循环结构,6.3 直到型循环,6.4 for循环语句,6.5 break语句和continue语句,6.6 循环的嵌套,6.7 循环结构编程举例,6.8 goto语句★,习题,单元测试,第7章 数组,7.1 一维数组,7.2 二维数组,7.3 字符数组,习题,单元测试,第8章 函数,8.1 函数的定义和调用,8.2 数组作为参数,8.3 函数的嵌套调用,8.4 函数的递归调用,8.5 变量的作用域,8.6 变量的存储类别和生存期,8.7 程序的模块化设计,习题,第9章 编译预处理,9.1 宏定义,9.2 文件包含,9.3 条件编译,习题,第10章 指针,10.1 地址和指针,10.2 变量的指针和指向变量的指针变量,10.3 数组的指针和指向数组的指针变量,10.4 字符串的指针和指向字符串的指针变量,10.5 函数的指针和指向函数的指针变量★,10.6 返回指针值的函数,10.7 指针数组和指向指针的指针,习题,第11章 其他数据类型,11.1 结构体,11.2 结构体数组,11.3 指向结构体类型数据的指针,11.4 链表,11.5 共用体,11.6 枚举类型,11.7 用typedef定义类型,习题,第12章 位运算,12.1 位运算符和位运算,12.2 位运算程序实例,习题,第13章 文件,13.1 文件概述,13.2 文件指针,13.3 文件的打开与关闭,13.4 文件的读写,习题,第14章 综合程序设计,14.1 Windows窗体程序设计,14.2 排序算法比较,14.3 个人通讯录,习题,附录Ⅰ Visual C++6.0常见错误提示,附录Ⅱ ANSI C常用库函数,参考文献
文本摘要:
    工业和信息化普通高等教育“十三五”规划教材立项项目21世纪高等教育计算机规划教材C语言程序设计(第2版)■宁爱军 张艳华 主编■满春雷 赵奇 编著人民邮电出版社北京图书在版编目(CIP)数据◆人民邮电出版社出版发行  北京市丰台区成寿寺路11号邮编 100164  电子邮件 315@ptpress.com.cn网址 http://www.ptpress.com.cn北京缤索印刷有限公司印刷◆开本:787×1092 1/16印张:14.5  2016年1月第1版字数:412千字  2016年1月北京第1次印刷定价:00.00元读者服务热线:(010)81055256 印装质量热线:(010)81055316反盗版热线:(010)81055315第2版前言C语言是结构化的程序设计语言,它功能丰富、使用灵活、可移植性好,广泛应用于科学计算、工程控制、网络通信、图像处理等领域。C语言是特别相宜作为学习程序设计的语言,也是实用性较强的编程语言。本书以Visual C++6.0为编程环境,通过分析问题、设计算法、编写和调试程序的步骤,重点培养学生分析问题和算法设计的能力,以及对语言和语法知识的理解和掌握。力求弥补以往在程序设计课程教学中的不足,使学生不但能掌握语言语法知识,还能够培养自己设计算法、编写程序解决实际问题的能力。教师选用本书作为教材,可以根据授课学时情况适当取舍教学内容。教学建议如下。(1)倘若学时充分,建议系统学习全部内容。倘若学时较少,建议以第1~11章为教学重点。后续章节可以在选修课或课程设计中介绍,也可以建议学生自学。(2)学习第3章时,先重点掌握简朴格式的输入输出方法,在需要使用复杂格式的输入输出时再回来学习。(3)学习第4~7章时,应该先进行问题分析、算法设计,后进行程序设计和程序调试。注意培养分析问题、解决问题的能力。(4)学生应该认真完成课后习题,以巩固语言和语法知识,培养实际编程能力,力求达到全国计算机等级考试(二级C语言)要求的水平。(5)各章学习资源可以在“本章资源”二维码指向的网址下载。(6)允许初学者不立刻学习带★的内容,可以在以后需要时再返回学习。本书的作者都是长期从事软件开发和大学程序设计课程教学的一线教师,具有丰富的软件开发和教学经验。本书由宁爱军和张艳华任主编,负责全书的总体策划、统稿和定稿。第1~3章由张艳华编写,第4~8章由宁爱军编写,第9~11章由满春雷编写,第12~14章由赵奇编写。对本书的编写工作做出贡献的还有熊聪聪、杨光磊、李伟、窦若菲、王燕、张浥楠等老师。本书的编写和出版,还得到了天津科技大学各级领导的关怀和老师的指导,在此一并表示感谢。本书是作者多年软件研发和教学经验的总结,但是由于水平有限,书中肯定还存在很多缺点和不足,恳请专家和读者批评指正。联系信箱:ningaijun@sina.com。编者2015年9月第1章 程序设计基础本章资源本章主要介绍程序的概念及程序设计语言的分类、C语言的发展历史与特点、程序设计的本质、算法及算法表示方法、结构化的程序设计等内容。目的是使读者初步了解程序设计的内容与方法。1.1 程序设计语言计算机和人类之间不能完全使用自然语言进行交流,需要借助计算机能够理解并执行的“计算机语言”。和人类语言类似,计算机语言是语法、语义与词汇的集合,它用来表达计算机程序。计算机语言也称为程序设计语言。程序设计语言种类较多,C语言是最常用的程序设计语言之一,通过对C语言的扩充还产生了如C++、Java、C#等语言。各种语言具有相通之处,因此学好C语言可以为学习其他语言打下基础。1.1.1 什么是程序人们操作计算机完成各项工作,实际上是由计算机执行其中各种程序实现的,如操作系统、文字处理程序、手机内置的各类应用程序等。简朴的程序可能仅仅向屏幕输出一段符号,而复杂的程序可以实现更多功能。程序是用来完成特定功能的一系列指令。通过向计算机发布指令,程序设计人员可以控制其执行某些操作或进行某种运算,从而解决一个详细问题。一个程序总是按照既定顺序执行,完成编程人员设计的任务。虽然每个程序内部执行顺序可能不同,完成的任务有大有小,但程序编译成功进入执行状态后,其功能是不能被随心所欲修改的,除非重新编写、编译并执行程序。1.1.2 语言的分类自计算机诞生以来,产生了上千种程序设计语言,有些已被淘汰,有些则得到了推广和发展。程序设计语言经历了由低级到高级的发展过程,可以分为机器语言、汇编语言、高级语言和面向对象的语言。低级语言包括机器语言和汇编语言;高级语言有很多种,包括C、Basic、Fortran等;面向对象的语言包括C++、Visual Basic、Java等。越低级的语言越接近计算机的二进制指令,越高级的语言越接近人类的思维方式。1.机器语言机器语言是计算机能够直接识别并执行的二进制指令,执行效率高。但机器语言指令由计算机的指令系统提供,采用二进制,人们阅读与编写比较困难,效率低下,容易出错。不同计算机的指令系统也不同,使得机器指令编写的程序通用性较差。2.汇编语言汇编语言采用助记符来代替机器语言的指令码,使机器语言符号化,编程效率得到提高。如加法表示为ADD,指令“ADD AX,DX”的含义是将AX寄存器中的数据与DX寄存器中的数据相加,并将结果存入AX内。汇编程序要转换成二进制形式交由计算机执行,因此执行效率逊于机器语言。使用汇编语言编程,程序设计人员需要对机器硬件有深入了解,没有挣脱对详细机器的依赖,编程仍旧具有较大难度。3.高级语言为了解决计算机硬件的高速度和程序编制的低效率之间的矛盾,20世纪50年代末期产生了“程序设计语言”,也称高级语言。高级语言比较接近自然语言,直观、精确、通用、易学、易懂,编程效率高,便于移植。例如,语句“c=a+b”表示“求a+b的和,并将结果存入c中”。高级语言有上千种,但实际应用的仅有十几种,如Basic、Pascal、C、Fortran、ADA、COBOL、PL/I等。4.面向对象的程序设计语言面向对象的程序设计语言更接近人们的思维习惯。它将事物或某个操作抽象成类,将事物的属性抽象为类的属性,事物所能执行的操作抽象为方法。常用的面向对象语言有 Visual C++、Visual Basic、Java等。计算机不能直接识别高级语言,需要借助编译软件将高级语言编写的源程序转换成计算机能识别的目标程序。程序执行有编译执行和解释执行两种方式。(1)编译执行方式是将整个源程序翻译生成一个可执行的目标程序,该目标程序可以脱离编译环境和源程序独立存在和执行。(2)解释执行方式是将源程序逐句解释成二进制指令,解释一句执行一句,不生成可执行文件,它的执行速度比编译方式慢。1.1.3 C语言简介C语言的诞生源于系统程序设计的深入研究和发展。它作为书写UNIX操作系统的语言,伴随着UNIX的发展和流行而得到发展与普及。(1)1967年,英国剑桥大学的M.Richards在CPL(Combined Programming Language)语言的基础上,实现了BCPL(Basic Combined Programming Language)语言。(2)1970年,美国贝尔实验室的K.Thompson以BCPL语言为基础,设计了一种类似于BCPL的语言,称为B语言。他用B语言在PDP-7机上实现了第一个实验性的UNIX操作系统。(3)1972年,贝尔实验室的D.M.Ritchie为克服B语言的诸多不足,在B语言的基础上重新设计了一种语言,由于是B的后继,故称为C语言。(4)1973年,贝尔实验室的K.Thompson和D.M.Ritchie合作,用C语言重新改写了UNIX操作系统。此后随着UNIX操作系统的发展,C语言的应用越来广泛,影响越来越大。此时的C语言主要还是作为实验室产品在使用,并依赖于详细的机器,直到 1977 年才出现了独立于详细机器的C语言编译版本。随着微型计算机的普及,C语言版本也呈现多样化。由于没有统一标准,这些语言之间出现了许多不一致的地方。为了改变这种情况,美国国家标准学会(ANSI)为C语言制定了一套ANSI标准,就是标准C语言。1983年,美国国家标准学会颁布了C语言的新标准版本“ANSI C”。“ANSIC”比标准C语言有了很大的补充和发展。目前C语言的最新版本为ANSI C99,VC++也支持该标准。C语言使用灵活,并具有强盛生命力,已经广泛应用于科学计算、工程控制、网络通信、图像处理等领域。C语言是结构化的程序设计语言,具有如下特点。(1)语言简洁、使用灵活,便于学习和应用。C语言的书写形式较其他语言更为直观、精炼。(2)语言表达能力强。运算符达30多种,涉及的范围广,功能强。(3)数据结构系统化。C语言具有现代语言的各种数据结构,并具有数据类型的构造功能,因此便于实现各种复杂的数据结构的运算。(4)控制流结构化。C语言提供了功能很强的各种控制流语句(if、while、for、switch等),并以函数作为主要结构,便于程序模块化,符合现代程序设计风格。(5)C语言生成的程序质量高,程序运行效率高。实验表明,C语言源程序生成的可执行程序的运行效率仅比汇编语言的效率低10%~20%。C语言编程速度快,程序可读性好,易于调试、修改和移植,这些长处是汇编语言无法比拟的。(6)可移植性好。统计资料表明。C语言程序80%以上的代码是公共的,因此稍加修改就能移植到各种不同型号的计算机上。C语言也存在一些不足之处,如编程自由度比较大。但总的来说,C语言是一个精彩而有效的现代通用程序设计语言。1.1.4 C语言组成C程序由函数构成。一个C程序至少由一个函数构成,而且至少包含一个名为main的主函数。函数由函数首部和函数体组成。函数首部指出函数的类型和函数名,函数体由若干条语句构成,语句的末尾用分号表示。【例1.1】用一个main函数构成的程序,向屏幕输出字符串“I like Programming!”。#include<stdio.h>//预处理命令,用于包含文件<stdio.h>void main( ) //函数首部,main是函数名,即主函数{ printf("I like Programming!\n"); //函数printf输出双引号内的普通字符程序的运行结果如下。说明:(1)函数可以分成函数首部和函数体。花括弧“{}”括起来的是函数体。(2)语句由一些基本字符和定义符按照C语言的语法规定组成。每个语句以分号结束。(3)“//”后边的文字为注释,它们不执行,不影响程序的运行。1.2 计算机的组成与程序设计的本质程序设计与计算机组成有密切关系,学习计算机组成方面的知识,可以更好地理解程序设计的本质。1.2.1 计算机系统结构“计算机之父”冯·诺依曼提出的计算机系统结构如下。(1)计算机由控制器、运算器、存储器、输入设备和输出设备5个部分构成。(2)计算机指令和数据均以二进制数形式表示和存放。(3)计算机按照程序规定的顺序将指令从存储器中取出,并逐条执行。控制器集中控制其他设备。信息分为数据信息和控制信息两种。如图1-1所示,在控制指令的控制下,数据按照如下方式“流动”:由输入设备输入数据,存储在存储器中,控制器和运算器直接从存储器中取出数据(包括程序代码和运算对象)进行处理,结果存储在存储器内,并由输出设备输出。图1-1 冯·诺依曼体系结构1.2.2 程序设计的本质程序设计的本质是设计能够利用计算机的5个部件完成特定任务的指令序列。【例1.2】用键盘输入价格与斤数,计算樱桃的总价。#include<stdio.h>void main(){ int price,number,total;scanf("%d%d",&price,&number); //输入两个整数total=price*number;   //计算,将price乘以number的积存入totalprintf("total=%d\n",total); //输出,%d处对应输出total的值在运行程序时输入数据“10 3”后按“回车键”,显示总价为30,程序的运行结果如下。说明:(1)整个程序保存在计算机的存储器中。(2)数据存储在存储器中。3个变量price、number和total,分别占用一块存储空间,用于存放价格、斤数和总价。(3)通过键盘输入价格与斤数。(4)由运算器来执行乘法,求出总价。(5)通过输出设备显示程序执行的结果。通过本例可见,一个程序离不开5个部件的配合。一个程序可以没有输入,但是一定要有输出才能知道程序的运行结果。1.2.3 程序设计的过程程序设计的一般过程如表1-1所示,在编程解决详细问题时,一般应按照这6个步骤,逐一实施来完成程序。表1-1 程序设计过程1.分析和定义实际问题通过对实际问题的深入分析,准确地提炼、描述要解决的问题,找出已知与未知,明确要求。2.建立处理模型实际问题都是有一定规律的数学、物理等过程,用特定方法描述问题的规律和其中的数值关系,是为确定计算机实现算法而做的理论准备。如求解图形面积一类的问题,可以归结为数值积分,积分公式就是为解决这类问题而建立的数学模型。3.设计算法将要处理的问题分解成计算机能够执行的若干特定操作,也就是确定解决问题的算法。例如,由于计算机不能识别积分公式,需要将公式转换为计算机能够接受的运算,如选择梯形公式或辛普森(Simpson)公式等。4.设计流程图在编写程序前给出处理步骤的流程图,能直观地反映出所处理问题中较复杂的关系,从而在编程时思路清晰,避免出错。流程图是程序设计的良好辅助工具,它作为程序设计资料也便于交流。5.编写程序编程是指用某种高级语言按照流程图描述的步骤写出程序,也叫做编码。使用某种语言编写的程序叫源程序。6.调试程序和运行程序调试程序和运行程序就是将写好的程序上机检查、编译、调试和运行,并纠正程序中的错误。1.3 算法的概念和特性编写程序之前,首先要找出解决问题的方法,并将其转换成计算机能够理解并执行的步骤,即算法。算法设计是程序设计过程中的一个重要步骤。1.3.1 什么是算法算法即解决一个问题所采取的一系列步骤。著名的计算机科学家Nikiklaus Wirth提出如下公式:程序=数据结构+算法其中,数据结构是指程序中数据的类型和组织形式。算法给出了解决问题的方法和步骤,是程序的灵魂,决定如何操作数据,如何解决问题。同一个问题可以有多种不同算法。1.3.2 算法举例计算机程序的算法,必须是计算机能够运行的方法。理发、吃饭等动作计算机不能运行,而加、减、乘、除、比较和逻辑运算等就是计算机能够执行的操作。【例1.3】求1+2+3+4+…+100。第一种算法是书写形如“1+2+3+4+5+6+…+100”的表达式,其中不能使用省略号。这种算法太长,写起来很费时,且常常出错。第二种算法是利用数学公式:相比之下,第二种算法要简朴得多。但是,并非每个问题都有现成的公式可用,如求100!=1×2×3×4×5×…×100。【例1.4】求5!=1×2×3×4×5。step1: p=1step2: i=2step3: p=p×istep4: i=i+1step5: 倘若i<=5,那么转入step3执行step6: 输出p,算法结束其中p和i是变量,它们各占用一块内存,变量中存储的数据是可以改变的。如图1-2所示。变量可以被赋值,也可以取出值参加运算。本例通过循环条件“i<=5”,使得乘法操作被执行4次。图1-2 变量示意【例1.5】求1×2×3×…×100。step1: p=1step2: i=2step3: p=p×istep4: i=i+1step5: 倘若i<=100,那么转入step3执行step6: 输出p,算法结束只需要在【例1.4】算法的基础上,将循环条件改为“i<=100”,使得乘法操作执行99次就可以求出100个数的乘积。【例1.6】求1×3×5×…×101。step1: p=1step2: i=1step3: p=p×istep4: i=i+2step5: 倘若i<=101,那么转入step3执行step6: 输出p,算法结束只需要将i的初值改为1、每次循环增加2就可以了。读者在学习过程中要多观摩已有的程序,分析其算法,并力求有所创新。1.3.3 算法的特性算法应该具有以下特性。(1)有穷性。算法经过有限次的运算就能得到结果,而不能无限执行或超出实际可以接受的时间。倘若一个程序需要执行1000年才能得到结果,对于程序执行者而言,基本就没有什么意义了。(2)确定性。算法中的每一个步骤都是确定的,不能含糊、模棱两可。算法中的每一个步骤不应当被解释为多种含义,而应当十分明确。比如,描述“小王递给小李一件他的衣服”,这里,衣服毕竟是小王的,还是小李的呢?(3)输入。算法可以有输入,也可以没有输入,即有0个或多个输入。(4)输出。算法必须有一个或多个输出,用于显示程序的运行结果。(5)可行性。算法中的每一个步骤都是可以执行的,都能得到确定的结果,而不能无法执行。比如,用0作为除数就无法执行。1.4 算法的表示方法算法的表示方法有很多种,常用的有自然语言、伪代码、传统流程图、N-S流程图、PAD图等。本节主要讲述常用的算法表示方法,其中流程图是学习和掌握的重点。1.4.1 自然语言使用自然语言,就是采用人们日常生活中的语言。如求两个数的最大值,可以表示为倘若A大于B,那么最大值为A,否则最大值为B。但在描述“陶陶告诉贝贝她的小猫丢了”时,表示的是陶陶的小猫丢了还是贝贝的小猫丢了呢?此处就出现了歧义。可见使用自然语言表示算法时拖沓冗长,容易出现歧义,因此不常使用。1.4.2 伪代码

C语言程序设计(第2版).pdf下载链接:https://max.book118.com/html/2020/1217/8000052045003027.shtm

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

栏目导航

Copyright © 2005-2020 www.book118.com. All Rights Reserved