第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();