谭浩强《C程序设计》(第4版)笔记和课后习题详解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第3章 最简单的C程序设计——顺序程序设计

3.1 复习笔记

一、数据的表现形式及其运算

1常量和变量

(1)常量

在程序运行过程中,其值不能被改变的量称为常量,数值常量就是数学中的常数。

常用的常量有以下几类:

整型常量;

实型常量,包括十进制小数形式和指数形式;

字符常量,包括普通字符和转义字符,常见的转义符有换行符'\n'和制表符'\t';

字符串常量,字符串常量是双撇号中的全部字符;

符号常量,用#define指令,指定用一个符号名称代表一个常量。

(2)变量

变量代表一个有名字的、具有特定属性的一个存储单元,变量必须先定义,后使用。

(3)常变量

常变量是有名字的不变量,而且在变量存在期间其值不能改变。

(4)标识符

定义

在计算机高级语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符(identifier)。

组成规则

a.C语言规定标识符只能由字母、数字和下划线3种字符组成,且第1个字符必须为字母或下划线。

b.编译系统将大写字母和小写字母认为是两个不同的字符。

2数据类型

C语言允许使用的类型,如图3-1所示,图中有*的是C99所增加的。

图3-1 数据类型的分类

3整型数据

整型数据常见的存储空间和值的范围如表3-1所示。

表3-1 整型数据常见的存储空间和值的范围

4字符型数据

(1)字符与字符代码

常用的字符与字符代码如表3-2所示。

表3-2 常用的字符与字符代码

(2)字符变量

字符变量是用类型符char定义字符变量。字符类型型也属于整型,也可以用signed和unsigned修饰符。字符型数据的存储空间和值的范围见表3-3。

表3-3 字符型数据的存储空间和值的范围

5浮点型数据

浮点型数据的有关情况如表3-4所示。

表3-4 浮点型数据的有关情况

6怎样确定常量的类型

从常量的表示形式即可以判定其类型。对于字符常量很简单,只要看到由单撇号括起来的单个字符或转义字符就是字符常量。对于数值常量按以下规律:

(1)整型常量

不带小数点的数值是整型常量,但应注意其有效范围。

(2)浮点型常量

凡以小数形式或指数形式出现的实数,是浮点型常量,在内存中都以指数形式存储。

7运算符和表达式

(1)基本的算术运算符

最常用的算术运算符见表3-5。

表3-5 最常用的算术运算符

(2)自增、自减运算符

++i,--i:在使用i之前,先使i的值加(减)1;

i++,i--:在使用i之后,使i的值加(减)1。

(3)不同类型数据间的混合运算

int型、float与double型数据进行运算,则全部转化为double类型;

字符(char)型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算。

(4)强制类型转换运算符

系统自动进行的类型转换;

强制类型转换。

(5)C运算符

除了算术运算符外,C还提供其他运算符,共有以下类别:

算术运算符(+ - * / % ++ --)

关系运算符(> < == >= <= !=)

逻辑运算符(! && ||)

位运算符(<< >> ~ | ∧ &)

赋值运算符(=及其扩展赋值运算符)

条件运算符(?:)

逗号运算符(,)

指针运算符(*和&)

求字节数运算符(sizeof)

强制类型转换运算符((类型))

⑪成员运算符(. ->)

⑫下标运算符([])

⑬其他(如函数调用运算符())

二、C语句

1C语句的结构和分类

(1)C程序结构可以用图3-2表示。

图3-2 C程序结构

(2)C语句分为以下5类:

控制语句

控制语句用于完成一定的控制功能。C只有9种控制语句,它们的形式是:

a.if()…else… (条件语句)

b.for()… (循环语句)

c.while()… (循环语句)

d.do…while() (循环语句)

e.continue (结束本次循环语句)

f.break (中止执行switch或循环语句)

g.switch (多分支选择语句)

h.return (从函数返回语句)

i.goto (转向语句,在结构化程序中基本不用goto语句)

函数调用语句

函数调用语句由一个函数调用加一个分号构成。

表达式语句

表达式语句由一个表达式加一个分号构成。

空语句

复合语句

2最基本的语句——赋值语句

(1)赋值运算符

赋值符号“=”是指赋值运算符,它的作用是将一个数据赋给一个变量。

(2)复合的赋值运算符

有关算术运算的复合赋值运算符有+=,-=,*=,/=,%=。

(3)赋值表达式

赋值运算符左侧应该是一个可修改的“左值”(leftvalue,简写为lvalue),能出现在赋值运算符右侧的表达式称为“右值”(rightvalue,简写为rvalue)。

(4)赋值过程中的类型转换

如果赋值运算符两侧的类型不一致,但都是算术类型时,在赋值时要进行类型转换。

(5)变量赋初值

可以用赋值语句对变量赋值,也可以在定义变量时对变量赋以初值。

三、数据的输入输出

1有关数据输入输出的概念

(1)输入输出是以计算机主机为主体

计算机的输入输出如图3-3所示。

图3-3 计算机的输入输出

(2)输入和输出操作是由C标准函数库中的函数来实现的

(3)在使用系统库函数时,要在程序文件的开头用预处理指令#include<stdio.h>

2用printf函数输出数据

(1)printf函数的一般格式

printf函数的一般格式为:printf(格式控制,输出表列);

括号内包括两部分:

格式控制

a.格式声明

格式声明总是由“%”字符开始的。

b.普通字符

输出表列

输出表列是程序需要输出的一些数据,可以是常量、变量或表达式。

(2)格式字符

对不同类型的数据要指定不同的格式声明,而格式声明中最重要的内容是格式字符,常用的有如表3-6所示。

表3-6 printf函数中用到的格式字符

在格式声明中,在%和上述格式字符间可以插入表3-7中列出的几种附加符号(又称修饰符)。

表3-7 printf函数中用到的格式附加字符

【说明】格式附加字符如“printf("%5.2f",f);”即表示输出的f为浮点型数据,其中应保留两位小数,总宽度为5。

3用scanf函数输入数据

(1)scanf函数的一般形式

scanf(格式控制,地址表列);

“格式控制”的含义同printf函数。

“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。

(2)scanf函数中的格式声明

与printf函数中的格式声明相似,以%开始,以一个格式字符结束,中间可以插入附加的字符。

表3-8和表3-9列出scanf函数所用的格式字符和附加字符。它们的用法和printf函数中的用法差不多。

表3-8 scanf函数中所用到的格式字符

表3-9 scanf函数中用到的格式附加字符

(3)使用scanf函数时应注意的问题

scanf函数中的“格式控制”后面应当是变量地址,而不是变量名。

如果在“格式控制字符串”中除了格式声明以外还有其他字符,则在输入数据时在对应的位置上应输入与这些字符相同的字符。

在用“%c”格式声明输入字符时,空格字符和“转义字符”中的字符都作为有效字符输入。

4字符数据的输入输出

除了可以用printf函数和scanf函数输出和输入字符外,C函数库还提供了一些专门用于输入和输出字符的函数。

(1)用putchar函数输出一个字符

putchar(c);

(2)用getchar函数输入一个字符

getchar();