C程序设计
1. 顺序程序设计
C语言是一种结构化程序设计语言。三种基本结构:顺序、选择、循环。
1.1. 数据的表现形式及其运算
1.1.1. 常量和变量
常量:在程序运行过程中,其值不能被改变的量。 变量:在程序运行期间,其值是可以被改变的量。
常用的常量分为整型常量、实型常量(十进制小数形式和指数形式)、字符常量(普通字符、转义字符和字符串常量)、符号常量等。(见附录表1)
变量必须先定义,后使用。
1.1.2. 标识符
C语言规定标识符只能有字母、数字和下划线组成,且第一个字符必须为字母或者下划线。
1.1.3. 数据类型
数据类型:数据类型就是指数据在计算机中保存和运算时的组织和形式。 其中不同的数据类型在内存占据的储存单元长度是不同的。
整实基本类型型型双精度型字符型枚举类型C的数据类型数组类型构造类型结构体类型共用体类型指针类型空类型单精度型
1.1.4. 运算符和表达式
C语言基本运算符(见附录表3) 自增自减运算
++i,--I (在使用i之前,先使i的值加(减)1) i++,i-- (在使用i之后,先使i的值加(减)1)
注意:
? 自增运算符和自减运算符只能用于变量中而不能用于常量和表达式。
? 自增自减运算符常用循环语句,是循环变量自动加1;也用于指针变量,是指针变量指
向下一个地址。
1.1.5. 不同类型数据间的混合运算
? +、-、*、/运算的两个数中有一个数为float或double型,结果是double型,因为系统
将所有float型数据都先转换为double型,然后再运算。 ? 如果int型与float或double型数据进行运算,先把int型和float型数据转换为double
型然后再运算,结果为double型。 ? 字符型数据char与整型数据进行运算时,就是把字符的ASCII代码与整型数据进行运算。 ? 字符型数据char与实型数据进行运算,将字符的ASCII代码转换为double型数据,让
后进行运算。
1.1.6. 强制类型转换运算符
一般形式:
(类型名)(表达式)
例如: (double)a (int)(x+y) 注意:
? 表达式应该有个括号括起来。
(将a转换成double类型) (将x+y转换成int类型) (将5%3的值转换成float类型)
(float)(5%3)
1.1.7. C运算符
C运算符分为:算术、关系、逻辑、位运算、赋值、条件、逗号、指针、求字节、强制
转换、成员、下标运算符等。(见附录表4)
1.2. C语句
1.2.1. 复合的赋值运算符
变量+赋值运算符+表达式 ? a+=3 等价于a=a+3 ? x*=y+8等价于x=x*(y+8) ? x%=3 等价于x=x%3
1.2.2. 数据的输入输出
1.1.2.1 printf函数
printf函数的一般格式:
printf(”格式控制”,输出表列)
“格式控制”包括格式声明和普通字符。
“输出列表”是程序需要输出的一些数据,可以是常量、变量或表达式。 “格式字符”:
(一) d格式符:用来输出一个有符号十进制整数。 (二) c格式符:用来输出一个字符。 (三) s格式符:用来输出一个字符串。
(四) f格式符:用来输出实数(包括单、双精度、长双精度),以小数形式输出,
有几种用法:
? 基本型:用%f,不指定输出数据的长度,有系统根据数据的实际情况决定数据所占的列
数,系统处理的方法一般是:实数中的整数部分全部输出,小数部分输出6位。 ? 指定数据宽度和小数位数:用%m.nf,例如%7.2指定了输出数据占7列,其中包括2位
小数。注意:如果把小数部分n指定为0,那么除了小数部分不输出意外,连小数点也不会输出。 ? 输出的数据向左对齐:用%-m.nf,在m.nf前加一个负号,其作用与m.nf形式作用基本
相同,但数据长度不超过m时,数据向左靠,右端补空格。 ? o格式符:以八进制整数形式输出,输出的数值不带符号,将第一位作为符号位一并输
出。 ? X格式符:以十六进制数形式输出整数,也可指定输出字段的列数,如“x”。 ? 注意:除了X,E,G外,其他格式字符必须用小写字母。 1.1.2.2 sacnf函数
scanf函数的一般形式:
scanf(“格式控制“,地址列表)
“格式控制”的含义同printf函数。
“地址列表”是由若干个地址组成的列表,可以是变量的地址,或字符串的首地址。 “&”是地址符,&a的含义是“变量a的地址”。 注意:
? 在用%c格式声明输入字符时,空格字符和转义字符中的字符都作为有效字符输入。例
如:
scanf(“%c%c%c”, &a, &b, &c);
在执行函数时,应该连续输入3个字符,中间不要有空格。但是,数值就不一样。
? 在输入数值数据时,如输入空格、回车和Tab键或者是非法字符时,认为是该数据结束。 1.1.2.3 putchar函数
putchar(put character)函数是字符输出函数,其一般形式为:
putchar(c) //c是一个字符
注意:
? putcha(c)中的c可以是字符常量,整型常量,字符变量或整型变量,只要其值在字符的
ASCII代码范围内(0~127)。 1.1.2.4 getchar函数
getchar(get character)函数没有参数,作用是从计算机终端(一般是键盘)输入一个字符去,即从计算机获得一个字符,getchar函数一次只能接受一个字符。
2. 选择结构程序设计
C语言有两种选择语句:if语句(用来实现两个分支)和switch语句(用来实现多分支)。 if语句的一般形式
if(表达式1) {语句1}
或
if(表达式1) {语句1}
else {语句2}
或
if(表达式1) {语句1} else if(表达式2)
{语句2} else if(表达式3) {语句3}。。。 else if(表达式m)
{语句m} else{语句m+1}
注意:
? if语句无论写在几行上,都是一个整体,属于同一个语句。
? esle子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用。 if语句的嵌套:在if语句中又包含一个或多个if语句。 switch语句的一般形式:
switch(表达式)
{ case 常量1:语句1;break; case 常量2:语句2;break; case 常量n:语句n;break; default:语句n+1;}
注意:
? 括号内表达式的值的类型应为整数类型(包括字符型);可以没有default标号;各
个case标号出现的次序不影响执行结果;每一个case常量必须互不相同;case标号只起标记作用。
2.1. 关系运算符和关系表达式
在C语言中,比较符(或称比较运算符)称为关系运算符。
C语言提供6种关系运算符:< , <= , > , >= (优先级相同,高) ==, !=(后两个优先级相同,低)
优先级大小:算术运算符>关系运算符>赋值运算符
关系表达式:用关系运算符将两个数值或数值表达式连接起来的式子。 关系表达式为真时,表达式的值为1;关系表达式为假时,表达式的值为0。
2.2. 逻辑运算符和逻辑表达式
有3种逻辑运算符:与(and),或(or),非(not),在程序中分别用符号&, | , ! 表示。 运算符 && || ! 含义 逻辑 与 逻辑 或 逻辑 非 举例 a&&b a||b !a 双目运算符:它要求有两个运算对象(操作数),如&&,|| 单目运算符:它只要求有一个运算对象(操作数),如!
优先级别:!(非)>&&(与)>||(或),“&&”和“||”低于关系运算符,“!” 高于算术运算符。即 !>算术运算符>关系运算符>&&和||>赋值运算符
逻辑表达式:将关系表达式或其他逻辑量连接起来的式子。逻辑表达式的值应该是一个逻辑量“真”或“假”。 C语言编译系统在表示逻辑运算结果时,以数值1代表真,数值0代表假,但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”,即将一个非零的数值认作“真”。
注意:
? 进行逻辑运算时,若&&左边的值为0,则不再对右边的运算对象进行运算,整个
表达式的值为0。 ? 进行逻辑运算时,若||左边的运算对象的值为1,则不再对右边的运算对象进行运
算,整个表达式的值为1。
2.2.1. 逻辑型变量
布尔类型可以将关系运算和逻辑运算的结果存到一个逻辑型变量中,以便于分析和运算。 定义逻辑型变量用类型符bool; 布尔类型的值分两种情况:true和false
2.3. 条件运算符和条件表达式