Presentation is loading. Please wait.

Presentation is loading. Please wait.

C程序设计 第三章 简单的c程序——顺序结构

Similar presentations


Presentation on theme: "C程序设计 第三章 简单的c程序——顺序结构"— Presentation transcript:

1 C程序设计 第三章 简单的c程序——顺序结构
主讲教师: 鲁 萍 西安建筑科技大学 理学院

2 第三章 简单的C程序设计——顺序 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句——赋值语句
3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 常量、变量 整形、字符型、浮点型 运算符及表达式 3.3 C语句——赋值语句 3.4 数据的输入和输出 scanf 和 printf getchar 和 putchar 小 结 习 题

3 顺序程序设计举例 A0301 华氏温度(如68℉)转为摄氏温度(如20℃) #include<stdio.h> 输入 f 的值
int main() { float f,c; f=68.0; c=( 5 / 9 ) * ( f – 32 ); printf("f=%f\nc=%f\n",f,c); return 0; } 输入 f 的值 输出 c 的值 5.0 F= C= C=

4 顺序程序设计举例 A0302例: 根据圆半径,求圆周长和圆面积。 键盘输入 #define PI 3.1416 int main()
{ float r, a,b; r=2; a=2*PI*r; b=PI*r*r; printf(“半径=%f\n周长= %f\n面积= %f\n", r, a, b); return 0; } 输入半径r 的值 周长 a=2*pi*r 面积 b=pi*r*r scanf("%f",&r); 输出 a、b 的值 半径= 周长= 面积=

5 3.2 数据的表现形式及其运算 一、数据的概念 在计算机科学中,数据是指能由程序处理的对象。
姓名 Alice 性别 F 年龄 20 英语 80 数学 85 平均 字符串 字符 整型 实型 一、数据的概念 在计算机科学中,数据是指能由程序处理的对象。 日常生活中的数字、字符、图形图象及声音等,在计算机中均作为数据看待。 二、数据的类型 在高级语言中,每一个数据都属于一个特定的类型。 不同类型的数据的表示、存储及操作不相同。

6 常量与变量 3.3.1 常量和符号常量 1、常量: 在程序运行过程中,其值不能被改变的量。 常量说明关键字:const。 2、常量的分类: 1)整型常量。如:1234,56 2)实型常量。如:123.23 3)字符常量。如:‘A’,‘a’,‘m' 4)字符串常量。如:"A","China" 5)转义字符。如:'\n','\t','\123','\xF9' 6)符号常量。如:#define PI #define N 30

7 转义字符 例:在屏幕上输出一个笑脸(ASCII码值为2) #include<stdio.h> void main() {
printf("%c\n", 2); /*输出"笑脸"字符*/ } 通过程序,理解转义字符,同时 上机复习 程序调试方法1 通过程序调试方法1,学习其他转义字符 增加一个转义字符的图

8 符号常量 #include<stdio.h> 概念:用一个标识符表示常量 #define PI 3.1416
main() { float r,area; printf(" please enter r:"); scanf("%f",&r); area=PI*r*r; printf("The area is %f", a); } 概念:用一个标识符表示常量 #define 标识符 常量表达式 例: #define PI 注意:1)标识符一般用大写 2)不能给符号常量赋值 例:PI=6; 错误 常用于: (1) 把有意义的常数定义为符号常量 (2)在程序中多次出现的常数,定义为符号常量 优点:含义清晰;一改全改

9 符号常量的应用 例2.3 录入50个学生的成绩,统计100~90,89~80,79~70,69~60,59~0个分数段学生的人数,并显示统计结果(统计结果 记为count) 30 #define N 50 30 S1.1:使i=1 S1.2:输入 ni 学生的成绩 S1.3:i=i+1 S1.4:如果i≦50,执行S1.2 自顶向下: 1: 录入50个学生的成绩 2:统计个分数段学生的人数 3:显示统计结果 N 30 S2.1:使i=1 S2.2:判断ni学生的属于哪个分数段,该分数段人数+1 S2.3:i=i+1 S2.4:如果i≦50,执行S2.2 30 N S3.1:使i=1 S3.2:显示counti S3.3:i=i+1 S3.4:如果i≦5,执行S3.2

10 3.2.2 标示符与变量 1、变量 变量:在程序执行过程中其值可以改变的存储单元,该存储单元的名字称为变量名。
变量有不同的类型,存放不同类型的数据。 注意:变量要 先定义再使用 定义变量 : 类型 变量名表; a b c 变量名 变量值 int a,b,c; a=3; b=8; c=a+b; a=5; 变量是程序在运行期间用来存放数据的装置[容器],当程序将一个数据放入变量时,变量中原来存放的数据被新的数据取代,而当从变量中取出一个数据时,变量中的数据不会发生变化 存储单元 3 5 8 11

11 变量的命名规则 标示符 (1)标示符是以字母或下划线开头,由字母、数字及下划线等组成的字符序列,如:abc,_x1,AB67,NAME2;
用于命名程序中的实体对象(如变量,符号常量函数,数组等) (1)标示符是以字母或下划线开头,由字母、数字及下划线等组成的字符序列,如:abc,_x1,AB67,NAME2; (2)序列长度最大值依编译系统而定; (3) 区分大小写字母,如 abc 和Abc是不同的变量 (4)不允许使用关键字作变量名。 例: 123d r auto 5A *2 # (错误) _123d r_ Auto (正确)

12 C语言的数据类型图 构造类型 数组 结构(struct) 共用体(union) 其它类型 指针(point) 空类型(void) 基本数
数值型 整 型 基本型(int) 短整型(short) 长整型(long) 无符号型(unsigned) 浮点型 单精度(float) 双精度(double) 长双精度(long double) 枚举型(enum) 字符型(char) 字符 字符串 在C语言中,数据类型用相应的关键字表示

13 3.2.3 整型 类型 存储大小 取值范围 int 2字节 -215~215-1 -32768 ~ 32768
类型 存储大小 取值范围 int 字节 ~ ~ 32768 short 2字节 ~ ~ 32768 long 4字节 ~231-1 long long 8字节 ~263-1 身份证号,学号? ------没有负数! 数值位 符号位

14 C语言的unsigned和signed数
符号位 数值位 对整型和字符型 1、signed:有符号数 可以存放正数和负数 2、unsigned:无符号数 只能存放正数 (实数没有unsigned和signed的区分) 如:身份证号,学号等。 取消符号位,与右边的各位一起用来表示数值本身。 数值位 16 整型默认有符号型

15 3.2.3 整型 类型 存储大小 取值范围 int 16bit -215~215-1 -32768 ~ 32768
类型 存储大小 取值范围 int bit ~ ~ 32768 shortint bit ~ ~ 32768 long int bit ~231-1 unsigned int ~ ~ 65535 unsigned short int ~ ~ 65535 unsigned long int ~232-1

16 3.2.4 字符型数据 A0303 例:字符数据的算术运算。 int main() { char c1,c2;
c1='a'; c2=98; printf("%c %c\n",c1,c2); printf("%d %d\n",c1,c2); return 0; } 字符变量:关键字 char ,占1字节 字符常量:用单引号括起来的单个字符 (1)可以是转义字符 \n (2)存储: 字符的ASCII码 (3)输出: 整数 或 字符 (4)允许对字符进行算术运算(即对ASCII码值进行算术运算) 本页重点: (1)字符变量的定义及说明 (2)字符变量的存储及赋值 c1 c2 变量名 变量值 存储单元 97 a 98

17 3.2.4 字符型数据 A0303例:字符数据的算术运算。 int main() { char c1,c2; c1='a'; c2=98;
字符 ASCII码 a b c A0303例:字符数据的算术运算。 int main() { char c1,c2; c1='a'; c2=98; printf("%c %c\n",c1,c2); printf("%d %d\n",c1,c2); return 0; } 以字符方式输出 变量值 c1 c2 变量名 c1+1; 'a'+1; 存储单元 97 a 本页重点: (1)字符和ASCII的关系 (2) %c 和 %d 98 以整数方式输出 运行结果: a b 97 98

18 3.2.4 字符型数据 课堂练习:给定一个小写字母,输出大写字母。 #include <stdio.h>
int main() { char c1,c2; c1=‘a’; c2=c1-32; printf("%c",c2); return 0; } 基于前两页PPT知识,课堂完成本页例题 要求: (1) 观察ASCII码表,找出大写和小写字符的转换规律 (2) 画出流程图 (3) 写出程序 运行结果: Please input a char: a (输入) A (输出)

19 3.2.5 浮点型数据 实型变量分为三种: 1、单精度:float(有效数字7位) 2、双精度:double(有效数字16位)
3、长双精度:long double(有效数字19位) 。

20 3.4.2 舍入误差 return 0; A0304例:数据有效长度 int main() { float a,b;
b=a+20; printf("%f\n",b); return 0; } 期望: 实际: double 错误原因: float有效数字7位,后面的数字无意义。 如何得到正确计算结果?

21 数据在内存中的存储方式 1.内存单元的地址: 内存单元的编号,与变量名对应。 2.内存单元的内容:变量的值。 例: 对如下定义:
int a,b; char c; float x; 变量a,b,c,x的内存分配情况: a b x c

22 基本数据类型练习 1.以下正确的字符常量是( ) A) ‘A’ B)’\398’ C)"A" D)’\xgh’
1.以下正确的字符常量是( ) A) ‘A’ B)’\398’ C)"A" D)’\xgh’ 2.以下正确的整数常量是( ) A) B)0xhf C) D)9.0 3.以下是正确的实型常量是( ) A) B)0.5e C)1.2e+2.6 D)e-2 4.设有char a= ‘a’;int i=2;printf("%c",a+i)的结果为 : A)‘c’ B)‘d’ C)‘r’ D)'g‘ 5、以下转义字符用于换行的是( ) 。 A)'\r' B)'\t' C)'\n' D)'\\'

23 3.2.7 运算符和表达式 1 基本算数运算符 + (加), - (减法/取负), * (乘), / (除), %(模运算,即求余数)
运算符和表达式 1 基本算数运算符 + (加), - (减法/取负), * (乘), / (除), %(模运算,即求余数) 运算符的优先级为: () *,/ % +,-

24 关于除法运算"/"的说明 a/b: ① a,b 都是整数,其商取整数,小数部分舍弃 例: 5 / 2 = 2 结果取整商值
例: 5 / 2 = 结果取整商值 ‘a’/2=  97/2 的整商值 ② a,b其一是实型,另一个自动转换为实型 例如:5. / 2 = 2.5 ; 5 / 2. = 2.5 例如:1 / 2 = 0 ; 1 / 2. = 0.5

25 关于求余数运算符"%"的说明 a%b : 求a除以b的余数 。 ① a,b均为整型,或者单字符数据
例: 5 % 2 = 1 ‘a’%2=  97%2 5. 0% 错

26 自增(++)、自减(- -)运算实例 } ++i  i=i+1,使i的值增1 --i  i=i-1,使i的值减1
A0305例:自增自减运算符 int main(){ int a,b,c,d; a=5; b=5; c=++a; d=b++; printf(" c=%d\n", c); printf(" d=%d\n", d); printf(" a=%d,b =%d \n",a,b); return 0; } 先将a值自加1,再将增加后的a值赋值给c 先将b的值赋给d,然后b再自加1 输出结果: c=6 d=5 a=6, b=6

27 自增(++)、自减(- -)运算 2、用法与运算规则 (1)前置运算:++i、--i;即先增减、后运算
先使 i 增(减)1, 再以增、减后的值参与其它运算 (2)后置运算:i++、i--。即先运算、后增减 变量先参与其它运算, 然后再使变量的值增、减1

28 【自增、自减运算的几点说明】 1) ++ 、--只能用于变量,不能用于常量和表达式。 例1:5++、--(a+b) 错误
2)其结合方向是从右到左,注意前置、后置问题。 例2:int a=5,b; b=-a++; 运算结果: a=6 b=-5 (a++: 后置运算,先引用变量的值,然后变量值加1) 3)在表达式中,避免这种用法 x+++x+++x++

29 算术表达式 例:a /* 简单表达式*/ 2 /* 简单表达式*/ (x + y) / 2 – 1 /*复杂算术表达式 */
/* 简单表达式*/ (x + y) / 2 – 1 /*复杂算术表达式 */ (1)概念:用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合语法规则的式子,称为表达式。 (2)表达式求值:按运算符的优先级高低次序执行 例:设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式结果不同的是() A. (a+b)*h/ B. (1/2)*(a+b)*h C. (a+b)*h*1/ D. h/2*(a+b)

30 算术表达式 常用函数: 1)幂次方用函数pow() 3)平方根用函数sqrt()表示
使用以上数学函数需要#include<math.h> 例1: 代数式 x3+x-2 算术表达式:3*pow(x,3)+x-2 例2 代数式 算术表达式:a/2-(6*y)/(5*x)

31 3.7 不同类型数据之间的转化 1.自动转化 2.类型强制转化 例: int i; float f; double d; long e
如何计算: 10+’a’+i*f-d/e ? 1.自动转化 2.类型强制转化

32 3.7 不同类型数据之间的转化 混合运算的转化规则
转化规则: 运算符两侧的操作数的数据类型不同,则系统 "先转换、后运算" ,首先将数据自动转换成同一类型,然后在同一类型数据间进行运算。 double ← float long unsigned int ← char , short 1) ← 表示必须的转换。char和short 型必须转换成 int 型,float型必须转换成double型。 2) ↑表示不同类型的转换方向。

33 类型强制转化和自动转化实例 int i; float f ; double d ; long e
10+’a’+i*f-d/e 计算机从左到右扫描 1)10+’a’ =107 i*f i, f 转为double运算 107转为double+i*f e转为double 上述类型转换为系统自动进行。 double ← float long unsigned int ← char , short

34 将3.5转化为整型数赋值给y,但x本身的类型和其值未改变
数据类型强制性转化 强制转换:转化为为指定的数据类型。 格式: (要转换成的数据类型)(被转换的表达式) A0306 例:取整运算 main() { float x=3.5; int y; y=(int)x; printf("y=%d",y) ; printf("x=%f",x) ; } 将3.5转化为整型数赋值给y,但x本身的类型和其值未改变 y=3 x=3.5 此处补充 关于 "四舍五入" int(x+0.5) 强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。

35 数据类型强制性转化说明 (1)类型名称必须用()括号括起来 (2)强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。
(3)当被转换的表达式是一个简单表达式(如简单变量)时,外面的一对圆括号可以缺省。 (double)a (float)5/2 (float)(5/2)  (double)(a) (float)(5)/2 将5转换成实型再除以2;(=2.5) (float)(5/2) 将5整除2的结果转换成实型2.0

36 算数运算符练习(1) 1.设 int x,y=3;执行x=y++之后,x,y的值分别为: A)3,5 B)4,5 C)3 ,4 D)4,4
2.设有int m,i=5;执行m=++i之后,m,i的值分别为: A)5, B)5, C)6, D)6,5 3. 表达式7%5的值为: ( ) A)1 B) C) D) 0 4.设有a=2,b=5,x=3.5;表达式(float)a+b/2+(int)x%2的结果值为:( ) A) B) C) D)7

37 算数运算符练习(2) 5、float x=3.5,y=3.6,则表达式(int)(x+y)的结果值为:( ) A)6 B)4 C)3 D)7
7、设有char a= 'A';int i=a/2;printf("%d",i)的结果为: ( ) A) B) C) D)67

38 3.3 C语言的语句 1.控制语句: (1)选择结构控制语句: if()~else~, switch()~
(2)循环结构控制语句:do~while(), for()~, while()~, break, continue (3)其它控制语句: goto, return 2. 函数调用语句:由一次函数调用加一个分号构成。 例如,printf("This is a C function statement."); 3. 表达式语句:表达式后加一个分号构成。 例如: num=5; 是一个赋值语句。 4.空语句:仅由一个分号构成,不执行任何操作。 例: ;

39 3.2 C语言的语句 5. 复合语句:由大括号括起来的一组语句构成。 例如: main() { …… {……} /*复合语句。。*/ ……
{ …… {……} /*复合语句。。*/ …… } 注意:没有分号

40 赋值语句及赋值运算符 赋值运算符: = 变量 = 表达式 将表达式的值赋给变量 例1: t=x+5 p=q=r=9
赋值运算符: = 变量 = 表达式 将表达式的值赋给变量 例1: t=x+5 p=q=r=9 x=(y=1)-(z=2) P=9 x=-1 注意:赋值运算符按自右而左的结合顺序 例:float f; f=23; /*计算机中f= */ 注意:将右边表达式类型转化为左边变量的类型

41 复合赋值运算 += -= *= /= %= <<= >>= &= ^= |= 例: a+=2  a=a+2
+= -= *= /= %= <<= >>= &= ^= |= 例: a+=2  a=a+2 a*=3  a=a*3 x+=y+7  x=x+(y+7) a*=5+6  a=a*(5+6) a/=3*5  a=a/(3*5) 运算时要把整个表达式当做一个整体

42 3.4 数据输出/输入 1)C语言中本身不提供输入/输出语句,所有的输入/输出操作都是由函数来实现的。
printf, scanf, putchar, getchar 2)使用输入输出库函数时,必须 #include <stdio.h>

43 3.4 数据的输入输出 A0307例: 求 ax2+bx+c=0 方程的根。设b2-4ac>0 a, b, c 由键盘输入
#include<math.h> int main() { float a,b,c,disc,x1,x2,p,q; printf("输入a b c : "); scanf(“%lf%lf%lf”,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf("x1=%7.2f \nx2=%7.2f\n", x1,x2); return 0; } 计算disc= b2-4ac 计算 p 和 q 本例题 复习: (1)算术表达式的C语言表示 (2) math.h (3) 键盘输入,输出 延伸:控制 小数点后位数 引出:输入输出函数及格式 讲解方式: 先在黑板上分析 二元一次方程的求根过程,给出p和q的定义 再演示幻灯片上的算法 计算根 x1 和 x2 输出x1,x2

44 printf 函数输出数据 例: printf("max= %d",c); printf("sum=%d " , a+b);
功能:向屏幕输出一个或 多个任意类型的数据。 语法: printf( 格式控制字符串, 输出项表列); 整形 实型 字符型 多用于提示信息 例: printf("max= %d",c); 原样输出的字符串 格式字符串 输出列表: 变量或表达式 printf("sum=%d " , a+b); printf("The area is %f " , a); printf("%c %c\n",c1,c2); printf("Please input a char:");

45 printf 函数输出数据 i=2,c=H,x=3.140000 输出结果 %d, 按整型数的实际长度输出十进制数 (1) 常用格式符之一
%s, 输出一个字符串 A0308 例:输出不同类型的数据 #include<stdio.h> void main(){ int i=2; char c= ′H ′; float x=3.14; printf("i=%d,c=%c,x=%f\n", i,c,x); } 输出结果 i=2,c=H,x=

46 printf格式字符说明 %f, 不指定字段宽度,整数全部输出,并输出6位小数 %m.nf, 指定输出共m列,其中小数n位
运行结果 例: 输出实数 #include<stdio.h> void main() { float x,y; x= ; y= ; printf(" %f \n", x+y); } 只有前7位有效 %8.1f 运行结果

47 scanf函数输入数据 功能:从标准输入设备中读字符串 语法:scanf(控制字符串,参数1,参数2,…)
例:scanf("%d,%d",&a,&b); 1) 输入的数据存放在参数列表中,参数必须是地址(&变量) 若控制字符串中包含普通字符,则输入时必须与其对应 格式说明, 用"%d %d"格式输入时,不能用逗号作为数据分割符,可以用回车和tab键

48 输入函数 scanf 1.输入变量前要加符号& 2.输入函数格式要求严格 3.类型必须匹配 4.控制串中的普通字符必须原样一起输入
用系统默认的分隔符: 回车、tab键、空格 例452: int a,b; scanf("%d,%d",&a,&b); printf("a=%d,b=%d",a,b); 例452: int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d",a,b); float f f f f 输入: , 200 输出: a=100 ,b=200 输入: 100 □ 200 输出: a=100 ,b=200 1.输入变量前要加符号& 2.输入函数格式要求严格 3.类型必须匹配 4.控制串中的普通字符必须原样一起输入 例如:scanf("a=%d,b=%d",&a,&b); 输入 a=2,b=3。

49 3.4.5 字符数据输出/输入 A0309例:从键盘输入一个小写字母,输出大写字母。 #include <stdio.h>
int main() { char a,b; printf("Please input a char:"); scanf("%c",&a); /*键盘输入一个字符*/ b=a-32; printf("%c\n",b); /*屏幕输出一个字符*/ return 0; } a=getchar(); putchar(b); putchar(‘\n’); 运行结果: Please input a char: a (输入) A (输出)

50 字符的输入输出getchar和putchar
1. 单个字符的输出──putchar(c)函数 格式: putchar(c); 输出c: 字符变量、常量、转义字符 例: putchar(c); putchar(‘a’); putchar(‘\n’); 2. 单个字符的输入──getchar()函数 函数的格式: getchar(); 该函数没有参数 从键盘上输入一个字符,通过返回值带回程序。 ▲程序执行到该函数将暂停,等待从键盘输入数据 例:c= getchar();

51 3.4.5 字符数据输出/输入 A0310:从键盘输入三个字符,原样输出 #include <stdio.h>
int main() { char a,b,c; printf("请输入三个字符: "); a=getchar(); b=getchar(); c=getchar(); putchar(a); putchar(b); putchar(c); putchar('\n'); return 0; }

52 小结——数据 数据类型 数据运算 数据 输入输出 %d, 整型 char c1, c2; 变量 常量 123 ‘a’ 123.5
整形: int,long int 字符型: char 浮点型: float , double c1 c2 变量名 数据类型 变量值 存储 单元 97 a 98 数据运算 * / % = %d, 整型 %f, 浮点型 %c, 字符型 数据 输入输出 printf scanf 例: printf("max= %d",c); 例: scanf("%d,%d",&a,&b); putchar getchar 例: putchar(‘a’); putchar( c1); 例: c2=getchar();

53 习题 B0301 习题3.1 假如我国国民生产总值的年增长率为9%,计算10年后,我国国民生产总值与现在相比增长多少百分比。计算公式为 p=(1+r)n, 其中 r为年增长率,n为年数,p为与现在相比的倍数。 B0302 习题3.6 编写程序将“China”译成密码。规则:用字母后第4个字母代替原字母。例如“E” 代替“A”。 B0303 键盘输入三角形三边长,求三角形面积。 上机练习习题3.4


Download ppt "C程序设计 第三章 简单的c程序——顺序结构"

Similar presentations


Ads by Google