haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 初中教育 > 初中作文初中作文

c2

发布时间:2013-11-01 13:30:14  

C语言程序设计基础知识 问题: 章节:

Slide: 2-1

傅忠传
哈尔滨工业大学 计算机学院
2003年8月

C语言程序设计基础知识 问题: 章节:

Slide: 2-2

第二章 简单的C程序设计

C语言程序设计基础知识 问题: 章节:

Slide: 2-3

该章的学习内容
1. 掌握C语言的数据类型,常量和变

学点什么哪
?

量的使用。 2. 掌握常用运算符和表达式的使用。 3. 掌握表达式语句的格式,理解表达 式与表达式语句的区别。

4. 熟练掌握字符输入/输出函数及有格
式输入/输出函数的使用方法。

C语言程序设计基础知识 问题: 章节:

Slide: 2-4

本章的学习难点

1. 熟练掌握字符的输入/输出函数及有格式输 入/输出函数的使用方法。 2. 正确理解增1和减1运算符在表达式中应用。 3. 熟练运用各种常用的C标准数学函数。 4. 正确地写出各种数学表达式对应的合法的C 语言表达式。 5. scanf和printf函数的格式控制问题。

C语言程序设计基础知识 问题: 章节:

Slide: 2-5

本章目录
1. *各种进位制的转换 2. 基本数据类型 3. 常用运算符及表达式 4. 表达式语句 5. 基本输入输出操作的实现 6. 输入输出操作中常见的错误分析 7. *程序举例

C语言程序设计基础知识 问题: 章节:

Slide: 2-6

各种进位制的转换
1. 常用进位制 1.1.十进制 1.2.二进制 1.3.八进制 1.4.十六进制 2. 进位制间的转换 2.1.二,八,十六进制 → 十进制 2.2.十进制 →二进制 (整数部分、小数部分) 2.3.二进制与八进制、十六进制的转换

C语言程序设计基础知识 问题: 章节:

Slide: 2-7

十进制
数码
基值 0、1、2、3、4、5、6、7、8、9 10

进位原则 逢十进一,借一当十。

C语言程序设计基础知识 问题: 章节:

Slide: 2-8

二进制
数码 0、1
基值 2

进位原则 逢二进一,借一当二。

对照表
举例

二进制 十进制

0 0

1 1

00,01,10,11,100,101,110,111,1000,1001… 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 …

C语言程序设计基础知识 问题: 章节:

Slide: 2-9

八进制
数码 0、1、2、3、4、5、6、7
基值 8

进位原则 逢八进一,借一当八。

对照表
举例

八进制 0 十进制 0

1 1

2 2

3 3

4 4

5 5

6 6

7 7

0237,0289

C语言程序设计基础知识 问题: 章节:

Slide: 2-10

十六进制
数码 基值 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 16

进位原则 逢十六进一,借一当十六。
对照表
十六进制 十进制 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 A B C D E F 10 11 12 13 14 15

举例

3DH

C语言程序设计基础知识 问题: 章节:

Slide: 2-11

二,八,十六进制 → 十进制
按权展开
(11011.1)二 =1×24+1×23+0×22+1×21+1×20+1×2-1
=27.5 (32.5)八=3×81+2×80+5×8-1=26.625 (1A.6)十六=1×161+10×160+6×16-1=26.375

C语言程序设计基础知识 问

题: 章节:

Slide: 2-12

十进制 →二进制——整数部分
除二取余法: (278)10=( 100010110 )2
2 278 139 2 69 2 2 34 2 17 2 8 2 4 2 2 2 1 0 ………0 ………1 ………1 ………0 ………1 ………0 ………0 ………0 ………1 低位

高位

C语言程序设计基础知识 问题: 章节:

Slide: 2-13

十进制 →二进制——小数部分
乘二取整法: (0.3125)10=( 0.0101
0.3125 × 2 0.6250 × 2 0.2500 × 2 0.5000 × 2 0.0000 高位 ………0 ………1 ………0 ………1 低位

)2

C语言程序设计基础知识 问题: 章节:

Slide: 2-14

二进制与八进制、 十六进制的转换
1. 二进制→八进制、十六进制 2. 八进制、十六进制→二进制 3. 计算机中符号的表示

C语言程序设计基础知识 问题: 章节:

Slide: 2-15

二进制→八进制、十六进制
11010111.01 B = ? O = ? H

0 11 010 111 . 01 0 B

1101 0111 . 01 00 B D 7 . 4 H

3

2

7 . 2 O

说明:二进制数转换成八(十六)进制数时,整数部分由低位向高位,每 三(四)位一组转换,最后一组不足三(四)位,则前端填0占位。 小数部分由高位向低位,每三(四)位一组转换,最后一组不足三

(四)位,则后端填0占位。

C语言程序设计基础知识 问题: 章节:

Slide: 2-16

八进制、十六进制→二进制
327.2O = ?B D7.4H= ?B

3

2

7 . 2 O

D

7 .

4

H

011 010 111 . 010 B

1101 0111 . 0100 B

说明:八(十六)进制数转换成二进制数时,不论整数部分还是小数部 分顺序不变,每一个八(十六)进制位转换成三(四)位二进制。同 时八(十六)进制到十六(八)进制的转换,可通过二进制转换。

C语言程序设计基础知识 问题: 章节:

Slide: 2-17

计算机中符号的表示
符号信息
方法

数值信息

0表示正号,1表示负号。
原因 计算机中的任何信息必须使用二进制数来表示。

计算机中为什么使用二进制?
1. 二进制数便于物理元件的实现。

2. 二进制数的运算方法简单。 元件易实现。

C语言程序设计基础知识 问题: 章节:

Slide: 2-18

基本数据类型
在程序中要处理大量的数
数据为什 么有类型

据,对于数据来说,它们有着 某些相同的属性,处理规律相 同,存储格式、取值范围也相 同。我们将具有相同属性的数 据称为一类,即数据类型,符 合计算机中数据的存储方式。

之分?

C语言有丰富的数据类型,可以表达复杂的数据结构 学习任何语言,首先要学习其数据类型.

C语言程序设计基础知识 问题: 章节:

Slide: 2-19

C

数 数组类型 据 构造类型 结构类型 类 共用体类型 型
空类型
指针类型

整型 基本类型 字符型 浮点型(实型) 枚举类型

语 双精度型 言 的 数 据 类 型
单精度型

C语言程序设计基础知识 问题: 章节:

Slide: 2-20

基本数据类型
在计

算机中存储的数据,按存储的性质 分,可分为:

?常量

?变量

C语言程序设计基础知识 问题: 章节:

Slide: 2-21

常量
定义

在程序执行过程中,其值始终不 变的量,常量不占用存储空间。

分类 整常数、浮点常数、字符常数。 特殊常量 符号常量

C语言程序设计基础知识 问题: 章节:

Slide: 2-22

整常数
定义 是由数字串组成的数据。

分类 十进制常数、八进制常数和十六进制常数。 十六进制数:以0x开头。 八进制数:以0开头。 十进制数:非0开头。 例如:0x12 例如:01234 0010 -1234 例如:1234 0x0 00 -0xc4 -01234

C语言程序设计基础知识 问题: 章节:

Slide: 2-23

浮点常数
指数形式——科学表示法 十进制形式——自然表示法 指数形式——科学表示法 就是用d E n的形式表示自然表示法的 就是日常生活中用数字和小数点组成 实型常数,其中:d为数值部分;n为指数 的常数表示法。例如: -12.345 24.123 0.0 2. .2 部分,必须为整数。例如: -12.34 -12.34e0 -1.234e+1 -0.1234e2 0.0000012 0.12e-5 0.0 0e0 √ 2.345e1. 5 × 2.345e2.0 ×

C语言程序设计基础知识 问题: 章节:

Slide: 2-24

字符常数
定义
注明

转义字符

程序举例

#include <stdio.h> '\'' 字符常数是由一对引号括起的一个 定义:C语言中一些以\开头的字符串具 '\n' 换行。 1.单引号和双引号定义的字符常数的意 回车换行,Enter键的功能。 main( ) 1到3位八进制数所代表的字符。 有特殊意义,具有控制功能,这些字符 或多个字符。当一个字符时,使用单引 '\ddd'一个双引号。 '\ "' ) 义不同。 main( { char c1, c2, c; 输出结果: 串称为转义字符,用单引号括起。 '\ char c1, c2; 号;当是字符串(一个或者为多个字符) 2.单双引号是英文的单双引号,而不是 \' '\xhh'一个反斜线。 1到2位十六进制数所代表的字符。 { c1=97; c2=100; 输出结果: a b '\0' (c=c1; c<=c2; c++) '\b' 空字符,作为字符串的结束标识。 时,采用双引号。 Space。a b c d 中文意义下的单双引号。 c1=97; c2=98; for 退一格,Back '\t' printf("%c",c); '\f' 水平跳格,水平制表,Tab键功能。 举例: 3.单字符可看成整形数和字符型数输出, 走纸换页。 printf("%c %c",c1,c2); } '\v' "a" "abc" '8' "123" '\r' 回车。 也可对单字符数据进行算术运算。 'a' 垂直跳格。

C语言程序设计基础知识 问题: 章节:

Slide: 2-25

定义 变量就是在程序执行过程中,其值可 即变量名,程序对该变量访问(存入,读取) 以改变的量。 都是通过变量名进行的。变量在内存占据 存储空间,因此对变量也可以通过它在内存 中的地址,即指向变量的指针进行。e a b c d
7 x=c

变量 在程序中,每一个变量都有一个名字,

c=7

C语言程序设计基础

知识 问题: 章节:

Slide: 2-26

变量类型
原因
类型说明 举例: int i, j, I, count; 变量是存放常量值(数据) short a=?y?, b; 注明 的,常量(数据)有类型 long l1, l2; 之分,因而变量也有类型 变量分类 unsigned n1,n2; 之分,变量类型是来确定 char c1, c2,c3; 其变量存储空间的长度和 float x1, 存储格式。 x2; ?字符变量 ?整形变量 ?浮点变量 double w, y, z1, z2;
一般格式:类型名 变量名表;

变量必需 先定义, 后使用。

C语言程序设计基础知识 问题: 章节:

Slide: 2-27

整形变量
符号位 数值部分

存储形式 整形变量分类

标准整形(int) 短整形(short) 长整形(long) 无符号整形(unsigned)

C语言程序设计基础知识 问题: 章节:

Slide: 2-28

标准整形
定义格式
定义举例
int 变量名表;
int i, j, k; int n=5;//定义变量同时进行初始化

当n=5时: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1

当n=-5时: 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1

取值范围

16位: -32768~32767

int a=1234567; int b=32768;

C语言程序设计基础知识 问题: 章节:

Slide: 2-29

短整形——等同标准整形
定义格式
定义举例
short int 变量名表;

short int i, j, k; short n;

当n=5时: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1

当n=-5时: 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1

取值范围

16位: -32768~32767

C语言程序设计基础知识 问题: 章节:

Slide: 2-30

长整形
定义格式
定义举例
long int 变量名表;

long int i, j, k; long n;

当n=5时:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
1 当n=-5时: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1

取值范围

32位: -2,147,483,648~2,147,483,647 long int i=1234567;

C语言程序设计基础知识 问题: 章节:

Slide: 2-31

无符号整数
定义格式
unsigned int 变量名表;
unsigned int i, j, k; unsigned n;

定义举例

当n=5时: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1

取值范围

16位: 0~65535 大于等于零

unsigned int n=-29; unsigned int n=123456;

C语言程序设计基础知识 问题: 章节:

Slide: 2-32

浮点数据
浮点数据的机内表示:
阶码

j
阶符 阶码数值部分

数符

尾数数值部分

尾数

S

浮点数分类 阶码是整数,阶符和阶码的位数合起来反映浮点数的表数范
围——表数范围及小数点的实际位置;尾数是小数,其位数反

单精度浮点数 双精度浮点数 映了浮点数的精度——表数精度;尾数的符号代表浮点数的正负。
N= S*10j

C语言程序设计基础知识 问题: 章节:

Slide: 2-33

浮点变量的说明
定义格式 定义举例
取值范围
符号位 单精度类型 1 阶码 尾数 8 23 总位数 32 有效位数 7 15~16

float 变量名表; double 变量名表; float x, y, z; double d=0.; d=0 ;

单精度数 双精度数

双精度类型

1

11

52

64

C语言程序

设计基础知识 问题: 章节:

Slide: 2-34

字符变量
定义格式
定义举例 变量性质 注明
char 变量名表;

char c1, c2, c3; char c4;
一个字符变量在内存中占一个字节。字符变量 只能存放一个字符。字符在内存中以ASCII码 值的形式存储,因此可以象整数一样运算。

不能把字符串常量赋给字符变量。 char c1=?a?; char c1="abcd";

C语言程序设计基础知识 问题: 章节:

Slide: 2-35

符号常数(1)
两个半径分别为R1、R2的圆相交,
其中:函数SS(X1,X2,X3)返回三角形的面积 函数BB(X1,X2,X3)返回三角形X1边所 对角的角度。

相交的弦长为L1。求两圆共覆盖的面积。

C语言程序设计基础知识 问题: 章节:

Slide: 2-36

#define PI 3.14 main( ) {float r1, r2, l1, s, alpha1, alpha2; scanf("%f%f%f", &r1, &r2, &l1); alpha1=BB(l1, r1, r1); s1= 3.14 *r1*r1*alpha1/(2* 3.14 ) PI PI alpha2=BB(l1, r2, r2) s2= 3.14 *r2*r2*alpha2/(2* 3.14 ) PI PI s= 3.14 *r1*r1+ 3.14 *r2*r2-s1-s2+ PI PI SS(r1,r1,l1)+SS(r2,r2,l1) printf("S=%f\n", s); }

符号常量(2)

C语言程序设计基础知识 问题: 章节:

Slide: 2-37

符号常量(3)
定义 用一个标识符号代表的一个常量,这时,
此标识符号与此常量是等价的。

格式 #define 标识符 数据; 举例
#define PI 3.14; #define S “S=”

说明 #define PI=3.14是错误的!
在编译时,将PI自动替换成3.14。符号常 量其实是一个宏,这个过程称为宏替换。

C语言程序设计基础知识 问题: 章节:

Slide: 2-38

常用运算符及表达式
?算术运算符和算术表达式
?赋值运算符和赋值表达式 ?增1和减1运算符

?位式运算
?逗号运算符及逗号表达式 运算符按照性质分:算术运算符,关系运算符,逻辑运

算符;按照操作数个数分为:单目运算符,双目运算符.

C语言程序设计基础知识 问题: 章节:

Slide: 2-39

算术运算符和算术表达式
1.算术运算符 2.算术表达式

C语言程序设计基础知识 问题: 章节:

Slide: 2-40

算术运算运算符
+ 加法运算符或正值运算符。 举例:3+5 减法运算符或负值运算符。 +a 举例:3-5 * 乘法运算符。 -a 举例:3*5 / 除法运算符。 -

举例:3/5 % 模除运算符,或称为求余运算符。 举例:10%5=0 13%5=3 -13%5=-3 13%(-5)=3

C语言程序设计基础知识 问题: 章节:

Slide: 2-41

算术运算的运算规则(1)
1.运算的优先顺序为先*、/、%,后+、-, 同等优先级从左到右运算。

2.两个类型相同的操作数,运算结果类型 也相同。
举例:18*5/9 5/9*18 2.5*8.0

C语言程序设计基础知识 问题: 章节:

Slide: 2-42

算术运算的运算规则(2)
3.两个类型不同的操作数,运算结果类型 与其中类型较高的类型相同。 举例:5.0/9 * 18 2.5*8 4.求余运算的运算结果其

值为相除所得余 数,而符号与被除数的符号相同。
举例:-13%5=-3 13%(-5)=3

C语言程序设计基础知识 问题: 章节:

Slide: 2-43

不同类型数据的运算
float char, short

double ? long ? unsigned ? int 高 低

自动类型转换

C语言程序设计基础知识 问题: 章节:

Slide: 2-44

算术表达式
其中:运算对象包括常量、变量、函数等。 a+b a+b/c+d (a+b)/(c+d) 举例 c+d a+b (a+b)/2c (a+b)/2*c 2c (a+b)/(2*c) cos(45)+2*exp(x) cos45°+2ex cos(3.14*45/180) +2*exp(x)

定义 用算术运算符将运算对象连接起来的式子。

C语言程序设计基础知识 问题: 章节:

Slide: 2-45

算术表达式的举例
1 (lgx-lnx) 2

1.所有表达式 必须以线性 说明: 形式写出。 1/2*[lg(x)-ln(x)] 2.只能使用合法的标识符 3.乘号只能用* 1.0/2*(lg(x)-ln(x)) 4.函数自变量可以是表达式 1.0/2*(log10(x)-log(x)) 且其必须写在括号内,三角 0.5*(log10(x)-log(x)) 函数的参数以弧度表示 5.为指明正确的运算顺序, (log10(x)-log(x))/2 可以使用“( )”,不能使用“ [ ]”或“{}”。

C语言程序设计基础知识 问题: 章节:

Slide: 2-46

算术函数
函数名 sqrt(x) fabs(x) log(x) log10(x) exp(x) pow(x,y) sin(x) cos(x) tan(x) asin(x) acos(x) atan(x) 功 能 计算x的平方根 计算x的绝对值 计算lnx的值 计算lgx的值 计算ex的值 计算xy的值 计算sinx的值 计算cosx的值 计算tanx的值 计算arcsinx的值 计算arccosx的值 计算arctanx的值

使用说明:

表中函数的自变 以上函数的返回 使用数学函数时 量取值应有意义。 的值均为双精度类 应在该程序中加上 sqrt(1) 型。 蕴含控制行: # sqrt(-1) <math.h> include asin(0.5) asin(2)

C语言程序设计基础知识 问题: 章节:

Slide: 2-47

赋值运算符和赋值表达式
其他语言的赋值语句≈C语言的赋值表达式 算式格式 变量=表达式

运算过程 1.求表达式值。2.赋值。
举例 A=B+3*C Y=1+3*SIN(X)*CON(X)

C语言程序设计基础知识 问题: 章节:

Slide: 2-48

赋值运算的说明

1.“=”不是等于号,而是赋值运算符。 2. 赋值运算符左边必须是变量,不能是表 达式,并且赋值运算要由右向左进行。 A+B=3; 2+C=3; 3. 赋值运算符的右边还可是一赋值表达式, 称为多重赋值表达式。 4. 赋值运算符右侧表达式的值即为赋值表 V1=V2=V3=……=表达式; 达式的值。 A=B+3*C X=Y=Z=100; 5. “=”是赋值运算符,不能写成“==”。 Y=1+3*SIN(X)*CON(X)

C语言程序设计基础知识 问题: 章节:

Slide: 2-49

二元运算赋值表达式
在赋值运算符前又加一个二元运算符构 成一个新的赋值运算符。 格式 V oper= E; 相当 V=V oper E; 举例 I+=3; /*相当于I=I+3*/ I<<=3; /*相当于I=I<<3*/

C语言程序设计基础知识 问题: 章节:

Slide: 2-50

增1和减1运算符
增1和减1运算是

在访问变量之前或之后 进行增1或减1运算。 先增运算 后增运算 先减运算 后减运算

用--V表示,先使V值减 +表示,先访问V, 用V --表示,先访问V, 用+ +V表示,先使V值 用V + 增1和减1运算符是单目运算符,且操作对 1,然后再访问。然后再使V值增1 。 然后再使V值减1 。 增1,然后再访问。 象只能是变量 ,不能是常量或表达式。

C语言程序设计基础知识 问题: 章节:

Slide: 2-51

程序举例3.1
#include <stdio.h> main( ) {int i,j; j=0; for(i=1; i<5; ++i) printf("%d",++j); } #include <stdio.h> main( ) {int i,j; j=0; for(i=1; i<5; ++i) printf("%d", j ++); }

1234

0123

C语言程序设计基础知识 问题: 章节:

Slide: 2-52

程序举例3.2
a=8,x=125 #include <stdio.h> b=1, y=1 main( ) {int a=5 , b=4 , x , y; b=b-1;b=b-1;b=b-1; y=b*b*b; x=a++*a++*a++; printf (“a=%d, x=%d\n”, a, x); 信不信 y=--b*--b*--b; x=a*a*a; 由你! _测 printf (“b=%d, y=%d\n”, b, y); a=a+1;a=a+1;a=a+1; } 试!

?

C语言程序设计基础知识 问题: 章节:

Slide: 2-53

main() {int a,b,c; a=b=c=0; a=++b+(++c); printf("%d,%d,%d\n",a,b,c); a=(b++)+c++; printf("%d,%d,%d\n",a,b,c); a=(++b)+c++; printf("%d,%d,%d\n",a,b,c); a=(b--)+(--c); printf("%d,%d,%d\n",a,b,c); ++c; a=2*(++c); printf("a=%d\n",a); }

程序举例3.3
a=2; b=1; c=1 a=2; b=2; c=2 a=5; b=3; c=3 a=5; b=2; c=2 a=2; b=2; c=3

a=8; b=2; c=4

C语言程序设计基础知识 问题: 章节:

Slide: 2-54

位式运算
数的三种表示形式
位式运算

C语言程序设计基础知识 问题: 章节:

Slide: 2-55

数的三种表示形式
原码 反码 补码 一个数如果值为正数,则它的补码与原 一个数如果值为正数,则它的反码与原 符号位为0表示正数,符号位为1表示负
码相同;一个数如果值为负,则符号位为1, 数,数值位是其值的绝对值。

其余各位是对原码取反,末位加1。 其余各位是对原码取反。 正数:0000101101110101 正数:0000101101110101 负数:1000101101110101 为简化运算部件设
负数:1111010010001011 负数:1111010010001010 计计算机中大部分 数据要用补码表示

C语言程序设计基础知识 问题: 章节:

Slide: 2-56

位式运算
运算要求 参加运算的操作数必须为整数或 字符型。

运算过程 按照整数中的二进制位进行运算。 运算结果 计算结果为整数。 运算符号 &(与) |(或) ^(异或) ~(反, 一元) <<(左移) >>(右移)

C语言程序设计基础知识 问题: 章节:

Slide: 2-57

位式运算的运算规则
& | ^

~

<<

>>

优先级

说明

右移位:对a>>n, 将操作数a右移n位, 位式与:对a&b,仅当a、b的对应位均 左移位:对a<<n, 将操作数a左移n位, 位式取反:对应操作数每位上的0, 结果 位式异或:对a^b, 仅当a、b的对应位 位式或:对a|b, 只要a、b的对应位有一 按~、移位、&、^、|

顺序优先级递减。 1.关系运算和逻辑运算的结果非0即1, 而 对有符号数来说,左边空位填符号位的 为 1 ,结果该位为 1,否则该位为0。 该位为 ,结果该位为 1,否则该位为0。 相反时 1,否则该位为0。 个为 1 ,结果该位为 1,否则该位为0。 高位左移后溢出,舍弃不起作用,低位 位式运算结果可为任意二进制数。 值,称算术移位;对无符号数,左边空 举例:3&5=0011&0101=0001=1 填0补位。 举例:~5=~0000 0101=1111 1010 举例:3^5=0011^0101=0110=6 举例:3|5=0011|0101=0111=7 2. C语言是一门“中级语言”,使用位 位填0,称逻辑移位。 举例:15<<2=00001111<<2=00111100 运算可以对字节或字内的二进制位进行 举例:5>>2=00000101>>2=00000001 -5>>2=11111011>>2=11111110 操作,常用于编写系统软件。如在设备驱 动程序的设计中,屏蔽某些特殊位。

C语言程序设计基础知识 问题: 章节:

Slide: 2-58

逗号运算符及逗号表达式
算式格式 表达式1,表达式2
计算过程 先算表达式1,再算表达式2。 注明 1.表达式1还可以是逗号表达式。 2.逗号表达式的值是表达式n的值。 3.逗号运算符在所有运算符中优先级 最低。 表达式1,表达式2,……表达式n b=(a=3*5,a= y=(x=3,6*3); a*4, a=a+5, a/5) x=3, y=18 因而可称为顺序求值运算符。 y=x=3,6*3; 15 x=3, y=3 65 13 a=3*5, a*4;60 a=15 表达式=60 表达式=13 结果:b=13,a=65

C语言程序设计基础知识 问题: 章节:

Slide: 2-59

表达式语句
由表达式组成的语句称表达式语句,是 在表达式的后面加语句结束符——分号;
可作为表达式语句的表达式有:

赋值操作——赋值表达式 输入/输出操作——函数表达式

C语言程序设计基础知识 问题: 章节:

Slide: 2-60

赋值表达式语句
表示 在赋值表达式后,加分号;,称为 赋值语句。

A=5

A=5;

C语言程序设计基础知识 问题: 章节:

Slide: 2-61

赋值表达式
☆C语言中的赋值号“=”作为赋值运算符, 而不是等号,“==”和赋值号要注意区分。

举例:a=c+d
if ((a=b)>0) t=a ; 是否合法?

if ((a=b);>0) t=a ;

是否合法?

C语言程序设计基础知识 问题: 章节:

Slide: 2-62

函数调用语句
scanf("%d,%d",&a,&b); printf("%d",a);

C语言程序设计基础知识 问题: 章节:

Slide: 2-63

空语句与复合语句
1.只有一个分号组成的语句称为空语句。 是表达式语句的特例。

举例: ; 2.把多条语句用{}括起来构成复合语句,在 逻辑上将它看成一条语句。 举例: {x=0; y=1; z=2; }

C语言程序设计基础知识 问题: 章节:

Slide: 2-64

基本输入输出操作的实现
字符输入输出操作的实现 有格式输入输出操作的实现

C语言程序设计基础知识 问题: 章节:

Slide: 2-65

字符输

入输出操作的实现
C语言的输入输出函数的处理程序不在 C语言本身不提供输入输出语句,输入 C语言本身,因而在运行时要连接函数库, 输出操作是由函数实现的。 但必须在程序中将相应的文件头部加载。
例如:#include <stdio.h>

?字符标准输入

?字符标准输出

在终端显示器上输出数据。 在计算机终端键盘上输入数据。

C语言程序设计基础知识 问题: 章节:

Slide: 2-66

字符输入函数getchar
1.作用:从终端(或系统隐含指定的输入设 备)输入一个字符,由函数返回该字符。 2.举例: char c; c=getchar(); a↙ a

C语言程序设计基础知识 问题: 章节:

Slide: 2-67

字符输出函数putchar
1.作用:向系统隐含指定的输出设备即终 端显示器输出一个字符。 2.格式: char c; putchar(c);

C语言程序设计基础知识 问题: 章节:

Slide: 2-68

程序举例
#include <stdio.h> main() {char c; c=getchar(); putchar(c) ; }

C语言程序设计基础知识 问题: 章节:

Slide: 2-69

有格式输入输出操作 的实现
格式输出函数printf 格式输入函数scanf

C语言程序设计基础知识 问题: 章节:

Slide: 2-70

格式输出函数printf
功能: 格式: 说明: printf(格式控制,输出表列) 该函数按指定的格式 格式控制:也称为转换控制字符 输出多个、不同类型的数 串。它包含格式转换说明和需原 据。 样输出的普通字符。
输出表列:要输出其值的表达式 表列,该表列中的参数可为多个, 也可没有。 输出列表中变量的位置、个数和 类型必须与格式控制字符串中的 格式转换说明符对应。

举例:

C语言程序设计基础知识 问题: 章节:

Slide: 2-71

格式说明
格式说明是从“%”开始到其后第一个 格式说明符。
格式说明符: ⑴d格式符 ⑵o格式符 ⑷u格式符 ⑸c格式符 ⑺f格式符 ⑻e格式符

⑶x格式符 ⑹s格式符 ⑼g格式符

C语言程序设计基础知识 问题: 章节:

Slide: 2-72

d格式符
功能
格式
以带符号的十进制整形格式输出整数。 %d 按整形数据的实际长度输出 a=3; b=24; %md %0md 按长度为m输出整形数据 printf("%d_%d",a,b); a=123; b=12345; %ld 输出长整形数据 3_24 a=1234567; %d", a, a, b); printf("%4d, %05d, long _123, 00123, 12345 printf("%ld,%8ld",a,a); 1234567,_1234567

C语言程序设计基础知识 问题: 章节:

Slide: 2-73

o格式符
功能
以8进制、无符号形式输出整数。
由于是将内存单元的各位的值(0或1)按八进制 %mo 格式 %o

形式输出,因此输出的数值不带符号。 a=-1; 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 printf("%d,%o,%8o",a,a,a); -1,177777,△△177777
对于长整形数可以用“%lo”格式输出。

1

C语言程序设计基础知识 问题: 章节:

Slide: 2-74

x格式符


格式

以16进制无符号形式输出整数。
%x %mx

a=-1; 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 printf("%x,%6x,%o,%d",a,a,a,a); ffff,△△ffff,177777,-1 对于长整形数可以用“%lx”格式输出。

C语言程序设计基础知识 问题: 章节:

Slide: 2-75

u格式符
功能
以10进制无符号形式输出unsigned数据。
main() 一个unsigned型也可用%d、%o,%x输出。 11 11 11 11 11 11 11 11

一个有符号整数(int型)也可用%u输出;反之, %mu 格式 %u
{unsigned int a=65535; int b=-2; 11 11 11 11 11 11 11 10 printf("%d,%o,%x,%u",a,a,a,a); printf("%d,%o,%x,%u",b,b,b,b); } -1,177777,ffff,65535 -2,177776,fffe,65534

数值+类型 眼见为实 int以补码存储

C语言程序设计基础知识 问题: 章节:

Slide: 2-76

c格式符
功能
用来输出一个字符。 一个字符,可用c或d输出。 其值在0—255内的整数,可用c或d输出。 %mc 格式 %c char int c=65; c='a';c='a'; printf("%c,%d",c,c); printf("%c,%3c",c,c); A, △△a 65 a, 97 注:上行的%c和c的意义不同。

C语言程序设计基础知识 问题: 章节:

Slide: 2-77

s格式符
功能
格式
输出字符串,直到遇到字符串结束标识\0为止。

%-m.ns输出的字符串占m列。 %m.ns输出的字符串占m列。 %-ms 输出的字符串占m列。 %ms %s 按字符串的实际长度输出。 输出的字符串占m列。 printf("%-7.2s,%.4s","china","china"); printf("%7.2s","china"); printf("%s","china"); printf("%3s,%-7s","china","china"); printf("%3s,%7s","china","china"); china ch △△△△△,chin △△△△△ch△△ china,china china,△△china
1.右端输出m-n个空格,左端输出字符串左 n个字符。 1.左端输出m-n个空格,右端输出字符串左 1.当字符串实际长度>m,则按实际长度输出。 2.当字符串实际长度≤n 。则n为字符串长度。 2.当字符串实际长度≤m 。则左端补空格。 n个字符。 。则右端补空格。 3.当m没有时自动地m=n=4。 2.当字符串实际长度≤n 。则n为字符串长度。

C语言程序设计基础知识 问题: 章节:

Slide: 2-78

f格式符
功能
格式

以小数形式输出实数。

%-m.nf 按自定义格式输出实数。 %m.nf 按自定义格式输出实数。 %f 以系统指定的形式输出实数。 float x, y; x; x=123.456; x=111111.111; y=222222.222; printf("%-9.2f, %f",f, f); printf("%f,%10f,%10.2f,%.2f",x,x,x,x); printf("%f",x+y); 333333.328125 123.46 △ △ △ 123.455994 123.456001,,123.456001, △ △ △ △123.46, 123.46
1.输出数据宽度为m,输出n位小数,n+1位小数 1.系统自动指定数据宽度,整数部分全部 四舍五入;实际小数位<n,则左端填0占位。 输出,小数部分输出6位。 2.输出m-n-1位整数。前端按整数实际长度输出, 2.输出m-n-1位整数。实际整数位<m-n-1,前端 2.单精度数的有效位数为7位;双精度

数用%f输 当实际整数位<m-n-1,小数后端填空占位。 填空格占位,否则,按整数实际长度输出。 出时,有效位数为16位,小数位为6位。

C语言程序设计基础知识 问题: 章节:

Slide: 2-79

e格式符
功能
格式
以标准指数形式输出单、双精度实数。 %-m.ne 用自定义格式输出。 %m.ne 用自定义格式输出。 %e 用系统指定的标准格式输出。

float f=123.456; printf(“%e”,123.456); printf("%-10.2e,%e", f,f); 1.23456*10 printf("%e,%10e,%10.2e,%.2e", f,f,f,f);2 1.234560e+002 1.23e+002△, 1.234560e+002 1.234560e+002, 1.234560e+002, △1.23e+002, 1.23e+002 1.输出总宽度为13位。其中:数值位为8位, 1.输出总宽度为m位,数值部分小数为n位。 指数位为5位。 2.当m>n+7,则在指数部分后加m-n-7个空 2.当m>n+7,则在数字部分前加m-n-7个空 2.数值部分为0,或小数点前必须且只有一 格。 格,否则按实际长度输出。 位非0数字。

C语言程序设计基础知识 问题: 章节:

Slide: 2-80

g格式符
功能
格式
根据数值的大小,自动选择f或e输出实数。

%g

选择占宽度较小的一种。

float f=123.468; printf("%f,%e,%g",f,f,f); 123.468000, 1.234680e+002, 123.468000

C语言程序设计基础知识 问题: 章节:

Slide: 2-81

普通字符的输出
普通字符即需要原样输出的字符。 printf("a=%d b=%d", a, b); 普通字符

设a, b分别为3和4,则有: a=3 b=4

C语言程序设计基础知识 问题: 章节:

Slide: 2-82

输出列表举例
“输出表列”是需要输出的一些数据,可 以是表达式。可以有多项,也可以没有。 printf("a=%d a+b=%d", a, a+b);
输出表列 printf(“输出提示信息!");

C语言程序设计基础知识 问题: 章节:

Slide: 2-83

printf函数使用说明
4.可以在“格式控制”字符串内包 2.不同的系统实现输出时,输出结 含“转义字符”。例如: 3.如输出字符%,则在“格式控制” 1.有些系统要求格式字符要用小写 果会有小的差别。例如:e格式输 字符串重用连续的两个%字符。 字母。 \n,\t,\b,\r,\f等。 出时,指数部分有5位(e+002)和4位 (e+02)之分; 数值部分有效位数有5 printf("%f%%\n", 1.0/3); printf("%d, %f", a, a, f); √ printf("%d, %f\n", f); 位小数和6位小数之分。 输出:0.333333% printf("%D, %F", a, f); ×

C语言程序设计基础知识 问题: 章节:

Slide: 2-84

转义字符 \n \t \v

转义字符




\b \r \f \\
\ˊ \ddd(d为数据)

换行(回车换行) 横向跳格(跳向下一输出区)(8列) 竖向跳格 后退一格 回车(回本行第一列) 走纸换页 输出反斜杠字符 输出单引号字符 1到3位8进制数所代表的字符 1到2位16进制数所代表的字符

\xhh(x为数据)

C语言程序设计基础知识 问题: 章节:

Slide: 2-85

printf函数举例
#include <stdio.h> 1.a=29, a

= 29, a=29 ,a=0029 main() 2.a=35, a=0035, a=1d, a=0x1d {int a=29; 3.b=123456, b= 123456 long b=123456; 4.x=123.456001, x=123.46, x= 123.46, x=123.46 double x=123.456; char c=':'; printf("1. a=%d, a=%4d,", a, a); printf("a=%-4d, a=%04d\n", a, a); printf("2. a=%o, a=%04o,", a, a); printf("a=%x, a=0x%x\n", a, a); printf("3. b=%ld, b=%8ld\n", b, b); printf("4. x=%f, x=%.2f", x, x); printf("x=%10.2f, x=%-10.2f\n", x, x);

C语言程序设计基础知识 问题: 章节:

Slide: 2-86

printf("5.x=%e, x=%.2e, x=%g\n", x, x, x); printf("6.%c%8s%c\n", c, "how are you", c); printf("7.%c%15s%c\n", c, "how are you", c); printf("8.%c%+10.3s%c\n", c, "how are you", c); printf("9.%c%-10.3s%c\n", c, "how are you", c); } 5.x=1.234560e+02, x=1.23e+02, x=123.456001 6.:how are you: 7.: how are you: 8.: how: 9.:how :

C语言程序设计基础知识 问题: 章节:

Slide: 2-87

格式输入函数scanf
功能: 格式: scanf(格式控制,地址表列) 该函数可按指定的格 格式控制:与printf的格式控制含 式输入多个不同类型的数 义相同。 据,并将输入数据存入地 输出表列:是由若干个地址组成 址参数所指定的地址单元。 的表列,可以是地址,或字符串
首地址。 &:取地址符,单目运算符 格式: &变量名 双目运算符,位与运算

C语言程序设计基础知识 问题: 章节:

Slide: 2-88

scanf的格式控制
scanf附加的格式说明字符: l h 域宽 * 格式说明符: ⑴d格式符 ⑵o格式符 ⑶x格式符 ⑷c格式符 ⑸ s格式符 ⑹ f格式符 ⑺ e格式符

C语言程序设计基础知识 问题: 章节:

Slide: 2-89

scanf附加的格式说明字符

l







用于输入长整形数据(可用%ld、%lo、 %lx),以及double型数据(用%lf或%le) h 用于输入短整形数据(可用%hd、%ho、 %hx) 域宽(为以正整数) 指定输入数据所占宽度(列数)

*

表示本输入项在读入后,不赋给相应的 变量。

C语言程序设计基础知识 问题: 章节:

Slide: 2-90

d格式符
功能
格式
用来输入十进制整数。 %d %md %*md

②全用%md、%*md格式符: ①全用%d格式符: int a1, a2, a3; scanf("%2d%*3d%3d",&a1,&a2); scanf("%d%d%d",&a1,&a2,&a3); 1234567890 12 123 1234 结果: a1=12 a2=678 a3=无 结果:a1=12 a2=123 a3=1234 注:数据不用逗号分开或用空格分开。 注:数据必须用至少一个空格分开。 后面参数是地址列表,不是变量列表。

C语言程序设计基础知识 问题: 章节:

Slide: 2-91

o格式符
功能
格式
用来输入八进制整数。 %o %mo %*mo

②全用%mo、%*mo格式符: ①全用%o格式符: int a1, a2, a3; scanf("%4o%*3o%3o",&a1,&a2); scanf("%o%o%o",&a1,&a2,&a3); 0123045067025 012 0123 01234 结果: a1=0123 a2=067 a3=无 结果:a1=012 a2=0123 a3=01234 注:数据不用逗号分开或用空格分开。 注:数据必须用至少一个空格分开。

C语言程序设计基础知识 问题

: 章节:

Slide: 2-92

x格式符
功能
格式
用来输入十六进制整数。 %x %mx %*mx

②全用%mx、%*mx格式符: ①全用%d格式符: int a1, a2, a3; scanf("%4x%*3x%3x",&a1,&a2); scanf("%x%x%x",&a1,&a2,&a3); 0x120x30x4567890 0x12 0x123 0x1234 结果: a1=0x12 a2=0x4 a3=无 结果:a1=0x12 a2=0x123 a3=0x1234 注:数据不用逗号分开或用空格分开。 注:数据必须用至少一个空格分开。

C语言程序设计基础知识 问题: 章节:

Slide: 2-93

c格式符
功能
格式
用来输入单个字符。 %c %mc %*mc

①全用%c格式符: ②全用%mc、%*mc格式符: char a1, a2, a3; scanf("%c%c%c",&a1,&a2,&a3); scanf("%3c%*3c%3c",&a1,&a2); abc abcdefghijklmnopq 结果:a1='a' a2='b' a3='c' 结果: a1='a' a2='g' a3=无 注:数据不必用逗号或空格分开。 注:数据必须不用空格分开。

C语言程序设计基础知识 问题: 章节:

Slide: 2-94

s格式符
功能
用来输入字符串。

以后讲字符型数组再讲s格式符。

C语言程序设计基础知识 问题: 章节:

Slide: 2-95

f格式符
功能
格式
用来以小数形式输入十进制实数。 %f %mf %*mf

②全用%mf、%*mf格式符: ①全用%f格式符: int a1, a2, a3; float a1, a2, a3; scanf("%5f%*4f%5f",&a1,&a2); scanf("%f%f%f",&a1,&a2,&a3); 12.345.678.9012345 12.345 123.456 1234.567 结果: a1=12.34 a2=8.901 a3=无 结果:a1=12.345 a2=123.456 a3=1234.567 注:数据不用分开,或用空格分开。 注:数据必须只能用至少一个空格分开。

C语言程序设计基础知识 问题: 章节:

Slide: 2-96

e格式符
功能
格式
用来以指数形式输入十进制实数。 %e %me %*me

与f格式符基本相同,只是输入的 数据为指数形式。

C语言程序设计基础知识 问题: 章节:

Slide: 2-97

输入输出操作中常见的错误分析
⑷若想在屏幕上输出一行提示信息,然后输入 ⑸在输入数据时,遇以下情况时该数据认为本 数据, 下列语句错误。 ⑶用scanf函数输入数据时,数据的输入形式与 ⑴格式化输入输出的数据类型与所用格式说明 ⑵用scanf函数输入数据时,变量前忘记使用地 输入结束。 int a1, a2; 格式要求不符。 符不一致。 址符&。 ①遇空格,或按“回车”或“跳格”(TAB键) scanf("input a1, a2:%d, %d", &a1, &a2); × int ②遇宽度结束,如%3d, 只取3列。 float f=123.456; a1, a2; f; 可采用下列语句:&a1, &a2); scanf("%d, %d", scanf("%d",&f); scanf("%d",f); × ③遇非法输入。 printf("input a1, a2:"); 4 √ printf("%d\n",f); input: 3 4 × 3, (6)在需要输入多个数据时,应使用一条scanf语 scanf("%d, %d", &a1, &a2); scanf("%d %d", &a1, &a2); 句将多个输入合并在一起输入,尽量避免scanf 注:在scanf 函数的格式化控制字符串中既不能 input: 3 4 √ 3, 4 × 语句的多次连续使用。 包括普通字符,也不能包括“\n”等转义控制符,

所有输出信息必须用printf函数输出!

C语言程序设计基础知识 问题: 章节:

Slide: 2-98

程序举例
#include <stdio.h> main( ) {求半径为R的圆的面积和周长。 float R, S, L; scanf("%f", &R); S=3.14*R*R; L=2*3.14*R; printf("R=%f, S=%f, L=%f", R, S, L); }

C语言程序设计基础知识 问题: 章节:

读程序写结果

Slide: 2-99

main() { int i=-32768,j=32767; printf(“i=%d,%x;j=%d,%x;\n",i--,i,j++,j); printf(“i-1=%d,j+1=%d;\n",i,j); C语言中的整数类型 int 在 getch(); i=-32768, 8000;j=32767,7fff; 计算机中是用原码/补码 }
i-1=32767, j+1=-32768; 存储的。用-0表示-32768 , +0表示零。

C语言程序设计基础知识 问题: 章节:

Slide:2-100

第二章结束


网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com