课时二 顺序结构程序设计(一)
一、常量和变量
1、常量:在程序运行过程中,其值不能被改变的量。
(1)、整型常量
(2)、实型常量(浮点型常量)
· 十进制小数形式。 例:12.345
· 十进制指数形式。 例:12.34e3(12.34*103)
注意:e或E之前必须有数字,且e或E后面必须为整数。
(3)、字符常量:字符常量只能是一个字符,不包括单引号。
· 普通字符:单引号括起来的一个字符。 例:’a’
注意:字符常量只能是一个字符,不包括单引号。字符常量存储在计算机存储单元中时,并不是存储字符,而是以其代码(一般采用ASCII代码)存储的,例如字符‘a’的ASCII代码是97,因此,在存储单元中存放的是97。
ASCII码:一种字符编号。
字符 | 对应ASCII码值 | 字符 | 对应ASCII码值 |
‘a’ | 97 | ‘A’ | 65 |
‘b’ | 98 | ‘B’ | 66 |
‘c’ | 99 | ‘C’ | 67 |
‘b’=‘a’+1 | ‘A’=‘a’-32 |
注意:A-Z,a-z,0-9是依次增加的。
·转义字符:以字符\开头的字符序列。将“\”后面的字符转换成其它意义。
转义字符 | 字符含义 |
\’ | 打印一个单引号’ |
\” | 打印一个双引号” |
\\ | 打印一个反斜线\ |
\n | 换行 |
\r | 回车 |
\t | 空格,跳格,水平制表符 |
\o,\oo,\ooo(o代表一个八进制数字) | 八进制数表示的字符 |
\xh(h代表一个十六进制数字) | 十六进制数表示的字符 |
(4)、字符串常量:用双引号把若干个字符括起来,字符串常量是双引号中的全部字符,但不包括双引号。 例:”boy”
(5)、符号常量:#define指令,指定一个符号名代表一个常量。这样用一个符号名代表一个常量的,称为符号常量。
2、变量
变量代表一个有名字的,具有特定属性的存储单元。它用来存放数据,也就是存放变量的值。在程序运行期间,变量的值是可以改变的。
变量必须先定义,后使用。
二、标识符
1、定义:用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列。
2、命名规则:
(1)、标识符只能由数字、字母和下划线组成。
(2)、第一个字符必须是字母或者下划线。
(3)、标识符区分大小写。
(4)、关键字不能作为标识符。
· C语言中的关键字
auto | break | case | char | const | continue |
default | do | double | else | enum | extern |
float | for | goto | if | inline | int |
long | register | restrict | return | short | signed |
sizeof | static | struct | switch | typedef | union |
unsigned | void | volatile | while |
注意:main,define,scanf,printf均不是关键字。
三、数据类型
C标准只要求long型数据长度不短于int型,short型不长于int型。即
注意:C语言中的数据类型是没有字符串类型的
整型在存储单元中的存储方式是:用整数的补码形式存放。
1、一个正数的补码是该数的二进制形式。
2、求一个负数的补码,先将此数的绝对值写成二进制形式,然后对其后面所有各二进制数按位取反,再加一。
5的原码 | 0000 0101 |
按位取反 | 1111 1010 |
-5的补码 | 1111 1011 |
浮点数是以指数形式存放在存储单元的。
四、运算符和表达式
1、基本的算术运算符:+ - * / %
说明:
(1)、两个整数的相除的结果是整数。
(2)、%运算符要求参加运算的运算对象为整数,结果也是整数。
(3)、除%以外的运算符的操作数都可以是任何算术类型。
2、自增自减运算符:作用是使变量的值加1或减1。
++i --i在使用i之前,先使i的值加(减)1
i++ i--在使用i之后,再使i的值加(减)1
注意:自增,自减运算符只能用于变量,不能用于常量和表达式。
3、算术表达式和运算符的优先级与结合性
用算术运算符和括号将运算对象连接起来的、符合 C 语法规则的式子,称为 C 算术表达式。运算对象包括常量、变量、函数等。
C 语言规定求表达式时,先按运算符的优先级别顺序进行,若一个运算对象两侧的运算符的优先级别相同时,则按规定的“结合方向”处理。
“左结合性”:结合方向自左向右,即运算对象先与左边的运算符结合。 例:算术运算符。
“右结合性”:结合方向自右向左,即运算对象先与右边的运算符结合。 例:赋值运算符。
4、不同类型之间的混合运算
如果一个运算符的两侧的数据类型不同,则先自动进行类型转换,使二者具有同一种类型,然后进行运算。因此整型、实型、字符型数据间可以进行混合运算。
规律为:
(1)、+、-、*、/运算的两个数中有一个数为 float 或 double 型,结果为 double 型,因为系统将所有 float 型数据都先转换为 double 型,然后进行运算。
(2)、如果 int 型与 float 或 double 型数据进行运算,先把 int 型和 float 型数据转换为 double 型,然后进行运算,结果是 double 型。
(3)、字符型数据与整型数据进行运算,就是把字符的 ASCII 代码与整型数据进行运算。
5、强制类型转换运算符:将一个表达式转换成所需类型。
其一般形式为(类型名)(表达式)
注意:在进行强制类型转换时,得到一个所需类型的中间变量,而原来变量的类型并未发生变化。
6、C运算符
(1)、算术运算符:+ - * / % ++ --
(2)、关系运算符:> < == > = <= !=
(3)、逻辑运算符:! && ||
(4)、赋值运算符:=
(5)、条件运算符:?: 例:a>b?c:d
(6)、逗号运算符:, 例:r=(a,b,c)
(7)、指针运算符:* &
(8)、求字节数运算符:sizeof
(9)、强制类型转换运算符:(类型)
课时练习
1、在C语言中,不正确的浮点数常量是( )。
A、-.123
B、-1123e-3.0
C、-1.23e-1
D、-0.123
2、下面四个选项中,不是合法转义字符的选项是( )。
A、’\”’
B、’\\’
C、’\058’
D、’\xd’
3、C语言中基本数据类型包括( )。
A、整型、实型、逻辑型
B、整型、实型、字符型
C、整型、字符型、逻辑型
D、整型、实型、逻辑型、字符型
4、( )把x,y定义成float类型变量,并赋同一初值3.14。
A、float x,y=3.14;
B、float x,y=2*3.14;
C、float x=3.14,y=3.14;
D、float x=y=3.14;
5、下面C语言标识符中,不合法的标识符的是( )。
A、student
B、x_1
C、_12xy
D、float
6、在C语言中,自定义标识符St和st是等价的。(判断题)
7、下列4组选项中,均不是C语言关键字的选项是( )。
A、Define IF type
B、getc char printf
C、include scanf case
D、while pow go
8、已定义变量a,sizeof(a)可以求出变量a在内存中所占的字节数。(判断题)
9、-1的八位二进制补码是( )。
A、1000 0001
B、0000 0001
C、1111 1111
D、1111 1110
10、在C语言中程序中,要求运算数必须是整型的运算符是( )。
A、/
B、++
C、%
D、*
11、表达式9%45+15/6*2的值是_____________。
12、若x是double类型变量,则表达式(x=10/3)的值为3.333333。(判断题)
13、下列语句段执行后x的值是( )。
int x = 5, y = 8;x = x * y;y = x / y;x = x / y;
A、5
B、8
C、40
D、0
14、C语言语句中,设定x=5,则执行a=x++后的值为( )。
A、a=5,x=5
B、a=5,x=6
C、a=6,x=5
D、a=6,x=6
15、5++是一个正确的表达式。(判断题)
16、设有声明“char w;int x;double y;”,则表达式w-x+y值的数据类型为( )。
A、char
B、int
C、float
D、double
17、若有定义:int a=7;float x=3.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值为()。
A、3.500000
B、2.500000
C、2.750000
D、2.000000
18、设有语句“int m=7;”,则(float)(m/2)与(float)m/2的分别为( )。
A、3.0与3.5
B、3与3
C、3.5与3
D、3.5与3.5
19、设所有变量均为int型,则表达式(a=2,b=5,b++,a+b)的值为( )。
A、7
B、8
C、6
D、2