扫描二维码,下载安卓APP
下载安卓APP箭头
客服QQ
箭头给我发消息

客服QQ:2698585038

新概念C语言能力教程

综合评级:
★★★★★

定价:
¥39.00

作者:
周二强 著

出版社:
电子工业出版社

出版日期:
2015年8月

页数:
304

字数:
486400

ISBN:
9787121261039

书籍介绍

本书以先进的教学理念为指导,以培养编程能力与学习能力为目标,从全新的角度解析了C语言,高屋建瓴地阐释了C语言学习中的诸多难点,对序列点、指针等概念深入浅出的分析更是引人深思。本书主要内容包括计算机和C语言、基本数据类型、表达式、逻辑运算和选择结构、循环结构、数组、函数、预处理、指针、用户自定义数据类型、文件、位运算和数字化信息编码。

本书概念准确,举例通俗易懂,分析精辟且分析过程完整清晰。针对关键的学习内容,为初学者提供了行之有效的学习方法。因此,这不仅是一本与众不同的C语言教材,还是一本支持自学的C语言教材。本书既可作为高等学校C语言课程的教材,也可作为社会培训用书。

作者简介

周二强,河南省城建学院计算机学院副教授,河南省计算机学会理事。多次获得省级、校级优秀讲师称号。一直从事C语言教学工作,出版过多部教材。

目录

第1章 计算机C语言

章节导学

本章讨论

1.1 用户、计算机和程序员

1.2 C语言、计算机和程序员

1.3 C语言自定义命令——函数

1.3.1 使用C语言函数

1.3.2 函数定义

1.3.3 函数调用

1.3.4 main函数

1.4 “懂”C语言的计算机

1.4.1 虚拟的C计算机

1.4.2 用VC 6.0编译程序

1.5 编写程序代码

1.5.1 C语言语法规则

1.5.2 printf函数的用法

1.5.3 用VC 6.0观察程序运行的过程

1.6 C语言语句简析

练习1

本章讨论提示

第2章 基本数据类型

章节导学

本章讨论

2.1 计算机中的数据

2.2 整型

2.2.1 整型的类别

2.2.2 整型字面量

2.2.3 整型数据的输入/输出

2.2.4 查看整数的存储状态

2.2.5 整型的使用

2.3 浮点型

2.3.1 浮点型的类别

2.3.2 浮点型字面量和浮点型数据的输入/输出

2.3.3 浮点型的误差

2.4 字符型

2.4.1 字符型数据的编码

2.4.2 字符型字面量

2.4.3 字符型数据的输入和输出

2.5 printf函数的使用

2.6 典型例题

知识扩展

练习2

本章讨论提示

第3章 表达式

章节导学

本章讨论

3.1 概述

3.2 赋值表达式

3.2.1 赋值操作符

3.2.2 类型不匹配时的赋值操作

3.2.3 复合赋值操作符

3.3 算术表达式

3.3.1 算术表达式求值

3.3.2 强制类型转换操作符

3.3.3 自增自减操作符

3.4 逗号表达式

3.5 典型例题

知识扩展

练习3

本章讨论提示

第4 章逻辑运算和选择结构

章节导学

本章讨论

4.1 C语言中的“逻辑型”

4.2 关系表达式

4.3 逻辑表达式

4.3.1 逻辑操作符

4.3.2 逻辑表达式求值

4.4 if选择结构

4.4.1 if选择结构的作用

4.4.2 if选择结构的用法

4.5 if...else选择结构

4.5.1 if...else选择结构的形式和用法

4.5.2 选择结构嵌套

4.6 条件操作符

4.7 switch选择结构

4.7.1 基本的switch选择结构

4.7.2 有break语句的switch选择结构

4.8 典型例题

练习4

第5章 循环结构

章节导学

本章讨论

5.1 while循环结构

5.1.1 while循环结构分析

5.1.2 while循环结构用法

5.2 for循环结构

5.2.1 for循环结构分析

5.2.2 for循环结构用法

5.3 break语句和continue语句

5.4 循环嵌套

5.5 do...while循环结构

5.6 典型例题

练习5

第6章 数组

章节导学

本章讨论

6.1 一维数组

6.1.1 一维数组定义

6.1.2 一维数组初始化

6.1.3 一维数组应用

6.2多维数组

6.2.1 二维数组定义及初始化

6.2.2 二维数组应用

6.2.3 三维数组简介

6.3 字符型数组和字符串

6.3.1 字符型数组应用

6.3.2 字符串简介

6.3.3 字符串的输入/输出

6.3.4 字符串处理

6.4 综合实例

练习6

本章讨论提示

第7章 函数

章节导学

本章讨论

7.1 函数定义

7.2 函数调用与函数声明

7.2.1 函数调用分析

7.2.2 函数声明的作用

7.2.3 使用参数类型为一维数组的函数

7.3 作用域

7.3.1 变量作用域

7.3.2 文件作用域扩展

7.3.3 全局变量作用域可扩展的原因

7.3.4 使用关键字static限制文件作用域

7.4 用函数编程

7.4.1 用函数编程示例

7.4.2 函数重用

7.5 递归

7.5.1 递归算法与递归函数

7.5.2 递归算法示例

7.6 库函数简介

7.6.1 getchar函数、getch函数和getche函数

7.6.2 rand函数、srand函数和time函数

7.6.3 字符串处理函数

7.7 综合实例

知识扩展

练习7

本章讨论提示

第8章 预处理

章节导学

本章讨论

8.1 程序编译

8.2 宏定义

8.2.1 简单宏

8.2.2 参数化宏

8.3 文件包含

8.4 条件编译

练习8

本章讨论提示

第9章 指针

章节导学

本章讨论

9.1 指针类型

9.1.1 变量的左值和右值

9.1.2 指针变量的定义和赋值

9.2 指针变量的作用

9.2.1 指针操作符

9.2.2 指针变量的用法

9.2.3 空指针

9.3 指针与函数

9.3.1 指针作为函数参数

9.3.2 指针作为函数返回值

9.4 地址可以参与的运算

9.5 指针与数组

9.5.1 指针与一维数组

9.5.2 指针与二维数组

9.5.3 指向数组型存储单元的指针变量

9.5.4 指针与字符串

9.6 main函数和命令行参数

9.7 指向函数的指针变量

9.8 使用堆空间

9.9 典型例题

知识扩展

练习9

第10章 用户自定义数据类型

章节导学

本章讨论

10.1 结构型

10.1.1 结构型的定义

10.1.2 结构型指针变量

10.1.3 链表

10.2 联合型

10.3 枚举型

10.4 为类型自定义别名

知识扩展——存储单元的类型

练习10

第11章 文件

章节导学

本章讨论

11.1 文件概述

11.1.1 C语言文件

11.1.2 文本文件与二进制文件

11.2 文件的打开和关闭

11.2.1 (新建后)打开文件

11.2.2 文件关闭

11.3 文件读/写

11.3.1 fputc函数和fgetc函数

11.3.2 文件结束状态

11.3.3 fprintf函数和fscanf函数

11.3.4 fwrite函数和fread函数

11.4 标准设备文件

11.5 文件随机读/写

11.5.1 调整文件当前位置指针变量指向的位置

11.5.2 既可读又可写的文件

练习11

第12章 位运算

章节导学

本章讨论

12.1 位操作符

12.1.1 按位与操作符&

12.1.2 按位或操作符|

12.1.3 异或操作符^

12.1.4 取反操作符~

12.1.5 左移操作符<<

12.1.6 右移操作符>>

12.2 位运算示例

12.3 位段

练习12

本章讨论提示

第13章 数字化信息编码

章节导学

本章讨论

13.1 二进制数

13.1.1 位权

13.1.2 十进制数转换成二进制数

13.1.3 二进制数的计算

13.2 计算机的计算

13.3 整数的编码

13.4 计算机中整数的特点

13.4.1 整数加法示例

13.4.2 须参与运算的补码符号位

13.4.3 计算机中整数构成一个环

13.5 小数的编码

13.5.1 定点小数

13.5.2 浮点数编码

13.5.3 浮点数的特点

13.6 字符的编码

13.6.1 机内码

13.6.2 输入码和字形码

13.7 八进制数和十六进制数

附录AC语言关键字

附录B格式化输入/输出

附录CASCII码表

附录D常用的C语言库函数

附录EC语言操作符

参考文献

前言

教育需要改革已是共识,但怎样改却仁者见仁,智者见智。尽管高分的学生很多,但高分的背后却是令人望而生畏的、枯燥乏味的付出,高分的取得并不总与“高能”相关。学习本该是快乐的,这种快乐也许是若有所思的初探,也许是“众里寻他千百度,蓦然回首,那人却在灯火阑珊处”的顿悟,也许是欣然忘食的会意。快乐的学习,不以为苦的付出,品质的锤炼和才干的增长,这才是教与学的目标。

目前,C语言教学的改革多集中在实践教学环节。强调实践教学,培养学生的实际动手能力,让学生从实践中获得知识确实可以提高一部分学生的学习兴趣,教学效果也不错。尽管不是“满堂灌”,但片面强调以练促学本身也有填鸭式教学的嫌疑。理论来源于实践,但理论可指导实践,只有在理论指导下的实践才是最有效的实践。现有的C语言教学改革或多或少忽视了理论对实践的指导意义。教(理论)与练(实践)的关系需要辩证地理解和把握,体现教师主导作用的“教什么和怎样教”是教学改革的关键,毕竟太多的学生还不知道“学什么和怎么学”。下面简介本书的一些做法以抛砖引玉。

1、第1章就让学生明白什么是编程以及C语言怎样控制计算机。

C语言是计算机专业学生接触的第一门专业基础课,也是大多理工科学生学习的第一门编程语言。“万事开头难”,学生对C语言的第一印象非常重要。C语言有什么用?怎样编程呢?初次接触C语言的学生可能会有许许多多的疑问。

C语言用于控制计算机,C语言命令需要由计算机执行,计算机的一些特性直接体现在C语言中,因此,在了解计算机的基础上学习C语言将会事半功倍。

C语言教学内容的改革从C语言的第一节课开始。首先介绍计算机由五大部件组成,分析每个部件的作用。接着与工厂类比,工厂制造产品,计算机处理数据,强调两者的工作流程类似。制造产品时,需要为工厂设计详细的加工流程;处理数据时,同样也需要为计算机设计详细的工作步骤,因为计算机只是一台机器。最后通过分析得到结论:编程就是设计算法,即为计算机设计详细的工作步骤。

理解计算机的组成和工作流程后,就可以开始编程了。当用计算机求用户输入的两个整数之和时,怎样为计算机设计工作步骤呢?根据计算机的组成,参照工厂的生产模式,可以尝试让学生设计算法。

第1步:在显示器上提示用户输入两个整数;第2步:获得用户的输入,并把输入的数据存储到内存中;第3步:运算器求和,并把计算结果转存到内存中;第4步:在显示器上输出计算结果。也许可以顺利地为计算机设计出工作步骤,也许会遇到这样或那样的困难。只要主动地参与到问题的解决过程中,即使没能设计出算法,也会有较大的收获。这样的尝试和参与不仅能加深对计算机的理解,还能培养分析解决问题的能力。

计算机的五大组成部件在C语言中有着对应:输入设备对应于scanf函数,输出设备对应于printf函数,内存对应于变量,运算器对应于表达式,控制器对应于语句的顺序。程序员借助C语言命令指挥计算机工作。只要设计出了算法,把算法中的步骤翻译成C语言语句就简单多了。第1步控制计算机在显示器上输出信息时,只需用printf函数即可;第2步获得用户输入时,只需用scanf函数即可;第3步求和时,只需用“+”号即可;第4步输出计算结果时,依然需要用printf函数。

在教学实践中,基于上面的教学安排,大部分学生在上第一节课时就能理解“什么是编程”这个C语言课程中的核心问题,并能主动尝试编程,还能初步掌握怎样把算法步骤翻译成C语言语句。由于教学内容极具吸引力,大部分学生积极参与教学过程,切实发挥他们的主观能动性,课堂上真正呈现出师生良性互动、深入沟通的大好局面。

教师的主导作用主要体现在教学内容的选择上,“教什么和不教什么”是关键,教是为了不教。背景知识需要教,因此,需要分析计算机的组成和工作流程,但具体问题,如让计算机求用户输入的两个整数之和时,怎样为计算机设计工作步骤,就需要学生利用背景知识自主分析,发挥主体作用讨论解决了。

2、强调理解,更强调分析。

不能以死记硬背的方式学习知识,知识需要理解,但更需要分析。表达式的求值规则最为典型。C语言表达式求值时先考虑序列点,再考虑优先级,最后考虑结合性。如果不理解序列点的作用,遇到有序列点的表达式时就只能记忆“求值规则”了。例如,逗号表达式的求值顺序是自左向右依次求值,逗号表达式“i=j,++j”中自增操作符的优先级最高,为何不根据优先级先执行自增操作呢?难免会有学生提出这样的疑问。由于逗号操作符的优先级最低,故逗号表达式“i=j,++j”中逗号操作符左边的操作数为子表达式i=j,右边操作数为子表达式++j。又因为逗号操作符有序列点,所以其左操作数i=j会先于右操作数++j求值。可见序列点可以让低优先级的操作符先于高优先级的求值。靠记忆而不是理解表达式的求值规则,不仅使学生对C语言知识的认知残缺不全,而且会影响自主学习的积极性,更不利于创新能力的培养。

因此含有序列点的表达式求值时,要保证有序列点的操作符左边的由子表达式构成的操作数先于其右边的操作数求值。在表达式2*5+3中,加法操作符右边的操作数为3,但其左边的操作数不是5而是子表达式2*5,因为进行加法操作时不可能把5与3相加。

只是理解还不够,还需要分析逗号操作符为何有序列点。

逗号操作符常用于把多条C语言语句改写成一条C语言语句。例如,“i=j;++j;”是两条语句,而“i=j,++j;”是一条语句。为保证改写后“语句”的执行顺序与改写前相同,逗号操作符不仅需要有序列点,而且还需要优先级最低。

不仅仅是序列点,指针变量、数组变量、递归函数以及文件甚至数据类型,几乎C语言中的每个知识点,在本书中都有准确而精辟的分析,为学生自主学习、参与讨论奠定了坚实的基础。只要分析就会有收获,如通过分析可知计算机就是一台“整数认不全,小数算不准,只会重复的”机器。

3、强调学法。

针对一些难点,书中提供了学习指导,直观明了且可操作性强,非常适合初学者。例如,用假设用户输入求预期输出的方法理解题意;用画表法分析循环结构的执行过程等。虽然指针是公认的C语言难点,但它的用法实际上非常简单。指针变量的使用通常需要两步:第1步,对指针变量赋值,即让它指向某个存储单元;第2步,以间接引用的形式使用指针变量所指向的存储单元。假设有“int i=5,*pi;”,整型指针变量pi的用法为:先对指针变量赋值pi=&i;,让它指向整型变量i;然后在程序中以*pi的形式使用指针变量pi指向的存储单元,即整型变量i标识的存储单元。*pi和变量i标识了同一个存储单元,借助*pi和变量i均可使用这个存储单元。pi是一个整型指针变量;*pi是一个整型变量。遇到*pi时需要考虑pi指向的存储单元。

总之,本书以先进的教学理念为指导,从全新的角度深刻地解析C语言,应用于实际教学后,效果显著,成绩斐然,获得了师生及专家的一致好评。

在本书的写作过程中得到了许多人的帮助,家人、朋友、同事、学生及网络上素昧平生的C语言爱好者,在此对他们致以最衷心的感谢。特别感谢电子工业出版社袁玺编辑的认可与辛勤付出。由于本人水平有限,书中难免有错漏及词不达意之处,恳请大家谅解并不吝赐教。

作者

2015年7月