第二讲基本数据计算与输入输出_第1页
第二讲基本数据计算与输入输出_第2页
第二讲基本数据计算与输入输出_第3页
第二讲基本数据计算与输入输出_第4页
第二讲基本数据计算与输入输出_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、主讲主讲刘少兵刘少兵共 72 页 第 2 页本本 章章 要要 点点共 72 页 第 3 页共 72 页 第 4 页共 72 页 第 5 页根本类型根本类型字符型字符型 charchar整型整型 intint浮点型浮点型单精度单精度 floatfloat双精度双精度 doubledouble指针类型指针类型构造类型构造类型数组数组结构结构 structstruct联合联合 unionunion枚举枚举 enumenum无值类型无值类型第二章第二章第五章第五章第六章第六章指针类型指针类型第四章第四章共 72 页 第 6 页charcharintintfloatfloatdoubledouble类型

2、说明符类型说明符shortshortlonglongsignedsignedunsignedunsigned类型修饰符类型修饰符注意:注意:类型修饰符类型修饰符不能不能单独使用,必须与单独使用,必须与类型类型说明符说明符配合在一起使用配合在一起使用C语言采用语言采用类型类型说明符说明符说明不同说明不同的数据类型的数据类型共 72 页 第 7 页 15 15位有效数字位有效数字无法表示无法表示全体实数全体实数保存字符对应保存字符对应的的ASCII码码-2-215151000,0000,0000,00002 21515-1-10111,1111,1111,1111float:float:尾数尾数2

3、424位位+ +阶数阶数8 8位位 double:double:尾数尾数5252位位+ +阶数阶数1212位位 共 72 页 第 8 页共 72 页 第 9 页i=2i=2i=6i=6i=24i=24i=120i=120i=720i=720i=5040i=5040i=i=-25216-25216i=i=-30336-30336i=i=2432024320共 72 页 第 10 页尾数的符号位尾数的符号位阶码的符号位阶码的符号位共 72 页 第 11 页 short int short int int short= int shortsigned int short int shortsigne

4、d int short int short 类型类型 占用内存单元占用内存单元 取值范围取值范围 unsigned int 2unsigned int 2字节字节 0 0 65535 65535long int long int 4 4字节字节 -2147483648 -2147483648 2147483647 2147483647unsigned long 4unsigned long 4字节字节 0 0 4294967295 4294967295-2-231312 23131-1-12 21616-1-12 23232-1-1共 72 页 第 12 页l 整型常量整型常量(3种形式种形式

5、)10进制进制 8进制进制16进制进制l实型常量实型常量(2种形式种形式)十进制十进制 指数指数 l字符常量字符常量l字符串常量字符串常量9 9, 、共 72 页 第 13 页共 72 页 第 14 页共 72 页 第 15 页共 72 页 第 16 页符符 a=x61 A=x41 a=x61 A=x41换行符换行符 xa xa共 72 页 第 17 页字符串常量:用双引号括起来的字符序列字符串常量:用双引号括起来的字符序列 实例:实例:This is C string.This is C string. a a 1 1个空格个空格 不含空格不含空格 串定界符:双引号串定界符:双引号 字符串长

6、度:字符串中包含的字符数量。字符串长度:字符串中包含的字符数量。tNameAddressntNameAddressnC is very easy.C is very easy. a a 与与 字符字符a a 的区别的区别 He saidHe said ok.ok. nn共 72 页 第 18 页l常量定义形式常量定义形式l#define 标识符标识符 常量常量l 用定义的一个标识符来代表一个常量,称用定义的一个标识符来代表一个常量,称为符号常量为符号常量l# 宏命令专用定义符号宏命令专用定义符号ldefine 命令命令l 标识符标识符宏替换名一般采用大写字符宏替换名一般采用大写字符共 72 页

7、 第 19 页l共 72 页 第 20 页l变量:变量:在程序运行过程中在程序运行过程中允许允许改变的量改变的量l变量的说明格式:变量的说明格式: 类型修饰符类型修饰符 类型说明符类型说明符 变量列表变量列表;l例如:例如:intint i; i; charchar ch, str; ch, str; longlong k=1, m=0 x12345678; k=1, m=0 x12345678; double x, y=1; double x, y=1;l变量说明意味着确定了:该变量变量说明意味着确定了:该变量 占用占用内存内存单元的数量,单元的数量, 数据在内存的数据在内存的表示方式表示方

8、式, 数据的数据的取值范围取值范围。共 72 页 第 21 页l变量的三个属性:变量的三个属性:l 变量名称:编程时使用进行编程变量名称:编程时使用进行编程l 变量的值:程序运行时使用进行运算变量的值:程序运行时使用进行运算l 变量地址:程序运行时,要将变量的值变量地址:程序运行时,要将变量的值保存在计算机的存储单元中,每个存储单元保存在计算机的存储单元中,每个存储单元都有唯一的内存地址。变量在内存中占据的都有唯一的内存地址。变量在内存中占据的存储单元的地址就是变量的地址。存储单元的地址就是变量的地址。l指针:变量的地址指针:变量的地址l一般变量:存储变量的值一般变量:存储变量的值l指针变量:

9、保存变量地址的变量指针变量:保存变量地址的变量共 72 页 第 22 页l指针变量说明:指针变量说明:l数据类型数据类型 * 变量名;变量名;l例:有变量说明语句:例:有变量说明语句:char c=A; 假设变量假设变量c在内存中对应的地址为在内存中对应的地址为1000;l * 变量名称:变量名称:c,类型为,类型为char,占用,占用1个字节个字节l * 变量变量c的值:的值: 字母字母Al * 变量变量c的地址:的地址:1000l假设有:假设有:char * pc;l那么称指针变量那么称指针变量pc是是char型指针型指针lpc=&c; /* &取取c的地址的地址 */l那么称指针变量那么

10、称指针变量pc指向变量指向变量c1000 A 变 量c1001 2000 1000 变 量pc共 72 页 第 23 页 变量在说明之后,没有固定的初始值,要变量在说明之后,没有固定的初始值,要先赋值给定一个初始值,后使用。先赋值给定一个初始值,后使用。变量赋初值变量赋初值 将变量说明与赋初值合一,在说明变量时将变量说明与赋初值合一,在说明变量时同时完成。同时完成。实例实例char cc = a, dd = n ;char cc = a, dd = n ;int int x = 10, y = -10, z; x = 10, y = -10, z; double try = 28.5, w =

11、 1e10;double try = 28.5, w = 1e10;共 72 页 第 24 页条件运算条件运算 指针指针运算运算 目目:进行运算时需:进行运算时需要的要的操作数的数量操作数的数量共 72 页 第 25 页l运算符双目运算符运算符双目运算符/ /单目运算符单目运算符l + + 加法运算加法运算 12 12 正值运算正值运算 14 14l - - 减法运算减法运算 12 12 负值运算负值运算 14 14l * * 乘法运算乘法运算 13 13l / / 除法运算除法运算 13 13l % % 求余运算求余运算 13 13l优先级:优先级:* * / % / % 同级高,同级高,+

12、 - + - 同级低同级低l结合性:相同优先级运算符进行运算时的次序结合性:相同优先级运算符进行运算时的次序l 自左向右标记为自左向右标记为 共 72 页 第 26 页1.1.参加运算的对象都是参加运算的对象都是intint型,结果截取为型,结果截取为intint型型 9%3 9%31%31%310%310%310%-310%-3-10%3-10%3-10%-3-10%-3=3=3=3.3333=3.66667=0=0.5=6=0=0=1 1=1= =1 1= =-1-1= =-1-1共 72 页 第 27 页l运算符双目运算符运算符双目运算符 l 大于大于 10 10l = = 大于等于大于

13、等于 10 10l 小于小于 10 10l = = = 5 75 的值是的值是 1 1,57 57 的值是的值是 0 0。l :int a=13, b=2, c=1;int a=13, b=2, c=1;lababla=bab)=c(ab)=clab=cab=cla-b=ca-b=c成立成立, 结果为结果为 1不成立不成立,结果为结果为 成立成立, 结果为结果为 1不成立不成立,结果为,结果为 结果为结果为 1与上面与上面等价等价,结果为结果为 1等价等价于于( (a-b)a-b)=1 1,结果为结果为 如何判断数学中的逻辑关系:如何判断数学中的逻辑关系:00a a99? 0 0=a a= 按

14、位右移按位右移( (双目双目) 11 ) 11 l 按位左移按位左移( (双目双目) 11 ) 11 l & & 按位与按位与 ( (双目双目) 8 ) 8 l 按位异或按位异或( (双目双目) 7 ) 7 l 按位或按位或 ( (双目双目) 6 ) 6 l 按位反按位反 ( (单目单目) 14 ) 14 共 72 页 第 32 页l实例:实例:int x=7,y=10,z=1; int x=7,y=10,z=1; 设字长为设字长为8 8位位l x&y = x&y = l x&z = x&z = l x y = x y =l y z = y z =l x y = x y = l x = x =

15、 l x = x = l x2 = x2 = y2 =l x2 = x2 = 2 ( (0000 0111 & 0000 1010 = 0010) ) 1 ( (0000 0111 & 0000 0001 = 0001) ) 15 ( (0000 0111 0000 1010 = 1111) ) 11 ( (0000 1010 0000 0001 = 1011) ) 13 ( (0000 0111 0000 1010 = 1101) ) 8 ( ( 0000 0111 ) ) = 1111 1000 7 28 ( (0000 0111 2 = 0000 0010) ) 1 ( (0000 01

16、11 2 = 0000 0001) )共 72 页 第 33 页l说明说明 关于关于:右移一位:右移一位 = = 缩小缩小 1/2 1/2 关于关于:左移一位:左移一位 = = 扩大扩大 2 2 倍倍 关于关于: 因为:因为: x = x = 按位求反按位求反 = = 求反运算求反运算 求负求负 = = 求补求补 = = 求反求反 + 1 + 1 所以:所以: 求反求反 = = 求负求负 1 1 x = x = -x-x -1 -1 7 = 7 = 8 8 ( (8) = 78) = 7共 72 页 第 34 页l运算符单目运算符单目 l + + 自增自增 1414l 自减自减 1414l+和

17、和 为单目运算,只能作用于变量为单目运算,只能作用于变量l只能对只能对intint、charchar、longlong和指针变量进行运算和指针变量进行运算l功能:功能:l +x+x x=x+1 x=x+1l x x x=x1 x=x1 ( (前缀前缀) )l x+x+ x=x+1 x=x+1l x x x=x1 x=x1 ( (后缀后缀) )共 72 页 第 35 页l前缀与后缀的区别:前缀与后缀的区别: y=+x; x=x+1; y=x; x先先加加1再再赋值赋值 y=x+; y=x; x=x+1; x先先赋值赋值再再加加1共 72 页 第 36 页共 72 页 第 37 页l 注意,以下操

18、作是错误的:注意,以下操作是错误的: x = +(i+j)+1; j = + (5+x); y = +x * * +x; 逻辑虽然正确逻辑虽然正确,但实际编程,但实际编程中容易产生误中容易产生误解,应当防止解,应当防止共 72 页 第 38 页共 72 页 第 39 页l运算符双目运算符双目 l 赋值运算:赋值运算: = = 2 2l赋值组合运算:赋值组合运算:e1 op= e2 e1 op= e2 2 2l 等于于:等于于:e1 = e1 op e1 = e1 op (e2)(e2)l其中:其中:opop为以下为以下1010个运算符之一个运算符之一l+ + * * / % | & / % |

19、 & l e1 e1为可以进行赋制操作的变量为可以进行赋制操作的变量le2e2为合法的表达式为合法的表达式l例:例:x += 2; x += 2; x = x + 2; x = x + 2;l x x * *= y+1;= y+1; x = x x = x * * ( y+1); ( y+1);l 不等价不等价 x = x x = x * * y+1;y+1;l x = 2; x = 2; x = x x = x 2;2;共 72 页 第 40 页l运算符三目运算符三目 le1 ? e2 : e3e1 ? e2 : e3l功能:如果表达式功能:如果表达式e1e1成立成立e1e1值为非值为非0

20、0,那,那么执行表达式么执行表达式e2e2;否那么表达式;否那么表达式e1e1不成不成立,执行表达式立,执行表达式e3e3例:例:max = (ab) ? a : b; 求变量求变量a与与b的的最大值最大值 min = (ab) ? a : b; 求变量求变量a与与b的的最小值最小值判断判断e1 ?执行执行e2执行执行e3成立成立不成立不成立共 72 页 第 41 页l运算符单目运算符单目 l& & 取变量的地址取变量的地址 1414l* * 取指针变量所指向的内容取指针变量所指向的内容 1414l注意:注意:l 运算符运算符 & & 和和“位与运算是同一符号;位与运算是同一符号;l 运算符运

21、算符 * * 和和“乘运算是同一符号。乘运算是同一符号。l 只能从程序的上下文来区分运算符只能从程序的上下文来区分运算符 & & 和和运算符运算符 * * 的实际意义。的实际意义。共 72 页 第 42 页l实例:实例:int x=2, y, *px; lx为一般变量,为一般变量,px为指针型变量为指针型变量 y=x * * 100; * *px=y* *10; +x; x+; px px = &x; 取变量取变量x的地址赋值给指针的地址赋值给指针px 又称为让又称为让px指向指向变量变量x x=10;假设假设px已经指向已经指向x,那么可以用,那么可以用 *px 代替变代替变量量 xx210

22、 * *px = 10; 也称为也称为间接访问间接访问 y = * *px; 取指针取指针px的的内容内容 y = * *px * * 100; x = y * * 10; + * * px (* * px)+; 括号括号不能不能省略省略 y=x; 共 72 页 第 43 页l运算符运算符 . . 取结构取结构/联合的成员联合的成员15 通过指针通过指针取结构取结构/联合的成员联合的成员 15 ( ) 改变表达式中的优先级关系改变表达式中的优先级关系 15 数组下标数组下标 15 , 逗号,表达式从左向右顺序计算逗号,表达式从左向右顺序计算 1 (type) e 将将e的数据类型强制转换为的数

23、据类型强制转换为type 14 sizeof (opr) 求求opr所占用的内存的字节数所占用的内存的字节数 14第六章第六章第五章第五章共 72 页 第 44 页l实例:实例:l :int x,y,z;l y = ( x=10, x+1);l 答案:先执行答案:先执行x=10,然后再执行,然后再执行y = x+1l y=11, x=10l z = sizeof(int);l 答案:答案:z=2 求求int型数据占用的内存字节数量型数据占用的内存字节数量l z = sizeof(x);l 答案:答案:z=2 求变量求变量x占用的内存字节数量占用的内存字节数量共 72 页 第 45 页l按运算符

24、的优先级分为按运算符的优先级分为15级级l按运算符的结合性分为按运算符的结合性分为2种种l自左向右结合自左向右结合 自右向左结合自右向左结合l优先级不同时:运算符优先级的上下决定了优先级不同时:运算符优先级的上下决定了进行运算的先后次序。进行运算的先后次序。l优先级相同时:同优先级运算符的运算次序优先级相同时:同优先级运算符的运算次序由结合性决定。由结合性决定。l例如:四那么运算中的例如:四那么运算中的“先乘除,后加减先乘除,后加减反映了运算符的优先级;反映了运算符的优先级;“同级运算从左至同级运算从左至右反映了乘右反映了乘/除运算加除运算加/减运算的结合性。减运算的结合性。共 72 页 第

25、46 页优先级 运算符 结合性 优先级 运算符 结合性 ( ) 9 = = != 15 . - 8 & ! + - 7 - * & 6 ! 14 (type) sizeof 5 & 13 * / % 4 | 12 + - 3 ? : 11 = = 1 , l运算符运算符优先级优先级表表共 72 页 第 47 页l:int a=8, b=5, c=2; 计算以下表达式结果计算以下表达式结果l a / b * bl a %b * cl a * c 2l a & c & bl a | b & cl ( a 3)l b a ? a * c : a % c5先先 / 后后 * *6先先 % 后后 * *

26、4先先 * * 后后 0先先 & 后后 &8先先 & 后后 | 后后 00001000=111101113=1111 1110=0000 000116先先 再再 再再 ? ? : :共 72 页 第 48 页# #define PRINT(x) printf(%dn, x)define PRINT(x) printf(%dn, x)main ( )main ( ) int x=3, y=2, z=1; int x=3, y=2, z=1; x = y+ = x & x = y+ = x & x - y = +zx - y = +z; ; PRINT(x); PRINT(y); PRINT(z)

27、; PRINT(x); PRINT(y); PRINT(z); y y * *= z = x+(z+2); = z = x+(z+2); PRINT(x); PRINT(y); PRINT(z); PRINT(x); PRINT(y); PRINT(z); x = y = z = 1; x = y = z = 1; PRINT (-x & PRINT (-x & +y +y | z+); | z+); PRINT(x); PRINT(y); PRINT(z); PRINT(x); PRINT(y); PRINT(z); x=9; y=6; z=5; x=9; y=6; z=5; x = ( x

28、 + y ) % z = x % z + y % z ) ? 1: 0; x = ( x + y ) % z = x % z + y % z ) ? 1: 0; PRINT(x); PRINT(x); /* 先算y=x结果为0,那么不再 算&之后的表达式x-y=+z。将结果赋给x,最后执行y+1 */ /* x=0, y=3, z=1 */ /* 先算x+(z+2),3赋给z,再执行y*=z */ /* x=0, y=9, z=3 */ /* x先减1结果为0,那么跳过&+y不执行,与z进行逻辑或运算,再执行z+,输出结果:1 */ /* x=0, y=1, z=2 */* */* */* *

29、/* */* */ /* x=0 */共 72 页 第 49 页# #include include main ( )main ( )int x, y, z;int x, y, z; x=1; y=1; z=0; x=1; y=1; z=0; x = x x = x &y y|z;z; printf(x=%dn,x); printf(x=%dn,x); printf (%dn, x printf (%dn, x | ! !y+ & +z);y+ & +z); printf (y=%d, z=%dn, y, z); printf (y=%d, z=%dn, y, z); x = y = 1; x

30、 = y = 1; z = x z = x+ -1; -1; printf (x=%d, z=%dn, x, z); printf (x=%d, z=%dn, x, z); z += -x z += -x+ + + +y;y; printf (x=%d, y=%d, z=%dn, x, y, z); printf (x=%d, y=%d, z=%dn, x, y, z); & &优先级高,先计算优先级高,先计算x&yx&y,结果为结果为1 1由于是由于是|运算,故不再计算运算,故不再计算1 1|z z。x=1x=1|优先级最低优先级最低, ,x=1,x=1,不再计算不再计算|右边的算式右边的算

31、式, ,y y和和z z不变不变 y=1, z=0y=1, z=0 +为后缀为后缀, ,先先将将x-1x-1的值赋给的值赋给z,z,再再计算计算x+ x+ x=2, z=0 x=2, z=0等价于等价于z+=(-(x+)+(z+=(-(x+)+(+y)y)x=3, z=0, y=2x=3, z=0, y=2实例实例共 72 页 第 50 页l不同数据类型的数据不同数据类型的数据/ /变量进行混合运算时,需变量进行混合运算时,需要进行数据类型转换要进行数据类型转换l转换方式有两种:转换方式有两种:l“显式的类型转换显式的类型转换l“隐式的类型转换隐式的类型转换l“显式的类型转换采用强制类型转换运

32、算符显式的类型转换采用强制类型转换运算符(type)(type)l“隐式的类型转换是语言按照一定的类型隐式的类型转换是语言按照一定的类型转换规那么自动进行的转换转换规那么自动进行的转换共 72 页 第 51 页l“隐式的类型转换规那么隐式的类型转换规那么l 1、运算中将所有、运算中将所有char型数据都转换成型数据都转换成int型,型,float型转换成型转换成double型。型。l 2、低级类型服从高级类型,并进行相应的、低级类型服从高级类型,并进行相应的转换转换ldouble floatllonglunsignedlint char l 3、赋值运算以赋值运算符左边变量的类型、赋值运算以赋

33、值运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变为准,即赋值运算符右端值的类型向左边变量的类型看齐,并进行相应的转换。量的类型看齐,并进行相应的转换。共 72 页 第 52 页例:例:int a,j,y; float b; long d; double c;int a,j,y; float b; long d; double c;那么:那么: y = j + a + a y = j + a + a * * b - c / d; b - c / d;其运算次序和隐含的类型转换为:其运算次序和隐含的类型转换为:计算计算a a* *b b,运算结果为,运算结果为doubledouble型

34、。型。再计算再计算c/dc/d,结果为,结果为doubledouble型。型。计算计算j+aj+a,结果为整型。,结果为整型。将第将第1 1步和第步和第3 3步的结果相加,结果为步的结果相加,结果为doubledouble型型用第用第4 4步结果减第步结果减第2 2步结果,结果为步结果,结果为doubledouble型型给给y y赋值,先将第步的结果赋值,先将第步的结果doubledouble型转换为型转换为整型因为赋值运算左边变量整型因为赋值运算左边变量y y为整型,截掉为整型,截掉doubledouble型数据的小数局部,压缩成型数据的小数局部,压缩成intint型。型。共 72 页 第

35、53 页共 72 页 第 54 页l调用形式:调用形式: c = getchar( ) c = getchar( )l功能:从标准输入设备功能:从标准输入设备( (键盘键盘) )上取一个字符作上取一个字符作为函数值返回。为函数值返回。l例:例:l #include stdio.h #include stdio.hl main ( ) main ( )l char c; char c;l c = getchar( ); c = getchar( );l putchar(c); / putchar(c); /* * 输出字符变量输出字符变量c c的值的值 * */ /l l运行程序,如果从键盘输入

36、:运行程序,如果从键盘输入:aENTERaENTERl那么输出为:那么输出为: a al如果从键盘输入:如果从键盘输入: abcENTERabcENTERl那么输出也为:那么输出也为: a a共 72 页 第 55 页l调用形式:调用形式:lscanf(scanf(控制字符串控制字符串, ,参数参数1,1,参数参数2, ,2, ,参数参数n)n)l其中:控制字符串也称为格式说明串,它用于描其中:控制字符串也称为格式说明串,它用于描述变量的输入方式,格式说明的形式是:述变量的输入方式,格式说明的形式是:l附加格式说明符附加格式说明符 格式转换字符格式转换字符l附加格式说明符局部可以缺省。附加格式

37、说明符局部可以缺省。l功能:从标准输入设备上读取输入数据,按格式说明功能:从标准输入设备上读取输入数据,按格式说明的描述将读入的数据赋于相应的参数。的描述将读入的数据赋于相应的参数。l 参数局部的每个参数,假设为一般变量,要在参数局部的每个参数,假设为一般变量,要在变量名前加变量名前加“&“&取地址运算符,表示将输入的取地址运算符,表示将输入的数据存入变量对应的内存单元地址中。数据存入变量对应的内存单元地址中。lscanf ( scanf ( %d%d, &x );, &x );共 72 页 第 56 页格式转换字符格式转换字符 说说 明明 d d 输入输入十十进制整数进制整数 o o 输入输

38、入八八进制整数进制整数 x x 输入输入十六十六进制整数进制整数 c c 输入输入单个单个字符字符 s s 输入字符输入字符串串 f f 输入输入实数实数,可为小数形式或指数形式,可为小数形式或指数形式附加格式说明符附加格式说明符 说说 明明 l l 用于输入用于输入长整型长整型数据及数据及doubledouble型数据型数据 h h 用于用于短短整型数据整型数据正整数正整数 用于指定输入数据占据的宽度用于指定输入数据占据的宽度 * * 表示本输入项在读入后舍弃表示本输入项在读入后舍弃共 72 页 第 57 页:scanf (scanf (%3d%3d%2d%2d, , &x&x, , &y&

39、y););输入序列:输入序列:123456123456 ENTERENTER结果:结果:x=1x=12323,y=y=4545:scanf (scanf (%d%d, ,%d%d: :%f%f, , &x&x, , &y&y, , &z&z););输入序列:输入序列:1 1, ,2 2: :3.53.5 ENTERENTER结果:结果:x=x=1 1,y=y=2 2,z=z=3.53.5:scanf (scanf (%d%d%d%d%d%d, , &x&x, , &y&y, , &z&z););输入序列一:输入序列一:1 12 23 3 ENTERENTER结果:结果:x=x=1 1,y=y=

40、2 2,z=z=3 3输入序列二:输入序列二:11TAB2 3TAB2 3ENTERENTER输入序列三:输入序列三:1 1 ENTERENTER 2 32 3ENTERENTER结果与输入序列一的结果一样。结果与输入序列一的结果一样。共 72 页 第 58 页:scanf (%2d %scanf (%2d %* *2d,%2d, &x, &y);2d,%2d, &x, &y);输入序列:输入序列:12 34,56ENTER12 34,56ENTER结果:结果:x=12x=12,y=56y=56。注意:注意: 在在scanfscanf中,可以使用中,可以使用ENTERENTER、空格或、空格或

41、TABTAB作为数据之间的分隔符。作为数据之间的分隔符。5 5:scanf (scanf (x=%d, &x);x=%d, &x); 要使要使x x的值等于的值等于1212,从键盘应怎样输入?,从键盘应怎样输入? 正确的输入序列:正确的输入序列:x=12ENTERx=12ENTER 注意:字符注意:字符 x= x= 被过滤掉了被过滤掉了 假设输入序列为:假设输入序列为:12ENTER12ENTER错误!错误!共 72 页 第 59 页l调用形式:调用形式: putcharputchar( c )( c )l功能:功能:通过标准输出设备通过标准输出设备( (显示器显示器) )输出变量输出变量c

42、c。l例例C2_7301.CC2_7301.C:将从键盘输入的一行字符复制到将从键盘输入的一行字符复制到标准输出。标准输出。 # #include stdio.hinclude stdio.hmain ( )main ( ) char c; char c; c= getchar( ); c= getchar( ); whilewhile ( c != ( c != nn ) ) putcharputchar(c); (c); / /* * 输出该字符输出该字符 * */ / c=getchar( ); c=getchar( ); / /* * 再取下一输入字符再取下一输入字符 * */ / 共

43、 72 页 第 60 页l调用形式:调用形式:lprintf (printf (控制字符串控制字符串, ,参数参数1,1,参数参数2,2,参参数数n)n)l其中:控制字符串也称为格式说明串,它用其中:控制字符串也称为格式说明串,它用于描述变量的输出方式,格式说明的形式是:于描述变量的输出方式,格式说明的形式是:l附加格式说明符附加格式说明符 格式转换字符格式转换字符l附加格式说明符局部可以缺省。附加格式说明符局部可以缺省。l功能:按照控制字符串中的格式说明依次将后功能:按照控制字符串中的格式说明依次将后面的各参数进行转换,排放成格式说明中规定面的各参数进行转换,排放成格式说明中规定的格式,输出

44、到输出设备上。对非格式说明符,的格式,输出到输出设备上。对非格式说明符,那么按原样输出。那么按原样输出。共 72 页 第 61 页格式转换字符格式转换字符 说说 明明 d d 以十进制形式输出整数以十进制形式输出整数( (正数不输出符号正数不输出符号) ) o o 以八进制无符号形式输出整数以八进制无符号形式输出整数( (不输出前缀符不输出前缀符) ) x x 以十六进制无符号形式输出整数以十六进制无符号形式输出整数( (不输出前缀符不输出前缀符) ) u u 以无符号十进制形式输出整数以无符号十进制形式输出整数 c c 以字符形式输出,仅输出一个字符以字符形式输出,仅输出一个字符 s s 输

45、出字符串输出字符串 f f 以小数形式输出单、双精度数以小数形式输出单、双精度数 e e 以标准指数形式输出单、双精度数以标准指数形式输出单、双精度数 g g 选用选用% %f f或或% %e e格式中输出宽度较短的一种格式,格式中输出宽度较短的一种格式, 不输出无意义的不输出无意义的共 72 页 第 62 页共 72 页 第 63 页l实例:实例: # #include include main( ) main( ) printf (This is a C program.n); printf (This is a C program.n); l实例:实例: # #include inclu

46、de main( )main( ) int a=1, b=2, c=100; int a=1, b=2, c=100; printf( printf( a=a=%d%d, b=, b=%3d%3d, d=, d=%3d%3d%nn , ,a a, , b b, ,a a* *c/bc/b);); printf(printf( % %d d, %, %o o, %, %x xnn , -a, -a, -a);, -a, -a, -a); 答案:答案:a=1, b= 2, d= 50% -1, 177777, ffff共 72 页 第 64 页l实例:实例: # #include include

47、main ( )main ( ) char c= char c=a a; ; char ch =Good-bye.; char ch =Good-bye.; printf(% printf(%c c,%,%3c3c,%,%3d3dn, n, c c, , c c, , c c);); printf(printf(%s%s, ,%10s%10s, ,%-8s%-8s, ,%-12s%-12s, ,%6.4s%6.4sn,n,ch,ch,ch,ch,ch);ch,ch,ch,ch,ch); 答案:答案: a a, , a a, , 9797Good-bye.Good-bye., , Good-by

48、e.,Good-bye.,Good-bye.Good-bye., ,Good-bye.Good-bye. , , Good Good1234567891234567890 0123456789012345678901 12345678902345678901 12345678901232345678901234 4567890567890共 72 页 第 65 页l实例实例4 4:l #include #include lmain( )main( )l int a; int a;l float b,c; float b,c;l scanf ( scanf (%2d%3f%4f%2d%3f%4f

49、, &a, &b, &c);, &a, &b, &c);l printf( printf(a=%d,b=%f,c=%fna=%d,b=%f,c=%fn,a,b,c);,a,b,c);l l输出:输出:la=12, b=345.000000, c=6789.000000a=12, b=345.000000, c=6789.000000共 72 页 第 66 页l1 1、运算符有优先级,在、运算符有优先级,在C C语言中关于运算符语言中关于运算符优先级的正确表达是优先级的正确表达是 。l A) A) 逻辑运算符高于算术运算符,算术运逻辑运算符高于算术运算符,算术运算符高于关系运算符算符高于关系运算

50、符l B) B) 算术运算符高于关系运算符,关系运算术运算符高于关系运算符,关系运算符高于逻辑运算符算符高于逻辑运算符l C) C) 算术运算符高于逻辑运算符,逻辑运算术运算符高于逻辑运算符,逻辑运算符高于关系运算符算符高于关系运算符l D) D) 关系运算符高于逻辑运算符,逻辑运关系运算符高于逻辑运算符,逻辑运算符高于算术运算符算符高于算术运算符l答案:答案:B B共 72 页 第 67 页l2 2、在以下关于、在以下关于C C语言的不严格的表达中,错误的选项语言的不严格的表达中,错误的选项是是l A) A)大写字母和小写字母的意义相同大写字母和小写字母的意义相同l B) B)有些不同类型的变量可以在一个表达式中运算有些不同类型的变量可以在一个表达式中运算l C) C)在赋值表达式中等号在赋值表达式中等号(=)(=)左边的变量和右边的值左

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论