nullnullnull第一节 程序设计的基本知识
第二节 数据与数据类型
第三节 C语言的基本数据类型及其
示
第四节 算术运算与赋值运算
第五节 逗号运算
第六节 混合运算及数据类型转换§2.1 程序设计的基本知识§2.1 程序设计的基本知识二、什么是数据结构计算机的别名:数据处理机;
数据元素:数据的最小单位;
数据结构:数据元素的组织形式.把需要解决的问题用
计算机能完全理解的
方式描述给计算机。一、什么是程序设计程序设计=数据结构+算法+方法+工具程序设计=编程数据结构包括数据的逻辑结构和物理结构,它关系到软件或程序的复杂程度。§2.1 程序设计的基本知识(续)§2.1 程序设计的基本知识(续)算法:解决问题的方法和有限的步骤
计算机语言的别名:算法语言 2R L , R2 S 三次乘法 一次乘方
R A,2A L,AR S 三次乘法
2R L,RR S 四次乘法 三、什么是算法例求圆周长和圆面积
模型:L=2R、 S=R2三种算法:可读性好执行效率高 综合的优点 null算法的表示--流程图 用规定的一系列图形、流程线和文字说明算法中的基本操作和控制流程§2.1 程序设计的基本知识(续)null四、面向过程程序设计方法三种基本结构:顺序、选择、循环
模块组织:按功能划分模块化,每个
模块易于理解且不可再分
设计过程:自顶而下、逐步细化目的:改善环境,加快程序开发过程。
常用工具:描述算法的图形工具、表
示结构的开发工具等。五、程序设计工具结构化程序设计§2.1 程序设计的基本知识(续)null六、程序设计步骤
问题,建立数学模型
确定数据结构
确定算法,描述算法
编制程序,调试程序
运行结果程序设计:书写正确,结果正确§2.1 程序设计的基本知识(续)null数据的描述
数据的操作算法
数据结构程序的任务是对数据进行处理,数据是程序处理的对象,而运算符是施加给这些数据的操作。数据和运算符是表达式的基本元素。 §2.2 数据与数据类型null数据类型构造类型指针类型空类型(无值类型) voidC语言的数据类型有 §2.2 数据与数据类型(续)null关于类型的含义
1.不同类型数据在内存中占不同的存储空
间,且采取不同的存储形式。
2.不同类型数据对应不同的取值范围。
3.数据类型确定了允许对其进行的操作。 §2.2 数据与数据类型(完)null §2.3 C语言的基本数据类型 按照数据在程序中的取值:
值保持不变-----常量 x=2 * y
值随程序运行变化-----变量null一、常量1. 在程序运行中,其值保持不变。
2. 表示方法:整型 100,125,-100
实型 3.14 , 0.125
字符型 ‘a’, ‘b’
字符串常量 “string”3.符号常量: #define PI 3.14159用指定的标识符表示某个常量2.3.1 常量与变量 §2.3 C语言的基本数据类型(续) null二、变量3. 变量通过变量名标识1. 在程序运行中,值发生变化2. 必须先定义,再使用int a,b;
类型 变量名表变量2563变量名和内存中的存储单元相对应。编写程序时通过变量名来存、取存储单元。 §2.3 C语言的基本数据类型(续) null(1)以字母或下划线开头(2)不能用系统中的关键字作为变量名规 定int a,b A123,_b;int a;
…..
A=5;4. 有关变量名的规定(3)变量名中的字母是区分大小写的。
sum、stu_name、_age、Lts_1_2、a2
32c、x.y、start+9、c2.0
NAME name 表示两个不同的标识符。 §2.3 C语言的基本数据类型(续) null一、整型常量有三种表
示形式十进制
八进制
十六进制1234加前导0
01234,0125加前导0x 0x123,0xffff整型数据包括整型常量和整型变量, 整型数据以二进制补码形式存储 例 100、-8、0;010、024;0x38、0X1F2.3.2 整型数据 §2.3 C语言的基本数据类型(续) null二、整型变量 掌握要点
1 有几种定义形式
2 每种形式占存储空间的大小
3 取值范围
4 输入输出格式 §2.3 C语言的基本数据类型(续) null1. 定义形式共六种基本整型
长整型
短整型
无符号整型
无符号短整型
无符号长整型 int
long int
short int
unsigned int2. 占存储空间一个变量2
4
2
2unsigned short
unsigned long2
4 §2.3 C语言的基本数据类型(续) null3.整型变量的取值范围 类型说明符 长度 数的范围
基本型 int 2字节 -32768~32767
短整型 short 2字节 -215~215-1
长整型 long 4字节 -231~231-1
无符号整型 unsigned 2字节 0~65535
无符号短整型 unsigned short 2字节 0~65535
无符号长整型 unsigned long 4字节 0~(232-1) §2.3 C语言的基本数据类型(续) nullint型数的表示范围:
存储长度16位二进制(2Byte) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1=215-1=327670 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=1=3上面的数再加1是多少?=-215=-32768例补码表示int型表示数的范围:- 32768 ~ 327674. 输入输出形式 : d,%ld,%x,%o,%u §2.3 C语言的基本数据类型(续) null包括实型常量和实型变量一、实型常量有两种表
示形式小数
指数0.123
3e-3实型常量只能用十进制形式表示,不能用八进制和十六进制1e3、1.8e-3、-123e-6、-.1e-3
e5、1e-3.2、e、.e-03 2.3.3 实型数据用指数表示实型常量的规则 §2.3 C语言的基本数据类型(续) null1. 定义形式共三种单精度
双精度
长双精度 float
double
long double2. 占存储空间一个变量4
8
16二、实型变量实型常量不区分单精度和双精度 §2.3 C语言的基本数据类型(续) null3. 变量的取值范围4.输入输出形式 %f §2.3 C语言的基本数据类型(续) null实型数据在计算机中以指数形式存储,单精度实型变量用一个字节存放指数部分, 其余三个字节存数值部分 。 7位二进制 23位二进制单精度实型2-23 <= |尾数| <= 1-2-23尾数指数 §2.3 C语言的基本数据类型(续) null 包括字符型常量和字符型变量一、字符型常量1. 用单引号包含的一个字符是字符型常量2 .只能包含一个字符‘a’, ‘A’, ‘1’
‘abc’
“a”2.3.4 字符型数据 §2.3 C语言的基本数据类型(续) null3 有些以“\”开头的特殊字符称为转义字符\n 换行
\t 横向跳格
\r 回车
\\ 反斜杠
\ddd ddd表示1到3个八进制数字
\xhh hh表示1到2个十六进制数字printf(“%d \t %d \t”,a,b);
printf(“%d \n%d \n”,a,b);若:a为1,b为0
1 0
1
0 §2.3 C语言的基本数据类型(续) null1. 定义形式2. 占存储空间一个变量二、字符型变量char一个字符变量只
能包含一个字符3. 输入输出形式 %c‘a’ ASCII值为 97
内存中存储形式0 1 1 0 0 0 0 14. 字符型数据在内存中以相应的ASCII值存储 §2.3 C语言的基本数据类型(续) nullmain( )
{ char c ;
c = ‘c’;
printf ( “%c %d”, c,c );
}C 99题目中有多个c,哪些是等价的?运行结果: §2.3 C语言的基本数据类型(续) null三、字符串常量1 双引号内的一串字符 “china”2 n个字符组成的字符串常量, 在
内存中占空间为n+1 个字节。china\0字符串结
束标记3 C 中没有专用的
字符串变量“This is C string” 串长 16
“a” 串长 1
“ ” (空格)串长 1
“” (不含空格)串长 0 §2.3 C语言的基本数据类型(续) null §2.4 算术运算与赋值运算一、运算符运算符 运算分量
X= 5 + b * c 对数据进行
运算的符号被加工
的数据表达式2.4.1 认识C中的运算符和表达式算术运算符
赋值运算符
关系运算符
逻辑运算符
逗号运算符
条件运算符
…... C 中运算符null2.表达式的运算结果称为表达式的值 1. 运算符和运算分量构成表达式二. 表达式算术表达式
赋值表达式
关系表达式
逻辑表达式
逗号表达式
条件表达式
…... §2.4 算术运算与赋值运算(续)null三. 学习运算符应掌握的要点:* 运算符的种类与功能* 运算符与运算分量的关系个数
类型A + B (a>b) ? a: b目不同类型的变量,所
允许的操作不同单目运算符
双目运算符
三目运算符 §2.4 算术运算与赋值运算(续)null*优先级: 运算符的执行顺序 *结合性: 优先级相同时的结合方向*运算结果的类型X=5+8
‘a’>100X=a+b*c
a+b-c
5>7>2
a=b=5
单目运算符的优先级高于双目运算符
单目运算符从右向左结合
双目运算符从左向右结合 §2.4 算术运算与赋值运算(续)null2.4.2 算术运算符和算术表达式1. 共有5个:+,-,*,/,%2 “-”作为 负号时为单目单目: -双目:*, /, %双目:+,-4. 优先级: 5. 结合性: 从左向右 3. %运算只适用于整型数取模(求余数)
a=10%4
a的值为2 §2.4 算术运算与赋值运算(续)null2.4.3 自增、自减运算符1. 变量自身加(减)1 k =k+1k ++ 先使用变量k的值,再加 1++ k 先加1,再使用变量 k的值 k = k-1k - - 先使用变量k的值,再减 1- - k 先减1,再使用变量k 的值 k=3; printf( “%d”, k ++); 输出 3 后, k 的值为 4i=3; printf( “%d”, ++ i); 输出4 §2.4 算术运算与赋值运算(续)null2. 只能用于变量,不能用于表达式和常量3. 优先级:高于双目算术运算符4. 结合性:从右向左(i+k) ++ , - - 3i=3; k=i++ + i++ + i++;i=3; k= ++i + ( ++i) + (++i); §2.4 算术运算与赋值运算(续)null main( )
{ int a , b , s ;
a = 5 ; b = 5 ;
s= a+b ; printf(“%d,%d,%d\n”,a,b,s);
s= a++ +b; printf(“%d,%d,%d\n”,a,b,s);
s= ++a+b; printf(“%d,%d,%d\n”,a,b,s);
s= - -a +b; printf(“%d,%d,%d\n”,a,b,s);
s= a- - +b; printf(“%d,%d,%d\n”,a,b,s);
s= a + b; printf(“%d,%d,%d\n”,a,b,s);
} §2.4 算术运算与赋值运算(续)nulls = a + b ;
s = a++ +b ;
s = ++a +b ;
s = - -a +b ;
s = a- - +b ;
s = a + b ;
a=5, b=55+5=10
5+5=10
7+5=12
6+5=11
6+5=11
5+5=10 a b s
5 5 10
6 5 10
7 5 12
6 5 11
5 5 11
5 5 10 §2.4 算术运算与赋值运算(续)null2.4.4 赋值运算符赋值表达式1. 将一个常量或一个表达式的值赋给一个变量称为赋值x = 5 y = x + 10 2. 可以将一个实型赋给一个整型,或将一个整型赋给一个实型int x, x=5.3; x的值为 5
float y, y=5; y的值为 5.0000003. 赋值运算的优先级比算术运算低4. 赋值运算的结合性从右向左X = y = 5 §2.4 算术运算与赋值运算(续)null2.4.6 复合赋值运算符和复合赋值表达式x=x+n
x=x-n
x=x*n
x=x/n
x=x%nx + = n
x - = n
x * = n
x / = n
x% = n算术运算与赋值运算相结合 §2.4 算术运算与赋值运算(续)x+=nnullmain( )
{ int a, b, c, d, e;
a=2; b=5 ;c= 6;d=10;
a + =b; b- =c;
c * =d; d / =a;
a%=c;
printf(“%d,%d,%d,%d\n”,
a , b , c , d); }7,-1,60,1 §2.4 算术运算与赋值运算(续)null一、逗号运算符(表达式 1,表达式 2,表达式 3,……表达式 n)用于连接几个表达式 二、求解过程顺序求解几个表达式三、优先级逗号运算符的优先级最低四、结合性从左向右五、逗号表达式逗号表达式的值为最后一个表达式的值(表达式n 的值)X = ( ( a=4*5 , a*2 ) , a+6 )a为? x为?§2.5 逗号运算2.5.1 逗号运算符null §2.6 混合运算及数据类型转换 不同数据类型需先转换成同一类型,然后进行运算自动进行-------隐式转换
强制进行-------显式转换一、隐式转换(算术转换)级别低的向级别高的转换int i; float f; double d; long e;
表达式:10+’a’+i*f-d/e 的结果为:
doublenull二、显式转换(强制转换) (int) (10-+’a’+i*f-d/e)将该结果强制转换为整型若有:int i;float f;
则(int)f%i取模运算要求运算分量是整数,所以先将 f 转换为整型,再做%运算。三、赋值转换 赋值符号右边的类型向左边的转换int x;
float y = 5.3;
x=y;int x=5;
float y;
y=x; §2.6 混合运算及数据类型转换(续) null一 、C中的基本数据类型,每一种类型的定义方式(关键字),
在存储空间中所占的字节数,存储形式,取值范围。二、 C中的运算符的几个要点(功能,与运算分量的关系,优
先级 ,结合性,运算结果的类型)。三 、算术运算符中的%只使用在int类型。四、 自增,自减运算的特点,灵活使用k++,++k。五 、复合的赋值运算规则。七、 不同类型数据转换时的优先顺序八、单目运算,双目运算的优先级和结合性特点null二 、 补充习题:
1、C语言规定,在源文件中,main()的位置: ( )
A、必须在最开始 B、必须在库函数后
C、可以在任意位置 D、必须在所有函数最后
2、一个C程序的执行是从: ( )
A、从主函数开始,在主函数中结束;
B、从第一个函数开始,到最后一个函数结束;
C、从主函数开始,到最后一个函数结束;
D、从第一个函数开始,到主函数中结束。
3、下面选项中,全为不合法的用户标识符的选项是: ( )一、课后习题(P41 3、6、7、9、10、12)nullA)、 A B)、 float C)、 b-a D)、-123
p_0 1a0 goto temp
do _a int INT
4、以下叙述种不正确的是: ( )
A、在C程序中,逗号运算符优先级最低;
B、在C程序中,AHP和ahp代表两个不同的变量;
C、若变量a、b类型相同,则表达式a=b是将b的值放入a中,而b不变;
D、输入数据时,整型变量只能输入整数,实型变量则只能输入实数。
5、设有说明: char w; int x; float y; double z;
则表达式:w*x+z-y的值的类型为 : ( )
A、 float B、char C、int D、doublenull6、在C语言中,int型数据在内存中占用2字节存储单元,则int型数据的取值范围为:___________。
7、若a为int型变量,则如下表达式的值为:__________。
(a=4*5), a+=5, a+6
8、若有如下定义:
int b=7; float a=2.5, c=4.7;
则表达式:a+(int)(b/3*(a+c)/2)%4 的值为:__________。