内容正文:
<<C语言程序设计>> 课程
第2章 程序设计基础知识
Page 1
<<C语言程序设计>>
主要内容
2.1 数据表示
2.1.1数据类型(难点)
2.1.2常量(重点)
2.1.3变量(重点)
2.2 数据操作
2.2.1运算符与表达式(重点难点)
2.2.2类型转换(难点)
2.3 算法与三种基本程序结构
2.3.1算法及其描述
2.3.2三种基本程序结构(重点难点)
Page 1
<<C语言程序设计>>
程序设计基础
问题引入
通过编程解决问题,其本质是对数据的操作,这些数据可能是数学问题中的数值(整数或小数),可能是信息处理中的文字(字符或字符串),也可能是更复杂的数据或文件
那么在C语言中如何表示这些数据?如何对数据间的运算进行描述?
【引例】根据三角形的三个边长,计算三角形的面积,其计算公式为:
area= (其中a、b、c为三角形的三个边长,s=(a+b+c)/2)
试分析:
在这个问题中涉及哪些数据: ;
其中已知量有: ;
未知量有: 。
a
b
c
单击此处编辑母版文本样式
第二级
第三级
第四级
第五级
Page 1
<<C语言程序设计>>
2.1 数据表示
2.1.1 数据类型
2.1.2 常量
2.1.3 变量
单击此处编辑母版文本样式
第二级
第三级
第四级
第五级
Page 1
<<C语言程序设计>>
2.1.1 数据类型
2.1 数据表示
计算机处理数据信息时,需要明确数据到底是什么类型,以便分配合适的存储空间,并按照相应的规则进行操作。所以在程序编写时要对数据进行明确的类型说明。
单击此处编辑母版文本样式
第二级
第三级
第四级
第五级
Page 1
<<C语言程序设计>>
2.1.1 数据类型
2.1 数据表示
程序
演示
运行结果:
【例2-1】计算并输出半径为r的圆的面积。
#include <stdio.h> //包含标准输入输出头文件
void main( ) //主函数
{ float r,area; //数据准备,定义半径r和面积area
printf("请输入半径:"); //提示语
scanf("%f",&r); //输入半径值r
area=3.14*r*r; //数据计算,将结果赋值给area
printf("该圆的面积为:%f.
",area); //输出面积值
}
数据类型: r,area为float(实型)变量: r,area 常量3.14(π)
Page 1
<<C语言程序设计>>
基本数据类型有三种:
整型(int)
字符型(char)
实型
单精度型(float)
双精度型double)
2.1.1 数据类型
2.1 数据表示
Page 1
<<C语言程序设计>>
1.整型
2.1.1 数据类型
2.1 数据表示
名称 符号 存储空间 数的范围
短整型 short 2字节(16位) -32768~+32767(-215~+215-1)
基本整型 int 2字节(16位) -32768~+32767(-215~+215-1)
4字节(32位) -2147483648~+2147483647(-231~+231-1)
长整型 long 4字节(32位) -2147483648~+2147483647(-231~+231-1)
无符号短整型 unsigned short 2字节(16位) 0~65535(0~216-1)
无符号基本整型 unsigned int 2字节(16位) 0~65535(0~216-1)
4字节(32位) 0~4294967295(0~232-1)
无符号长整型 unsigned long 4字节(32位) 0~4294967295(0~232-1)
Page 1
<<C语言程序设计>>
2.浮点型
浮点型又分为单精度和双精度。其符号表示、所占存储空间大小、有效数字及数的范围如表。
2.1.1 数据类型
2.1 数据表示
名称 符号 存储空间 有效数字 数的绝对值范围
单精度浮点型 float 4字节(32位) 6~7 3.4×10-38~3.4×1038
双精度浮点型 double 8字节(64位) 15~16 1.7×10-308~1.7×10308
Page 1
<<C语言程序设计>>
程序的结构特点
3.字符型
字符型数据涵盖了ASCII码字符集中每一个字符,包括可直接显示的字符和32个控制字符,见附录A。
字符型用char表示,占存储空间1个字节(8位),实际上存放的是该字符所对应的ASCII码值(一个整数),所以字符型和整型的关系非常特殊,二者经常“混搭”,如’A’+1代表字母’B’。
2.1.1 数据类型
2.1 数据表示
Page 1
<<C语言程序设计>>
2.1.2 常量
2.1 数据表示
常量按照数据类型来分有:
整型常量
浮点型常量
字符常量
字符串常量
按照表现形式来分有:
直接常量
符号常量
Page 1
<<C语言程序设计>>
1.直接常量
(1)整型常量
整型常量有十进制、八进制和十六进制三种表示方式,如表2-3所示。
2.1.2 常量
2.1 数据表示
表示方式 前置符号标志 构成 示例
十进制 无 0~9、正负号 65,-57
八进制 0 0~7、正负号 032,027,-033
十六进制 0x或0X 0~9,a~f(或A~F)、正负号 0x101,0Xff
整型常量默认为基本整型,可以在整型常量后加小写字母l或大写字母L得到相应的长整型常量。
例 30000 为int型
65536 为long int 型
例 (1) 200 23L
(2) 067 083 02
(3) 0x20 0xfff 0xh3
Page 1
<<C语言程序设计>>
1.直接常量
(2)浮点型常量
浮点型常量有十进制小数和指数形式两种表示方式 。
2.1.2 常量
2.1 数据表示
表示方式 符号标志 构成 示例 规则
十进制小数 小数点 . 0~9、正负号和小数点 1.23,.23,-1. 必须有唯一的小数点
指数 字母e或E 0~9、正负号、e或E 1.23e3,1.23E3 字母e或E前必有数,e或E后必为整数
34.1335e-1 3413.35E-3 0.341335e2
e3、2.1e3.5、e是不合法的指数形式
Page 1
<<C语言程序设计>>
1.直接常量
(3) 字符型常量
用单撇引号括起来的单一字符称之为字符型常量。
转义字符表示时以反斜杠“\”作为标志符号。
字符型常量在内存中占1个字节。
2.1.2 常量
2.1 数据表示
例如:
1.'a','B','9','*'是合法的直接字符常量。
2.单引号、双引号和反斜杠等具有特殊用途的字符只能用转义字符表示,即'\''、'\"'、'\\'。
3.'
', '\030', '\x19'是合法的转义字符常量,分别代表回车换行、↑、和↓等控制字符。
Page 1
<<C语言程序设计>>
2.1.2 常量
2.1 数据表示
表示形式 含义
回车换行(将光标移到下一行开头)
\t 横向跳格(Tab)
\b 退格(将光标前移一列)
\a 警告(产生声音提示信号)
\\ 输出反斜杠\
\’ 输出单引号’
\ " 输出双引号”
\ddd ddd为1至3为八进制数,如’\101’代表A,’\37’代表▼符号
\xhh Hh为1至2位十六进制数,如’\x1E’代表▲符号
1.直接常量
(3) 字符型常量--常见的转义字符及其含义如表2-5所示
单击此处编辑母版文本样式
第二级
第三级
第四级
第五级
Page 1
<<C语言程序设计>>
2.1.2 常量
2.1 数据表示
1.直接常量
(4)字符串常量
字符串常量就是用双撇引号括起来的一串字符序列,字符串中含有的字符个数是该字符串的长度。字符串存储时,每个字符占1个字符,并在字符串的结尾自动加上一个字符串结束标志’\0’,因此字符串的存储长度比字符串的字符个数多1。
a
a \0
例 ‘a’
“a”
例 空串 “”
\0
单击此处编辑母版文本样式
第二级
第三级
第四级
第五级
Page 1
<<C语言程序设计>>
2.符号常量
符号常量标识符通常大写,以便和其他标识符相区别。另外,宏定义命令和头文件包含命令一样都属于编译预处理,需要写在程序开头位置。
2.1.2 常量
2.1 数据表示
#define 符号常量标识符 常量值
Page 1
<<C语言程序设计>>
#include <stdio.h>
#define PI 3.14 //定义符号常量PI代表3.14
void main( )
{ float r,area;
printf("请输入半径:");
scanf("%f",&r);
area=PI*r*r;
printf("该圆的面积为:%f.
",area);
}
2.1.2 常量
2.1 数据表示
【例2-4】使用符号常量实现【例2-1】——计算并输出半径为r的圆的面积。
#define 符号常量标识符 常量值
Page 1
<<C语言程序设计>>
【随堂练习2-1】
1.判断下列常量表示正确与否?
整型常量:32768、037、081、0x4f、0xAH
浮点型常量:.124、3.0、1e3、2.3E1.5
字符型常量:'a'、'101'、65、'\x21'
2.字符串常量“How are you?
”的字符串长度为( )个字节,它占用的存储空间为( )个字节。
3.“d:\windows\info.txt”在C语言程序设计时应描述为( )。
4.在编程处理物理力学相关运算时,常将重力加速度G定义为符号常量,其定义语句可描述为( )。
2.1.2 常量
2.1 数据表示
Page 1
<<C语言程序设计>>
1.变量
(1)概念:在程序运行过程中其值可以改变的量称为变量
(2)变量定义的一般格式为:
类型标识符 变量名1,变量名2,…,变量名n;
2.1.3变量
2.1 数据表示
注意:变量必须先定义,后使用。
数据类型,即决定分配字节数
和数的表示范围
合法标识符
例:
int a,b,c;
float data;
例1
int student;
stadent=19; /*Undefined symbol ‘statent’ in function main*/
Page 1
<<C语言程序设计>>
1.变量
(3)【例2-5】
1).float r,area;
2).double a,b,c;
3).int i=1,s;
4).long m,k;
5).char ch;
2.1.3变量
2.1 数据表示
变量定义后,系统会根据变量
的类型分配相应的存储空间。
注意区分变量名与变量值
…...
地址
int a=1, b=-3,c;
a
b
c
2字节
2字节
2字节
地址
地址
…...
内存
1
-3
随机数
Page 1
<<C语言程序设计>>
1.变量
(4)【随堂练习2-2】
1.下列变量定义中合法的是:
(1)long do=0xfd;
(2)int max=min=0;
(3)double f, int a;
(4)char ch="A";
2.1.3变量
2.1 数据表示
Page 1
<<C语言程序设计>>
2.2数据操作
2.2.1运算符与表达式
2.2.2类型转换
Page 1
<<C语言程序设计>>
运算符:在运算数据时,用来表示各种运算的符号
1. 运算符的种类
1) 算术运算符 +- * / % ++ --
2) 关系运算符 > < == >= <= !=
3) 逻辑运算符 ! && ||
4) 位运算符 > > < < ~ | ^ &
5) 赋值运算符 = 及其扩展赋值
6) 条件运算符 ? :
7) 逗号运算符 ,
8) 指针运算符 * &
2.2.1运算符与表达式
2.2数据操作
Page 1
<<C语言程序设计>>
2.2.1运算符与表达式
2.2数据操作
运算符 含义 举例 结果 说明
+ 加法运算符 a+b a与b的和 无
- 减法运算符 a-b a与b的差 无
* 乘法运算符 a*b a与b的乘积 由于键盘无×号,乘法运算以*代替。
/ 除法运算符 a/b a除以b的商 由于键盘无÷号,除法运算以/代替。注意:两个整数相除的结果为整数,如3/2的结果为1,舍去小数部分。
% 求余运算符 a%b a除以b的余数 求余运算%仅用于整数间的运算,若存在负整数,则余数的正负号与被除数相同,如-3%2的结果为-1。
++ 自增1运算符 a++或
++a 使a的值加1 ++和--为单目运算,且只能用于单一变量
运算++a和--a,是在使用a之前,先使a的
值加1或减1
a++和a--,是在使用a之后,再使a的值加1
或减1
-- 自减1运算符 a--或
--a 使a的值减1
1.算术运算符和表达式
Page 1
<<C语言程序设计>>
1.算术运算符和表达式
【例2-6】分析程序输出结果。
#include <stdio.h>
void main( )
{ int a=3,b=-5,i=2,j=2;
printf("%d,%d,%d,%d,%d
",a+b,a-b,a*b,a/b,a%b);
printf("%d,%d,%d,%d
",a++,b--,++i,--j);
printf("%d,%d,%d,%d
",a,b,i,j);
}
2.2.1运算符与表达式
2.2数据操作
程序
演示
运行结果:
Page 1
<<C语言程序设计>>
2.赋值运算符和表达式
2.2.1运算符与表达式
2.2数据操作
简单赋值运算符: =
复合赋值运算符: += -= *= /= %=
x*=y+8
x=x*(y+8)
x%=3
x=x%3
s+=i
s=s+3
说明:
赋值运算符左侧必须是变量,不能是常量或表达式
赋值运算时,赋值号右边表达式值自动转换成其左边变量的类型
例 int i;
float j;
i=2.56; //结果i=2;
j=i; //结果i=2.0;
例: a=b=c=5
a=(b=5)
a=5+(c=6)
a=(b=4)+(c=6)
a=(b=10)/(c=2)
//表达式值为5,a,b,c值为5
// b=5;a=5
//表达式值11,c=6,a=11
//表达式值10,a=10,b=4,c=6
//表达式值5,a=5,b=10,c=2
Page 1
<<C语言程序设计>>
(1)不同类型数据运算时,自动转换成同一类型,再进行计算.
double
float
Long
unsigned
int
char,short
低
高
说明:
必定的转换
运算对象类型不同时转换
2.2.2类型转换
2.2数据操作
Page 1
<<C语言程序设计>>
(2)也可以对数据类型进行强制转换
例 (int)(x+y)
(int)x+y
(double)(3/2)
(int)2.6
说明:强制转换得到所需类型的中间变量,原变量类型不变
例 main()
{ float x;
int i;
x=3.6;
i=(int)x;
printf(“x=%f,i=%d”,x,i);
}
结果:x=3.600000,i=3
精度损失问题
较高类型向较低类型转换时可能发生
2.2.2类型转换
2.2数据操作
Page 1
<<C语言程序设计>>
【随堂练习2-3】
1.double a=3.14;int b; b=(int)a;,执行该语句后,变量b的值为3,变量a的值还是3.14,并且变量a的类型也不改变,依旧是double类型。
2.有定义语句:char ch='M';,写出将变量ch变为小写字母的表达式: 。
2.2.1类型转换
2.2数据操作
Page 1
<<C语言程序设计>>
2.3 算法与三种基本程序结构
2.3.1算法及其描述
2.3.2三种基本程序结构
Page 1
<<C语言程序设计>>
1.算法的概念
对于计算机程序可处理的问题来说,程序中所用到的数据以及对这些数据的类型和数据组织形式的描述称之为“数据结构”.
对数据处理所采用的方法和步骤等操作的描述称为“计算机算法”。
作为程序设计人员,必须认真考虑和设计数据结构和操作步骤(即算法)。著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:
2.3.1算法及其描述
2.3 算法与三种基本程序结构
程序=数据结构+算法
Page 1
<<C语言程序设计>>
2.3.1算法及其描述
2.3 算法与三种基本程序结构
图形符号 名称 含义
起止框 算法的起点和终点,是任何流程图比不可少的
输入、输出框 数据的输入和输出操作
处理框 各种形式数据的处理
判断框 判断条件是否成立,成立时在出口处标注“是”或“Y”,不成立时标注“否”或“N”
特定过程 一个特定过程,如函数
流程线 连接各个图框,表示执行的顺序
连接点 表示与流程图其它部分相连
流程图符号
Page 1
<<C语言程序设计>>
下面对【例2-1】的算法描述改用流程图的方法表示
2.3.1算法及其描述
2.3 算法与三种基本程序结构
开始
结束
计算圆的面积area
area=3.14*r*r
输入半径r值
输出面积值area
Page 1
<<C语言程序设计>>
1.顺序结构
顺序结构指算法的实现过程按照相应的步骤依次顺序执行,直至结束。顺序结构是最简单的一种基本结构。
2.3.2三种基本程序结构
2.3 算法与三种基本程序结构
Page 1
<<C语言程序设计>>
1.顺序结构
2.3.2三种基本程序结构
2.3 算法与三种基本程序结构
开始
结束
计算圆的面积area
area=3.14*r*r
输入半径r值
输出面积值area
Page 1
<<C语言程序设计>>
2.选择结构
又称为分支结构,此结构中必包含一个条件判断,根据判断结果从两种或多种路径中选择其中的一条执行。
2.3.2三种基本程序结构
2.3 算法与三种基本程序结构
Page 1
<<C语言程序设计>>
2.选择结构
2.3.2三种基本程序结构
2.3 算法与三种基本程序结构
结束
计算圆的面积area
area=3.14*r*r
r是否合法
输出“输入错误”提示
输出面积值area
输入半径r值
是
否
开始
Page 1
<<C语言程序设计>>
3.循环结构
又称重复结构,其含义是当条件允许时,反复执行某些操作。
2.3.2三种基本程序结构
2.3 算法与三种基本程序结构
否
输入半径r值
r是否合法
否
是
开始
结束
是否继续
是
计算圆的面积area
area=3.14*r*r
输出“输入错误”提示
输出面积值area
Page 1
<<C语言程序设计>>
【随堂练习1-3】
1.试分析本单元“引例”的数据结构和实现算法,并绘制算法流程图。
2.3.2三种基本程序结构
2.3 算法与三种基本程序结构
Page 1
<<C语言程序设计>>
课程小结:我们学习了什么?
数据类型
int float double char
常量与变量
常量:整型常量、浮点型常量、字符常量
字符串常量、符号常量
变量:必须先定义,后使用。
数据操作
运算符与表达式:++ -- +=
类型转换:自动类型转换与强制类型转换
算法与三种基本程序结构
程序=数据结构+算法
顺序结构、选择结构、循环结构
Page 1
<<C语言程序设计>>
<<C语言程序设计>>
Page 1
<<C语言程序设计>>
$$