C语言程序设计 清华大学 郑莉 安颖莲第二讲 C语言基础参考书:,C程序设计,第一、二、三、四章
Page 1
C语言程序设计 清华大学 郑莉 安颖莲本讲主要内容
C语言的程序格式及结构特点
数据类型
算术运算符与算术表达式
赋值运算符和赋值表达式
逗号运算和逗号表达式
逻辑运算与逻辑表达式
赋值语句
数据输入、输出
简单程序举例
C语言程序设计 清华大学 郑莉 安颖莲
C语言的程序格式
实例
main()
{
int x,y,z;
x=2;
y=3;
z=x+y;
printf("x+y=%d\n",z);
}
程序格式
- 关键字及编译预处理命令用小写字母书写。
- 由语句组成。
- 以分号 (;)作为语句的结束符,
(不是分隔符)。
- 没有行的概念,可任意书写。
- 用大括号对 {}表示程序的层次范围,一个完整的程序模块要用一对 {}包括。
- 不能在变量名、函数名、关键字中插入空格和空行。 Page 3
C语言程序设计 清华大学 郑莉 安颖莲
C语言的结构特点
结构特点
- 只有一个名字为
main的函数,称主函数。
- 除 main函数外,其它函数都是在执行
main函数时被调用执行的。
函数的一般形式函数名(参数)
参数说明;
{
数据说明部分;
执行语句部分;
}
Page 4
C语言程序设计 清华大学 郑莉 安颖莲数据类型
常量与变量
整型数据
实型数据
字符型数据
给变量赋初值
不同类型的混合运算
Page 5
C语言程序设计 清华大学 郑莉 安颖莲数据类型
—— 常量与变量
#define PRICE 30
main()
{
int num,total;
float v,r,h;
num=10;
total=num*PRICE;
printf( total=%d,tatal) ;
r=2.5;
h=3.2;
v=3.14159*r*r*h;
printf( v=%f\n,v) ;
}
常量变量名:
以字母或下划线开头,由数字、
字母、下划线构成。最多 31个字符,多余不识别,
一般小写。
变量变量先定义后使用符号常量名字常用大写
Page 6
C语言程序设计 清华大学 郑莉 安颖莲
#define PRICE 30
main()
{
int num,total;
float v,r,h;
num=10;
total=num*PRICE;
printf( total=%d,tatal) ;
r=2.5;
h=3.2;
v=3.14159*r*r*h;
printf( v=%f\n,v) ;
}
数据类型
—— 整型数据整型常量
根据值的大小自动确定类型。
无 unsigined型,
但非负数可对
unsigned变量赋值。
十进制,123,
- 456
八进制,0开头十六进制,0x开头int,unsigned int
2字节
short
unsigned short
2字节
long
unsigned long
4字节整型变量整型变量定义
Page 7
C语言程序设计 清华大学 郑莉 安颖莲数据类型——
整型数据的定义及取值范围类型 定义符 位数 数值范围 I/O格式符基本 int 16位 -32768~ 32767 %d
短整 short 16 同上 %hd
长整 long 32 -231~ (231-1) %ld
无符号
unsigned [int] 16 0~ 65535 %u
unsigned short 16 同上 %hu
unsigned long 32 0~ (232-1) %lu
C语言程序设计 清华大学 郑莉 安颖莲数据类型 —— 实型数据
#define PRICE 30
main()
{
int num,total;
float v,r,h;
num=10;
total=num*PRICE;
printf( total=%d,tatal) ;
r=2.5;
h=3.2;
v=3.14159*r*r*h;
printf( v=%f\n,v) ;
}
十进制形式
指数形式,123E3
(123× 103 )
不区分单、双精度,赋值时截取有效长度。如:
float a;
a=111111.111;
实型常量 7位有效数字
float 4字节
3.4× 10± 38
7位有效数字
double 8字节
1.7× 10± 308
15位有效数字实型变量
Page 9
C语言程序设计 清华大学 郑莉 安颖莲数据类型 —— 字符型数据(一)
字符常量
- 单引号括起来的一个字符,如,'a','D','?','$'
字符变量
- 用来存放字符常量例,char c1,c2;
c1='a';
c2='A';
字符数据在内存中的存储形式
- 以 ASCII码存储,占 1字节,用 7个二进制位
Page 10
C语言程序设计 清华大学 郑莉 安颖莲
字符数据的使用方法
- 字符数据和整型数据之间可以通用,可以按字符形式输出,也可以按整型输出。
C H I N A \0
a\0
a
Page 11
数据类型 —— 字符型数据(二)
例 1
例 3
例 2
- 字符数据与整型数据可以互相赋值。
字符串常量例,"CHINA"
"a"
'a'
所以,char c;
c="a";
C语言程序设计 清华大学 郑莉 安颖莲数据类型 —— 变量赋初值
例:
int a=3;
float f=3.56;
char c='a';
int a,b,c=5;
Page 15
C语言程序设计 清华大学 郑莉 安颖莲数据类型
— 不同类型数据混合运算时的类型转换
数据参加运算前必须进行下列转换:
char,short→int,float→double
混合运算时,数据类型由低级 → 高级:
int unsigned long double
低 高
例,int i; float f; double d; long e;
运算次序,10+'a' + i*f - d/e
① 10+97 ② 转换为 double ④ 转换为 double
再相乘 再相除
107→double
③
⑤
结果为 double Page 16
C语言程序设计 清华大学 郑莉 安颖莲算术运算符与算术表达式
C运算符简介
P22
基本算术运算符
+ - * / %(取余)
(若整数相除,结果取整 )
优先级与结合性先乘除,后加减,同级自左至右
强制类型转换例,(double)a,(int)(x+y),(float)(5%3)
变量本身未变化
++,-- (P24)
Page 17
例 4
例 5
C语言程序设计 清华大学 郑莉 安颖莲赋值运算符和赋值表达式简单的赋值运算符,=”
“=” 两侧类型不一致时,要进行类型转换:
- 整 ← 实,截掉小数部分
- 实(单、双精度) ← 整,数值不变,存为浮点
- 整 ← char,整型低 8位 ← char
整型高 8位 ← 0或符号位扩展 (因机器而不同 )
- long int←int,符号位扩展
- int←long int,int←long int 低 16位
- long int←unsigned int,高位补 0
- 整型 ← (字节数相同的 )unsigned 整型,原样送入。
若超过整型表示范围,会出错。
- unsigned←( 字节数相同的 )非 unsigned整型:
原样送入,符号位也作为数值
Page 21例 6
C语言程序设计 清华大学 郑莉 安颖莲赋值运算符和赋值表达式复合的赋值运算符
C语言中有 10种复合运算符:
+=,-=,*=,/=,%=,
<<=,>>=,&=,^=,|= (位运算,以后讲 )
例,a+=3 等价于 a=a+3
x*=y+8 等价于 x=x*(y+8)
Page 23
C语言程序设计 清华大学 郑莉 安颖莲赋值运算符和赋值表达式赋值表达式
例:
a=5 表达式值为 5
a=b=c=5 表达式值为 5,a,b,c均为 5
a=5+(c=6) 表达式值为 11,a为 11,c为 6
a=(b=4)+(c=6) 表达式值为 10,a为 10,b为 4,c为 6
a=(b=10)/(c=2)表达式值为 5,a为 5,b为 10,c为 2
a+=a-=a*a 相当于,a=a+(a=a-a*a)
Page 24
C语言程序设计 清华大学 郑莉 安颖莲逗号运算和逗号表达式
格式:
表达式 1,表达式 2
求解顺序及结果:
先求解 1,再求解 2,最终结果为表达式 2的值
例
a=3*5,a*4 最终结果为 60
Page 25
C语言程序设计 清华大学 郑莉 安颖莲逻辑运算与逻辑表达式
关系运算与关系表达式
- 关系运算是比较简单的一种逻辑运算,其优先次序为:
<(小于 ) <= (小于或等于 ) >(大于 ) >= (大于或等于 ) == (等于 ) !=(不等于 )
优先级相同(高) 优先级相同(低)
- 关系表达式其值只能为真或假,在 C 语言中用 整数 1 和 0 表示。
逻辑运算府与逻辑表达式
- 逻辑运算符,!(非 ) &&(与 ) ||(或 )
优先次序:高 → 低
- 逻辑表达式例如,(a>b)&&(x>y)
看书 P50- 51 举例
C语言程序设计 清华大学 郑莉 安颖莲赋值语句
格式:
赋值表达式;
赋值语句与赋值表达式的区别:
赋值表达式可以包含在其它表达式中,
而赋值语句不可。
例,if ((a=b)>0) t=a;
不可写为,if ((a=b;)>0) t=a;
Page 27
C语言程序设计 清华大学 郑莉 安颖莲数据输入、输出
C语言本身没有 I/O语句,所有 I/O都由函数来实现。
C语言的标准库函数
- 由编译系统提供的一系列子程序
- 调用形式:
函数名(参数表)
Page 28
C语言程序设计 清华大学 郑莉 安颖莲数据输入、输出 —— 常用字符 I/O函数
putchar(参数 )字符输出
- 功能:把一字节代码写入标准输出文件(显示器)
- 参数,int型
- 返回值:正常时为写入的代码值,
出错时为 EOF(即 -1),int型。
Page 29
例 7
例 8
getchar()字符输入
-功能:从标准输入文件(键盘)读入一字节代码
-参数:无
-返回值:正常时为读到的代码值,出错时或遇结束( Ctrl+z)为 EOF(即 -1),int型。
C语言程序设计 清华大学 郑莉 安颖莲数据输入、输出 —— 常用格式 I/O函数
printf格式输出
printf(格式控制,输出表 )
格式控制字符 看书 P36-41,上机实践
scanf格式输入
scanf(格式控制,地址表 )
Page 32
例 9
C语言程序设计 清华大学 郑莉 安颖莲简单程序举例
P45-46
作业上机完成,P46 3.4- 3.10
预习:,计算机程序设计基础,第三章
,C程序设计,第四章
Page 34
Page 1
C语言程序设计 清华大学 郑莉 安颖莲本讲主要内容
C语言的程序格式及结构特点
数据类型
算术运算符与算术表达式
赋值运算符和赋值表达式
逗号运算和逗号表达式
逻辑运算与逻辑表达式
赋值语句
数据输入、输出
简单程序举例
C语言程序设计 清华大学 郑莉 安颖莲
C语言的程序格式
实例
main()
{
int x,y,z;
x=2;
y=3;
z=x+y;
printf("x+y=%d\n",z);
}
程序格式
- 关键字及编译预处理命令用小写字母书写。
- 由语句组成。
- 以分号 (;)作为语句的结束符,
(不是分隔符)。
- 没有行的概念,可任意书写。
- 用大括号对 {}表示程序的层次范围,一个完整的程序模块要用一对 {}包括。
- 不能在变量名、函数名、关键字中插入空格和空行。 Page 3
C语言程序设计 清华大学 郑莉 安颖莲
C语言的结构特点
结构特点
- 只有一个名字为
main的函数,称主函数。
- 除 main函数外,其它函数都是在执行
main函数时被调用执行的。
函数的一般形式函数名(参数)
参数说明;
{
数据说明部分;
执行语句部分;
}
Page 4
C语言程序设计 清华大学 郑莉 安颖莲数据类型
常量与变量
整型数据
实型数据
字符型数据
给变量赋初值
不同类型的混合运算
Page 5
C语言程序设计 清华大学 郑莉 安颖莲数据类型
—— 常量与变量
#define PRICE 30
main()
{
int num,total;
float v,r,h;
num=10;
total=num*PRICE;
printf( total=%d,tatal) ;
r=2.5;
h=3.2;
v=3.14159*r*r*h;
printf( v=%f\n,v) ;
}
常量变量名:
以字母或下划线开头,由数字、
字母、下划线构成。最多 31个字符,多余不识别,
一般小写。
变量变量先定义后使用符号常量名字常用大写
Page 6
C语言程序设计 清华大学 郑莉 安颖莲
#define PRICE 30
main()
{
int num,total;
float v,r,h;
num=10;
total=num*PRICE;
printf( total=%d,tatal) ;
r=2.5;
h=3.2;
v=3.14159*r*r*h;
printf( v=%f\n,v) ;
}
数据类型
—— 整型数据整型常量
根据值的大小自动确定类型。
无 unsigined型,
但非负数可对
unsigned变量赋值。
十进制,123,
- 456
八进制,0开头十六进制,0x开头int,unsigned int
2字节
short
unsigned short
2字节
long
unsigned long
4字节整型变量整型变量定义
Page 7
C语言程序设计 清华大学 郑莉 安颖莲数据类型——
整型数据的定义及取值范围类型 定义符 位数 数值范围 I/O格式符基本 int 16位 -32768~ 32767 %d
短整 short 16 同上 %hd
长整 long 32 -231~ (231-1) %ld
无符号
unsigned [int] 16 0~ 65535 %u
unsigned short 16 同上 %hu
unsigned long 32 0~ (232-1) %lu
C语言程序设计 清华大学 郑莉 安颖莲数据类型 —— 实型数据
#define PRICE 30
main()
{
int num,total;
float v,r,h;
num=10;
total=num*PRICE;
printf( total=%d,tatal) ;
r=2.5;
h=3.2;
v=3.14159*r*r*h;
printf( v=%f\n,v) ;
}
十进制形式
指数形式,123E3
(123× 103 )
不区分单、双精度,赋值时截取有效长度。如:
float a;
a=111111.111;
实型常量 7位有效数字
float 4字节
3.4× 10± 38
7位有效数字
double 8字节
1.7× 10± 308
15位有效数字实型变量
Page 9
C语言程序设计 清华大学 郑莉 安颖莲数据类型 —— 字符型数据(一)
字符常量
- 单引号括起来的一个字符,如,'a','D','?','$'
字符变量
- 用来存放字符常量例,char c1,c2;
c1='a';
c2='A';
字符数据在内存中的存储形式
- 以 ASCII码存储,占 1字节,用 7个二进制位
Page 10
C语言程序设计 清华大学 郑莉 安颖莲
字符数据的使用方法
- 字符数据和整型数据之间可以通用,可以按字符形式输出,也可以按整型输出。
C H I N A \0
a\0
a
Page 11
数据类型 —— 字符型数据(二)
例 1
例 3
例 2
- 字符数据与整型数据可以互相赋值。
字符串常量例,"CHINA"
"a"
'a'
所以,char c;
c="a";
C语言程序设计 清华大学 郑莉 安颖莲数据类型 —— 变量赋初值
例:
int a=3;
float f=3.56;
char c='a';
int a,b,c=5;
Page 15
C语言程序设计 清华大学 郑莉 安颖莲数据类型
— 不同类型数据混合运算时的类型转换
数据参加运算前必须进行下列转换:
char,short→int,float→double
混合运算时,数据类型由低级 → 高级:
int unsigned long double
低 高
例,int i; float f; double d; long e;
运算次序,10+'a' + i*f - d/e
① 10+97 ② 转换为 double ④ 转换为 double
再相乘 再相除
107→double
③
⑤
结果为 double Page 16
C语言程序设计 清华大学 郑莉 安颖莲算术运算符与算术表达式
C运算符简介
P22
基本算术运算符
+ - * / %(取余)
(若整数相除,结果取整 )
优先级与结合性先乘除,后加减,同级自左至右
强制类型转换例,(double)a,(int)(x+y),(float)(5%3)
变量本身未变化
++,-- (P24)
Page 17
例 4
例 5
C语言程序设计 清华大学 郑莉 安颖莲赋值运算符和赋值表达式简单的赋值运算符,=”
“=” 两侧类型不一致时,要进行类型转换:
- 整 ← 实,截掉小数部分
- 实(单、双精度) ← 整,数值不变,存为浮点
- 整 ← char,整型低 8位 ← char
整型高 8位 ← 0或符号位扩展 (因机器而不同 )
- long int←int,符号位扩展
- int←long int,int←long int 低 16位
- long int←unsigned int,高位补 0
- 整型 ← (字节数相同的 )unsigned 整型,原样送入。
若超过整型表示范围,会出错。
- unsigned←( 字节数相同的 )非 unsigned整型:
原样送入,符号位也作为数值
Page 21例 6
C语言程序设计 清华大学 郑莉 安颖莲赋值运算符和赋值表达式复合的赋值运算符
C语言中有 10种复合运算符:
+=,-=,*=,/=,%=,
<<=,>>=,&=,^=,|= (位运算,以后讲 )
例,a+=3 等价于 a=a+3
x*=y+8 等价于 x=x*(y+8)
Page 23
C语言程序设计 清华大学 郑莉 安颖莲赋值运算符和赋值表达式赋值表达式
例:
a=5 表达式值为 5
a=b=c=5 表达式值为 5,a,b,c均为 5
a=5+(c=6) 表达式值为 11,a为 11,c为 6
a=(b=4)+(c=6) 表达式值为 10,a为 10,b为 4,c为 6
a=(b=10)/(c=2)表达式值为 5,a为 5,b为 10,c为 2
a+=a-=a*a 相当于,a=a+(a=a-a*a)
Page 24
C语言程序设计 清华大学 郑莉 安颖莲逗号运算和逗号表达式
格式:
表达式 1,表达式 2
求解顺序及结果:
先求解 1,再求解 2,最终结果为表达式 2的值
例
a=3*5,a*4 最终结果为 60
Page 25
C语言程序设计 清华大学 郑莉 安颖莲逻辑运算与逻辑表达式
关系运算与关系表达式
- 关系运算是比较简单的一种逻辑运算,其优先次序为:
<(小于 ) <= (小于或等于 ) >(大于 ) >= (大于或等于 ) == (等于 ) !=(不等于 )
优先级相同(高) 优先级相同(低)
- 关系表达式其值只能为真或假,在 C 语言中用 整数 1 和 0 表示。
逻辑运算府与逻辑表达式
- 逻辑运算符,!(非 ) &&(与 ) ||(或 )
优先次序:高 → 低
- 逻辑表达式例如,(a>b)&&(x>y)
看书 P50- 51 举例
C语言程序设计 清华大学 郑莉 安颖莲赋值语句
格式:
赋值表达式;
赋值语句与赋值表达式的区别:
赋值表达式可以包含在其它表达式中,
而赋值语句不可。
例,if ((a=b)>0) t=a;
不可写为,if ((a=b;)>0) t=a;
Page 27
C语言程序设计 清华大学 郑莉 安颖莲数据输入、输出
C语言本身没有 I/O语句,所有 I/O都由函数来实现。
C语言的标准库函数
- 由编译系统提供的一系列子程序
- 调用形式:
函数名(参数表)
Page 28
C语言程序设计 清华大学 郑莉 安颖莲数据输入、输出 —— 常用字符 I/O函数
putchar(参数 )字符输出
- 功能:把一字节代码写入标准输出文件(显示器)
- 参数,int型
- 返回值:正常时为写入的代码值,
出错时为 EOF(即 -1),int型。
Page 29
例 7
例 8
getchar()字符输入
-功能:从标准输入文件(键盘)读入一字节代码
-参数:无
-返回值:正常时为读到的代码值,出错时或遇结束( Ctrl+z)为 EOF(即 -1),int型。
C语言程序设计 清华大学 郑莉 安颖莲数据输入、输出 —— 常用格式 I/O函数
printf格式输出
printf(格式控制,输出表 )
格式控制字符 看书 P36-41,上机实践
scanf格式输入
scanf(格式控制,地址表 )
Page 32
例 9
C语言程序设计 清华大学 郑莉 安颖莲简单程序举例
P45-46
作业上机完成,P46 3.4- 3.10
预习:,计算机程序设计基础,第三章
,C程序设计,第四章
Page 34