登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入 新註冊 | 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / EMS,時效:出貨後2-3日

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

2023年08月出版新書

2023年07月出版新書

2023年06月出版新書

2023年05月出版新書

2023年04月出版新書

2023年03月出版新書

2023年02月出版新書

『簡體書』程序设计基础(C语言)(第二版)

書城自編碼: 3023234
分類: 簡體書→大陸圖書→教材研究生/本科/专科教材
作者: 巫喜红、钟秀玉、陈世基、肖振球、房宜汕、冯斯苑、蓝红苑
國際書號(ISBN): 9787302470137
出版社: 清华大学出版社
出版日期: 2017-08-01
版次: 2 印次: 1
頁數/字數: 312/50000
書度/開本: 32开 釘裝: 平装

售價:NT$ 284

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
听闻远方有你2
《 听闻远方有你2 》

售價:NT$ 240.0
牛津分配正义手册
《 牛津分配正义手册 》

售價:NT$ 2016.0
全域增长:从战略制定到战术执行
《 全域增长:从战略制定到战术执行 》

售價:NT$ 661.0
澎湖湾的荷兰船:十七世纪荷兰人怎么来到台湾
《 澎湖湾的荷兰船:十七世纪荷兰人怎么来到台湾 》

售價:NT$ 370.0
银元时代生活史
《 银元时代生活史 》

售價:NT$ 493.0
大唐兴衰三百年3:从女主当国到开元盛世
《 大唐兴衰三百年3:从女主当国到开元盛世 》

售價:NT$ 325.0
直击核心:通向卓越教练之路的革命性方法
《 直击核心:通向卓越教练之路的革命性方法 》

售價:NT$ 549.0
高性能储能器件电解质:设计、制备与应用
《 高性能储能器件电解质:设计、制备与应用 》

售價:NT$ 493.0

編輯推薦:
本书是作者多年来在讲授C语言程序设计的基础上,总结教学经验编写的。以掌握程序设计思想为主线,由浅入深,先讲述基本知识及例题,再讲述应用方法,重点是训练学生的编程思维,提高学生应用C语言的能力。本书突出培养工程应用型人才的程序设计与综合应用能力,强调实用性,体现通俗易懂、结构清晰、层次分明、示例丰富的特色。
內容簡介:
本书以C语言为实例介绍程序设计的基础知识,是介绍C语言程序内容和学习C语言程序设计方法的教学用书。本书由浅入深地讲解了如何使用程序设计思想分析和理解问题,如何利用C语言程序设计方法处理和解决实际问题。本书将C语言的学习分为12章。第1~2章介绍了C语言的基本概念、基本常识和程序设计思想; 第3~6章介绍了C语言的数据类型及三种结构; 第7~11章介绍了C语言的数组、函数、指针、结构体、共用体、枚举类型和位运算; 第12章为文件操作。
本书适合高等院校的计算机专业或相关专业的学生使用,也可以作为计算机爱好者的自学参考书。
目錄
目录


第1章概述

1.1计算机程序和计算机语言

1.1.1低级语言

1.1.2高级语言

1.2C语言程序设计的一般步骤

1.3C语言的发展历程

1.4初识C语言

1.4.1C语言的特点

1.4.2C和C

1.4.3C语言的字符集

1.4.4C语言的词汇

1.5最简单的C语言程序

1.5.1C程序举例

1.5.2C程序的结构特点

1.5.3养成良好的程序设计风格

1.6运行C程序的步骤与方法

1.7本章小结

习题1

第2章算法与程序

2.1算法基础知识

2.2算法的特征

2.3几种常用的算法

2.4简单算法示例

2.5如何评价一个算法

2.6算法的描述工具

2.6.1自然语言

2.6.2程序流程图

2.6.3NS结构化流程图

2.6.4过程设计语言

2.6.5PAD图

2.6.6判定表和判定树

2.7结构化程序设计方法

2.8本章小结

习题2

第3章基本数据类型与表达式

3.1数据类型分类

3.2整型数据

3.3浮点型数据

3.4字符型数据

3.5常量与变量

3.5.1常量

3.5.2变量

3.6运算符和表达式

3.6.1C语言运算符简介

3.6.2算术运算符和算术表达式

3.6.3关系运算符和关系表达式

3.6.4逻辑运算符和逻辑表达式

3.6.5条件运算符和条件运算表达式

3.6.6逗号运算符和逗号表达式

3.7本章小结

习题3








第4章顺序结构程序设计

4.1顺序程序设计举例

4.2C语句

4.2.1C语句概述

4.2.2最基本的语句赋值语句

4.3数据的输入输出

4.3.1格式输出函数printf

4.3.2格式输入函数scanf

4.3.3字符输出函数putchar

4.3.4字符输入函数getchar

4.4本章小结

习题4

第5章选择结构程序设计

5.1为什么需要选择结构

5.2用if语句实现选择结构

5.2.1单分支if语句

5.2.2双分支if语句

5.2.3多分支if语句

5.3用switch语句实现选择结构

5.4选择结构的嵌套

5.5选择结构程序设计综合举例

5.6本章小结

习题5

第6章循环结构程序设计

6.1为什么需要循环结构

6.2用while语句实现循环结构

6.3用dowhile语句实现循环结构

6.4用for语句实现循环结构

6.5break语句和continue语句

6.5.1用break语句提前退出循环

6.5.2用continue语句提前结束本次循环

6.6循环的嵌套

6.7循环结构程序设计综合举例

6.8本章小结

习题6

第7章数组

7.1定义和引用一维数组

7.1.1定义一维数组

7.1.2引用一维数组元素

7.1.3初始化一维数组

7.1.4一维数组程序举例

7.2定义和引用二维数组

7.2.1定义二维数组

7.2.2引用二维数组元素

7.2.3初始化二维数组

7.2.4二维数组程序举例

7.3字符数组

7.3.1定义字符数组

7.3.2初始化字符数组

7.3.3引用字符数组中元素

7.3.4字符串和字符串结束标志

7.3.5字符数组的输入输出

7.3.6使用字符串处理函数

7.3.7字符数组应用举例

7.4本章小结

习题7

第8章函数

8.1函数概述

8.2函数的定义

8.2.1无参函数的定义形式

8.2.2有参函数的定义形式

8.2.3定义空函数

8.2.4函数定义注意事项

8.3函数调用

8.3.1函数的参数

8.3.2对调用函数的声明

8.3.3函数的返回值

8.4嵌套调用和递归调用

8.4.1嵌套调用

8.4.2函数的递归调用

8.5数组作为函数参数

8.5.1数组元素作函数实参

8.5.2数组名作函数参数

8.5.3多维数组名作函数参数

8.6变量的作用域

8.6.1局部变量

8.6.2全局变量

8.7变量的存储类型

8.7.1动态存储方式

8.7.2静态存储方式

8.7.3存储类别小结

8.8内部函数和外部函数

8.8.1内部函数

8.8.2外部函数

8.9本章小结

习题8

第9章指针

9.1指针概述

9.2指针变量

9.2.1指针变量的定义

9.2.2指针变量的初始化

9.2.3指针变量的引用

9.2.4指针变量的运算

9.3指针与数组

9.3.1数组指针

9.3.2指针数组

9.3.3指向多维数组的指针

9.4指针与字符串

9.4.1字符型指针

9.4.2通过指针引用字符串

9.4.3指针处理字符串应用举例

9.5指针与函数

9.5.1函数指针

9.5.2指针函数

9.5.3带参的main函数

9.6多重指针

9.7动态内存分配与指向它的指针变量

9.7.1内存的分配

9.7.2动态创建数组

9.8本章小结

习题9

第10章结构体、共用体和枚举类型

10.1结构体

10.1.1结构体的定义

10.1.2结构体变量的定义

10.1.3结构体变量的使用

10.1.4结构体数组

10.1.5结构体与指针

10.1.6结构体综合举例

10.2链表

10.2.1链表基本结构与定义

10.2.2链表基本操作

10.2.3建立动态链表

10.2.4输出链表

10.3共用体

10.3.1共用体的定义

10.3.2共用体变量的定义和使用

10.3.3共用体数据的特点

10.3.4共用体举例

10.4枚举类型

10.4.1枚举类型的定义

10.4.2枚举类型变量的定义和使用

10.4.3枚举类型数据的特点

10.4.4枚举类型举例

10.5用typedef重定义数据类型名

10.5.1typedef概述

10.5.2typedef的典型用法

10.5.3typedef与#define的区别

10.6本章小结

习题10

第11章位运算

11.1位运算概述

11.2位运算符

11.2.1取反运算

11.2.2左移运算

11.2.3右移运算

11.2.4按位与运算

11.2.5按位异或运算

11.2.6按位或运算

11.2.7不同长度的数据进行位运算

11.2.8位运算举例

11.3位段

11.4本章小结

习题11

第12章文件

12.1文件概述

12.2文件类型指针

12.3文件的打开和关闭

12.3.1打开文件函数fopen

12.3.2关闭文件函数fclose

12.4文件的读写

12.4.1字符读写函数fputc和fgetc

12.4.2字符串读写函数fputs和fgets

12.4.3数据块读写函数fwrite和fread

12.4.4格式化读写函数fprintf和fscanf

12.5文件的定位

12.5.1文件位置指针定位函数fseek

12.5.2文件位置指针复位函数rewind

12.5.3文件位置指针查询函数ftell

12.6文件检测函数

12.6.1文件结束检测函数feof

12.6.2文件出错检测函数ferror

12.6.3文件出错标志和文件结束标志置0函数clearerr

12.6.4应用举例

12.7本章小结

习题12

附录A常用字符与ASCII码对照表

附录BC语言中的关键字

附录C运算符和结合性

附录DC语言常用语法

附录EANSI C常用库函数

参考文献
內容試閱
前言
程序设计基础是一门理论与实践密切相关、以培养学生程序设计能力为目标的课程,它的任务是培养学生应用高级程序设计语言求解问题的基本能力,其难点在于帮助学生从现有的思维模式转向机器思维模式。通过学习本课程,学生可以了解高级程序设计语言的结构,掌握基本的应用计算机求解问题的思维方法以及基本的程序设计过程和方法; 本课程从提出问题、选定数据表示方式、设计算法,到编写代码、调试和测试程序,以及分析结果的过程中,培养学生抽象问题、设计与选择解决方案的能力,以及用程序设计语言实现方案并进行测试和评价的能力。C语言由于具有卓越的优点,因此在计算机的各个领域得到了广泛应用,从系统软件的编写到应用程序的设计,特别是在图形处理和底层应用方面应用广泛。此外,C语言是一门结构化程序设计语言,有利于学生掌握程序设计的思想,因此,C语言已经成为目前高校学生学习程序设计必须掌握的一门基础性语言。本书选用C语言作为实例来介绍程序设计的基础。本书是作者多年来在讲授C语言程序设计的基础上,总结教学经验编写的。本书以掌握程序设计思想为主线,由浅入深,先讲述基本知识及例题,再讲述应用方法,重点是训练学生的编程思维,提高学生应用C语言的能力。本书突出培养工程应用型人才的程序设计与综合应用能力,强调实用性,体现通俗易懂、结构清晰、层次分明、示例丰富的特色。本书所有例子均在Visual C6.0环境下运行通过。为了方便学习和加强实验教学,同时编写了与该书配套的用书《程序设计基础C语言(第二版)学习辅导》。全书共分12章。第1~2章介绍了C语言的基本概念、基本常识、算法与程序设计思想,由冯斯苑老师编写; 第3章介绍了C语言的基本数据类型与表达式,由房宜汕老师编写; 第4章介绍了顺序结构程序设计,由钟秀玉老师编写; 第5~6章介绍了选择结构程序设计和循环结构程序设计,由房宜汕老师编写; 第7章介绍了数组,由钟秀玉老师编写; 第8章介绍了函数,由蓝红苑老师编写; 第9章介绍了指针,由肖振球老师编写; 第10~11章介绍了结构体、共用体、枚举类型和位运算,由巫喜红老师编写; 第12章介绍了文件的输入输出操作,由陈世基老师编写;此外,附录部分由陈世基老师编写。全书由巫喜红老师统稿,钟秀玉老师和巫喜红老师审定。本书在写作过程中,参考了部分图书资料和网站资料,在此向其作者表示感谢。本书的出版得到了2015年广东省质量工程项目精品教材程序设计基础(C语言)(粤教高函[2015]133号)、2013年教育部地方所属高校本科教学工程大学生校外实践教育基地建设项目嘉应学院梅州市职业技术学校教育学实践教育基地(教高司函[2013]48号)、2012年度广东省高等学校教学质量与教学改革工程本科类项目职业教育师资实践教学基地粤教高函[2012]123号、2016年广东省高校教学质量与教学改革工程项目精品资源共享课《数据结构》(粤教高函[2016]233号)的支持,在此表示衷心的感谢。此外,在2015年校级优秀教材评选活动中,本书的第一版荣获嘉应学院优秀教材一等奖。由于作者水平和经验有限,书中难免有不足之处,恳请读者提出宝贵意见和建议,使本书日臻完善。为方便教师的教学工作和读者的学习,本书有配套的源程序代码、习题答案和电子教案,需要者可发Email到jdwxh@jyu.edu.cn与编者联系获取。编者2017年5月


第3章基本数据类型与表达式
本章重点: C语言的各种数据类型; C语言的各种运算符号。本章难点: 各种数据类型的存储方式; 各种运算符的优先级。
计算机程序处理的数据不仅仅是简单的数字,而是计算机处理的信息,包括数字、字符、声音、图像和视频。这些数据以一定的数据形式进行存储。数据在内存中存放的形式和可以进行的操作由数据类型决定。对数据的不同操作可以构成各种各样的表达式。3.1数据类型分类数据是程序的操作对象,不同类型的数据有不同的存储方式和操作。在C语言中,数据类型非常丰富,如图3.1所示。
数据类型基本类型数值类型整型短整型short int
无符号短整型(unsigned short int)
基本整型int
无符号基本整型(unsigned int)
长整型long int
无符号长整型(unsigned long int)
双长整型(long long int)
无符号双长整型(unsigned long long int)
浮点型单精度型float
双精度型double
长双精度型long double
字符类型char
构造类型数组
结构体struct
共用体union
枚举类型enum
指针类型*
空类型void
图3.1C语言的数据类型
第3章基本数据类型与表达式
程序设计基础(C语言)(第二版)
3.2整 型 数 据1. 整型数据的存储方式整型数据是没有小数部分的数值,在C语言中可以用3种形式表示:1 十进制整数,如123、-456、89。2 八进制整数,如0123表示八进制整数123,开头的0表示八进制数。1238=182 281 380=8310。3 十六进制整数,如0x2F表示十六进制整数2F,开头的0x表示十六进制数。2F16=2161 15160=4710。数据在内存中是以二进制形式存储的,C语言对不同的数据类型分配不同长度规格的存储空间,不同长度规格的存储空间对应的数据取值范围又是不同的。即使同样长度规格的存储空间表示的数据范围还与是否有符号、是定点表示还是浮点表示有关。最后,不同数据类型分配的存储长度还与编译系统有关。Visual C6.0对整型数据分配4B的存储空间。实际上,整型数据是以补码的形式进行存储的。一个正整数的补码跟该整数的原码即该数的二进制形式相同。而一个负整数的补码则将该数的绝对值的二进制形式进行按位取反,末尾加1。如果是有符号整数,则最左边的一位表示符号位,符号位用0表示正,用1表示负。2. 整型数据的分类int是C语言的基本整数类型,此外,C语言还提供了4个可以修饰int的关键字: short、long、signed以及unsigned,其中signed可以省略,所有没有标明unsigned的整数类型默认都是有符号整数。利用这4个关键字,C语言标准定义了以下整数类型:1 短整型: 以short int表示;2 基本型: 以int表示;3 长整型: 以long int表示;4 无符号型: 分为无符号整型、无符号短整型和无符号长整型,分别以unsigned int、unsigned short、unsigned long表示。无符号型分配的存储空间都用来存储数据本身,不含符号位。不同位数的CPU,数据的存储空间和取值范围不同。表3.1是32位CPU的各类整型数据的存储空间和取值范围。
表3.1CPU的各类整型数据的存储空间和取值范围
名称全称类型说明符缩写类型说明符字节数取 值 范 围
短整型short intshort2-32768~32767,即-215~215-1无符号短整型unsigned short intunsigned short20~65535,即0~216-1基本整型intint4-2147483648~2147483647,即-231~231-1无符号基本整型unsigned intunsigned40~4294967295,即0~232-1
续表
名称全称类型说明符缩写类型说明符字节数取 值 范 围
长整型long intlong4-2147483648~2147483647,即-231~231-1无符号长整型unsigned long intunsignedlong40~4294967295,即0~232-1双长整型long long intlong long8-9223372036854775808~9223372036854775807,即-263~263-1无符号双长整型unsignedlong long intunsigned long long80~18446744073709551615,即0~264-1
说明: 如果编译器不支持C99标准,则不能使用long long和unsigned long long类型。3.3浮点型数据1. 浮点型数据的表示形式C语言中的浮点型数据实际上就是实数类型的数据,有时也称为实型数据,其有两种表示形式。1 十进制小数形式。它由数字和小数点组成,如5.462、0.234、23.0等都是十进制的浮点型数据。2 指数形式。例如345e3、345E3或345E 3都表示345103,字母e或E之前必须有数字,而字母e或E之后的指数必须为一个整数。一个实型数据可以有多种指数表示形式。例如345.67可以表示为345.67e0、34.567e1、3.4567e2、0.34567e3等。其中3.4567e2称为规范化的指数形式。字母e或E之前的小数部分中,小数点左边有且只有一位非零的数字。2. 浮点型数据的分类浮点型数据分为单精度型float、双精度型double和长双精度型long double。其存储空间和取值范围如表3.2所示。
表3.2浮点型数据的存储空间和取值范围
名称类型说明符字节数有 效 数 字取 值 范 围
单精度型float46~7-3.410-38~3.41038双精度型double815~16-1.710-308~1.710308长双精度型long double1618~19-1.210-4932~1.2104932
说明: signed、unsigned不能用于修饰浮点类型。浮点类型可以处理正数,也能处理负数。没有无符号浮点型。3.4字符型数据字符类型的数据即字符型数据,它分为字符和字符串两种。C语言中的字符表示是用单引号括起来的一个字符。如''a''、''A''、'' ''等。字符型数据的存储空间和取值范围如表3.3所示。
表3.3字符型数据的存储空间和取值范围
名称类型说明符字节数取 值 范 围
有符号字符型signed char或char1-128~127,即-2-7~27-1无符号字符型unsigned char10~255,即0~28-1
用反斜杠\开头引导的字符称为转义字符,其意思是将反斜杠\后面的字符转变成另外的意义。如\n中的n并不是代表字母n,而是表示换行符。常用的转义字符如表3.4所示。
表3.4常用转义字符
字 符 形 式功能
\n换行\t横向跳格跳到下一个输出区\v竖向跳格\b退格\r回车\f走纸换页\\反斜杠字符\单引号字符\ddd1~3位八进制所代表的字符\xhh1~2位十六进制所代表的字符
3.5常量与变量在C语言中,数据可以用常量和变量进行存储。3.5.1常量常量是指在程序运行过程其值不会发生改变的量。在基本数据类型中,常量可分为整型常量、实型常量、字符型常量包括字符常量和字符串常量和符号常量,现分别介绍如下。1. 整型常量C语言中合法的整型常量,例如:255,0,-8,76十进制整型常量;0233,0111,0107以数字0开头表示八进制整型常量;0xAF,0x82,0xF4以0x开头表示十六进制整型常量;486L,8350l用L或l表示长整型常量。C语言中非法的整型常量,例如:0868不是八进制的数码;4FF是十六进制的数码,4F前面缺少0x;0xK5K不是十六进制的数码。2. 实型常量C语言中的实型常量只能用十进制形式表示。例如58.75,589.03,1.56E 2,5.6E-2,0.12e2都是合法的实型常量,而3.5E 4.8,E5,e-8都是不合法的实型常量。3. 字符常量字符常量是用单撇号括起来的一个字符,例如''a'',''x'',''\n''都是合法的字符常量。字符常量存储在计算机的存储单元中时,是以其代码(一般采用ASCII代码)存储的。例如字符''a''的ASCII码为97,字符''b''的ASCII码为98,各个字符的ASCII码值可在本书附录A中查看。附录A中列出的ASCII码值是十进制的,而在实际存储中是以二进制存储的。既然在存储中字符型数据是以ASCII码存储,它的存储形式与整数的存储形式相类似,所以在C语言中字符型数据和整型数据在一定条件下可以通用。4. 字符串常量"Jiaying","ab",""都是合法的字符串常量。5. 符号常量在C语言程序可以用标识符定义一个常量,称为符号常量。其定义格式为:
#define 标识符常量
例如:
#define pi 3.14159
#define max 1000
#define min 10
在程序中,某个标识符一旦被定义为符号常量,那么,在程序运行中都会将该标识符替换成对应的常量。3.5.2变量1. 变量的定义
变量是以某个标识符为名字、其值可以被修改的量。标识符的定义必须符合如下规则:1 标识符是由大小写字母、数字和下画线所组成的序列,不能以数字开头。例如,a,A,a1,_a,abc都是合法的标识符,而4a,a3则是非法的标识符。2 标识符区分大小写,abc和ABC是两个不同的标识符。3 标识符的长度有一定的限制。C89标准下,C语言的标识符,(包括变量名)最多只能有8个字符,一般都推荐遵守这个限制,防止在不同编译环境下产生不兼容问题。4 普通标识符的定义不能使用C语言中具有特殊含义的关键字。变量的使用必须遵循先定义,后使用的原则,变量的定义格式为:
类型标识符 变量名1,变量名2,;
其中的类型标识符表示定义的变量保存的数据的数据类型,可以在一条语句定义同一数据类型的多个变量。例如:
int i,j,k;
float x,y;
char c1,c2。
2. 变量的赋值变量定义完成后可以使用赋值运算符=进行赋值。变量赋值可以在定义时赋初值或者在定义完成后赋值。例如:
int i=1,j=2,k=3;
或者
int i,j,k;
i=1;
j=2;
k=3;
赋值过程中一定要保证=右边的常量跟=左边的变量类型相一致。变量赋值类型不一致程序将会出现错误。另外,对变量进行赋值时不能连续赋值。例如:
int i=j=k=1;*非法赋值*
【例3.1】整型变量和字符变量的定义和赋值。编写程序:
#include
int main
{ int x=10,y;
char c1=''a'',c2;
y=x 10;
c2=c1-32
printf"%d,%c",y,c2;
return 0;
}
运行结果:
20,A
3.6运算符和表达式3.6.1C语言运算符简介
运算符是一种特定的数学或逻辑运算的符号。C语言的运算符非常丰富,主要有如下几类:1 算术运算符:、-、*、、%。2 关系运算符: 、=、、~、|、^、&。5 赋值运算符: =。6 条件运算符: ?:。7 逗号运算符: ,。8 指针运算符: *、&。9 求字节数运算符: sizeof。10 强制类型转换运算符: 类型。11 分量运算符: .、-。12 下标运算符: [ ]。13 其他运算符。本章介绍算术运算符、关系运算符、逻辑运算符、条件运算符和逗号运算符,其他运算符将在以后的章节中陆续介绍。3.6.2算术运算符和算术表达式1. C语言的基本算术运算符
算术运算是我们最熟悉的运算,C语言中的算术运算通过算术运算符来实现。表3.5为C语言中的基本算术运算符及其说明。
表3.5C语言中的基本算术运算符及其说明
运算符名称运算对象功能示例示例值
加两个实数或整数和4 26-减两个实数或整数差4-22*乘两个实数或整数积4*28除两个实数或整数右操作数不能为0商422%模两个整数右操作数不能为0相除后的余数4%20
关于基本算术运算符的几点说明:1 算术运算符的操作数有两个,又称双目算术运算符。2 在C语言中,两个整数相除的结果为整数。3、-、*、运算中,如果两个操作数中一个操作数为float类型,另一个操作数为double类型,则都按double类型进行运算。2. 算术运算表达式及算术运算符的优先级通过算术运算符把各个运算对象操作数连接起来的式子称为算术表达式。这里的运算对象可以是常量、变量和函数等。例如:
5 ba-2.8 ''A''
表达式往往涉及多种运算,有多个运算符,所以存在优先级的问题,即先做哪种运算,后做哪种运算。C语言规定了算术运算符的优先级别为: *、、%要高于 、-,并且它们都比赋值运算符的优先级要高。当一个表达式既有赋值运算符又有算术运算符时,按照C语言规定的优先级,应该先做算术运算,然后再做赋值运算。3. 自增、自减运算符自增、自减运算符的作用是使变量的值加1或减1。例如: i,i,--i,i--。i,i的作用相当于i=i 1; --i,i--的作用相当于i=i-1。现在的问题是i和i有何区别?--i和i--又有何区别?例如: 假设i=3,则j=i;与j=i;有何区别?执行j=i后,i=4,j=4; 而执行j=i后,i=4,j=3。由此可见,j=i是在使用i进行赋值前使i加1,而j=i是在使用i进行赋值后再使i加1。虽然最后i的值都加了1,但j的结果却不一样。类似地,--i和i--也是同样的情况。另外,自增运算符和自减运算符--只能用于变量,不能用于常量或表达式,并且只能用于整型常量。例如,6或x--都是错误的。3.6.3关系运算符和关系表达式1. 关系运算符
关系运算是C语言中一种比较简单的运算,也可以认为是一种比较运算。关系运算将两个数进行比较,判断这两个数是否满足给定的关系。例如: ab,是一种关系,表示大于。如果a赋值为4,b赋值为3,那么ab成立,结果为真; 如果a赋值为3,b赋值为4,那么ab不成立,结果为假。在C语言中有6种关系运算符,分别为小于、大于或等于=、等于==、不等于!=。C语言中的关系运算符都是双元运算符号需要两个操作数,操作数可以是数值型数据和字符型数据。如果关系成立,则关系运算的值为1表示逻辑真; 如果关系不成立,则关系运算的值为0表示逻辑假。例如: 43,关系运算的值为1; 4、=
==、!=
赋值运算符号


图3.2关系运算符的优先级
6种关系运算符中,、=的优先级相同,==、!=的优先级也相同,但、=的优先级要高于==、!=。另外,关系运算符的优先级要低于算术运算符,高于赋值运算符。具体关系如图3.2所示。
在用关系运算符==时,如果操作数是两个浮点数,由于浮点数是用近似值表示,存在存储误差,因此有时可能会得出错误的结果。例如,表达式13.0==0。一般人都会认为这个关系运算的值是1为真,但实际上13.0的值约为0.333333。因为13.0是一个用浮点数表示的近似值。另外,在C语言中==是关系运算符,而=是赋值运算符。因此,整个表达式的结果是0,即为假。2. 关系表达式用关系运算符把两个表达式连接起来的式子称为关系表达式。例如: ab 2,a bc d,''A''''B'',c=5d=3,abcb 2,由于表达式中既有算术运算符,又有关系运算符,根据运算符的优先级,算术运算符的优先级要高于关系运算符,所以应该先做算术运算,再做关系运算。因此关系表达式a 2b 2的值为0。3.6.4逻辑运算符和逻辑表达式1. 逻辑运算符
在现实生活进行条件判断时往往需要判断的不止一个条件,如果有多个条件,那么怎么表示条件之间的关系呢?例如,判断一个年份是否闰年的条件有两个: 这个年份能被4整除,但不能被100整除,或者这个年份能被4整除,又能被400整除,这时就需要用到逻辑运算符。在C语言中有3个逻辑运算符: !、&&、||,分别表示逻辑非运算、逻辑与运算、逻辑或运算。1 逻辑非。逻辑非是一元运算,其运算符为!。运算规则: 若逻辑非运算符后面的操作数的值为0逻辑假,则逻辑非的运算结果为1逻辑真; 若逻辑非运算符后面的操作数的值为1逻辑真,则逻辑非的运算结果为0逻辑假。在C语言中进行逻辑判断时,数据的值为非0,则认为是逻辑真; 数据的值为0,则认为是逻辑假。例如:
int a=1,b=5;
!b运算结果为0,因为b是非0值表示逻辑真,再进行逻辑非运算后结果为0
!ab运算结果为1,因为ab的运算结果是逻辑假,再进行逻辑非运算后结果为真
2 逻辑与。逻辑与是二元运算,其运算符为&&。运算规则: 若参与逻辑与运算的两个操作数的值均为1逻辑真,则逻辑与的运算结果为1逻辑真; 若参与逻辑与运算的两个操作数的值中有一个为0逻辑假,则逻辑与的运算结果为0逻辑假。例如:
int a=1,b=5;
a&&b运算结果为1,因为a和b的值均为逻辑真
ab&&a0运算结果为0,因为ab的运算结果是逻辑假
3 逻辑或。逻辑或是二元运算,其运算符为||。运算规则: 若参与逻辑或运算的两个操作数的值均为0逻辑假,则逻辑或的运算结果为0逻辑假; 若参与逻辑或运算的两个操作数的值中有一个为1逻辑真,则逻辑或的运算结果为1逻辑真。例如:
int a=1,b=5;
a||b运算结果为1,因为a的值为逻辑真
ab||a0运算结果为1,因为a0的运算结果是逻辑真
逻辑运算的运算规则也可以用表3.6表示。
表3.6逻辑运算的运算规则
ab!a!ba&&ba||b真真假假真真真假假真假真假假真真假假假真真假假真
根据逻辑运算符的运算规律,假设用内存变量year存储年份的值,那么,要判断一个年份是否是闰年的条件可以表示为:
year%4==0&&year%100!=0||year%4==0&&year%400==0
2. 逻辑表达式用逻辑运算符把两个表达式连接起来的式子称为逻辑表达式。例如,!ac,ac||bc,!ab&&b。逻辑表达式的值也是一个逻辑值,即真和假。C语言中逻辑运算符的优先级为逻辑非!逻辑与&&逻辑或||。如果a=1,b=2,c=3,那么!ac的逻辑表达式的值为1,因为ab&&n=cd后,由于ab的值为0,因此m=0,而n=cd不被执行,因此n的值不是0而是仍然保持原值1。3.6.5条件运算符和条件运算表达式条件运算符有3个操作对象,称为三目运算符。它由两个符号?和:组成,由条件运算符连接起来的式子成为条件运算表达式。其一般形式为:
?:
条件运算表达式的求解过程是: 先求解表达式1的值,如果它的值为真非0值,则求解表达式2的值并把它作为整个表达式的值; 如果表达式1的值为假0值,则求解表达式3的值并把它作为整个表达式的值。例如:
b=a100?200:300
其中,a100?200:300为条件运算表达式,其求解过程为:1 如果a100成立,则条件运算表达式的值为200,即b=200;2 如果a100不成立,则条件运算表达式的值为300,即b=300。C语言中条件运算符的优先级要高于赋值运算符。
3.6.6逗号运算符和逗号表达式逗号运算符是C语言提供的一种特殊运算符,用逗号运算符把若干个表达式连接起来的式子称为逗号表达式。逗号表达式的一般形式为:
表达式1,表达式2
逗号表达式的求解过程是: 先求解表达式1,再求解表达式2。整个表达式的值是表达式2的值。例如,a=x=5,x 1的求解过程为: 先执行x=5,然后执行x 1=6,最后再执行赋值a=6。逗号表达式的一般形式还可以扩展为:
表达式1,表达式2,表达式3,,表达式n
表达式n的值为这个逗号表达式最后的值。3.7本 章 小 结本章介绍了数据类型、运算符和表达式等有关知识,具体包括如下几方面:(1) 在C语言中数据都属于某种类型,不同数据类型的数据的存储和操作是不一样的。整型数据用二进制的补码形式存储,字符型数据用其ASCII码的值存储,实数则用指数形式存储。(2) 在程序中要存储数据时,首先要先定义相应的内存变量,内存变量的命名要按照相应的规则,并且在其名字确定后要指定其存储的数据类型。(3) 数据有常量和变量之分,符号常量是一种特殊的常量,它不占用存储空间,也不能指定相应的数据类型,它只是一个字符串,用来代替一个已知的常量。(4) ANSI C标准并没有具体规定各种数据类型的存储空间,而是由各个C编译系统自主决定。Visual C编译系统中,short占2B、int占4B、long占4B、字符型占1B、float占4B、double占8B。一般也可以用运算符sizeof类型名或sizeof变量名测试所分配的存储空间。(5) 在C语言中,字符和字符串是两个不同的概念,字符要加单引号,字符串要加双引号。(6) 自增和自减--是C语言的一个特色,它使用起来非常方便,也可以使程序清晰、简练,但如果用得不好也会产生副作用。(7) 在C语言中没有逻辑型数据,表示一个逻辑值时,用1代表真,用0代表假,而在判断一个逻辑量的值时,以非0作为真,0作为假。(8) C语言具有丰富的运算符,如算术运算符、关系运算符、逻辑运算符、条件运算符、逗号运算符等,运算符有结合方向及优先级特性。由运算符结合操作数构成了各类的表达式。习题3一、 填空题1. 以下程序的输出结果是。
int main
{
int a=0;
a =a=8;
printf"%d\n",a;
return 0;
}
2. 以下程序的输出结果是。
int main
{
unsigned short a=65536;
int b;
printf"%d\n",b=a;
return 0;
}
3. 数字符号0的ASCII码十进制表示为48,数字符号9的ASCII码十进制表示为。4. 设有以下变量定义,并已赋确定的值:
char w;int x;float y;double z;
则表达式w*x z-y所求得的数据类型为。5. 设a、b、c为整型数,且a=2,b=3,c=4,则执行完以下语句:
a*=16 b-c;
后,a的值是。6. 若有定义:
int a=10,b=9,c=8;
执行下列语句
c=a-=b-5; c=a%11 b=3;
后,变量b中的值是。二、 单项选择题1. 若变量a是int类型,并执行了语句: a=''A'' 1.6; ,则正确的叙述是()。
A. a的值是字符CB. a的值是浮点型C. 不允许字符型和浮点型相加D. a的值是字符''A''的ASCII值加上1
2. 以下选项中不属于C语言的类型的是()。A. signed short intB. unsigned long intC. unsigned intD. long short3. 在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是()。A. a=20000 20000; B. a=4000*10;C. a=30000 10000;D. a=4000L*10L;4. 以下选项中合法的实型常数是()。A. 5E2.0B. E-3C. .2E0D. 1.3E5. 以下选项中合法的用户标识符是()。A. longB. _2TestC. 3DmaxD. A.dat6. 已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量''\101''是()。A. 字符AB. 字符aC. 字符eD. 非法的常量7. 设a和b均为double型变量,且a=5.5、b=2.5,则表达式inta bb的值是()。A. 6.500000B. 6C. 5.500000D. 6.0000008. 若有以下程序:
int main
{
int k=2,i=2,m;
m=k =i*=k;
printf"%d,%d\n",m,i;
return 0;
}
执行后的输出结果是()。A. 8,6B. 8,3C. 6,4 D. 7,49. 与数学式子3xn2x-1对应的C语言表达式是()。A. 3*x^n2*x-1B. 3*x**n2*x-1C. 3*powx,n*12*x-1D. 3*pown,x2*x-110. 以下选项中,与k=n完全等价的表达式是()。
A. k=n,n=n 1B. n=n 1,k=nC. k=nD. k =n 1

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.