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

下载本文档

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

文档简介

主讲 刘少兵第二讲数据、运算与基本输入输出共72页第2

页第二章数据、运算与基本输入输出基本数据类型与特点各种数据类型表示范围常量的表示方法变量说明语句运算符与基本运算规则基本输入输出函数使用方法本章要点共72页第3

页第二章数据、运算与基本输入输出第一节数据与数据类型第二节常量与常量定义第三节变量与变量说明第四节基本运算第五节运算符的优先级与结合性第六节数据类型转换第七节数据的输入与输出第八节综合举例共72页第4

页§2-1数据与数据类型数据程序加工处理的对象及其结果数据类型数据在计算机内部的存储形式(占用的内存单元数量、编码方式、取值范围等)常量在程序运行过程中不允许改变的量变量在程序运行过程中允许改变的量一、基本概念共72页第5

页§2-1数据与数据类型(续)二、C语言的数据类型基本类型字符型char整型int浮点型单精度float双精度double指针类型构造类型数组结构struct联合union枚举enum无值类型第二章第五章第六章指针类型第四章共72页第6

页§2-1数据与数据类型(续)C语言基本数据类型有四种:字符型整型单精度浮点型双精度浮点型charintfloatdouble类型说明符三、C语言的基本数据类型C语言有四种类型修饰符:短长有符号无符号shortlongsignedunsigned类型修饰符注意:类型修饰符不能单独使用,必须与类型说明符配合在一起使用C语言采用类型说明符说明不同的数据类型共72页第7

页§2-1数据与数据类型(续)基本数据类型的数据存储格式和取值范围:类型占用内存单元取值范围数据存储格式

char1(8位)0~255ASCII码

shortint2(16位)-32768~32767二进制补码

float4(32位)±3.4*10-38~±3.4*10387位有效数字

double8(64位)±10-308~±10308 15位有效数字四、基本数据类型的数据表示与取值范围无法表示全体实数保存字符对应的ASCII码-2151000,0000,0000,0000215-10111,1111,1111,1111float:尾数24位+阶数8位double:尾数52位+阶数12位

共72页第8

页§2-1数据与数据类型-intshortint表示范围:二进制16bit(2Byte)000000000000000100000000000000110111111111111111=1=3short整数的最大值shortint型表示数的范围:-32768~32767例2_2021111111111111111注意:使用中要防止数据溢出=-1short整数的最小值1000000000000000=215-1=32767=-215=-32768返回共72页第9

页§2-1数据与数据类型-intmain(){shortinti;i=1;i=i*2;printf(”\ni=%d”,i);i=i*3;printf(”\ni=%d”,i);i=i*4;printf(”\ni=%d”,i);i=i*5;printf(”\ni=%d”,i);i=i*6;printf(”\ni=%d”,i);i=i*7;printf(”\ni=%d”,i);i=i*8;printf(”\ni=%d”,i);i=i*9;printf(”\ni=%d”,i);i=i*10;printf(”\ni=%d”,i);}

期望结果

i=2i=6i=24i=120i=720i=5040i=40320i=362880i=3628800

实际运行结果

i=2i=6i=24i=120i=720i=5040i=-25216i=-30336i=24320产生数据溢出上溢下溢返回例C2_202共72页第10

页§2-1数据与数据类型-float返回有效数字的意义?

二进制7位

二进制23位单精度实型尾数阶码2-23

<=

|尾数|

<=1-2-230.000,000,12<=|尾数|<=0.999,999,88例C2_203数的范围的意义?2-128<=|阶码|<=21272.9*10-39<=|阶码|<=1.7*1038尾数的符号位阶码的符号位共72页第11

页§2-1数据与数据类型(续)加修饰符数据类型的数据存储格式和取值范围:

shortint<==>int<==>short signed<==>int<==>shortint<==>short类型占用内存单元取值范围

unsignedint2字节 0~65535

longint 4字节-2147483648~2147483647

unsignedlong4字节0~4294967295-231231-1216-1232-1共72页第12

页§2-2常数与常数定义整型常量(3种形式) 10进制

8进制 16进制实型常量(2种形式) 十进制 指数

字符常量字符串常量一、常数:0

~9整型常量实例:0

~7以数字0开头:0

~9,A~F/a~f,以0x或0X开头:符号、整数、小数点和小数:用e或E和表示指数部分实型常量实例字符常量字符串常量共72页第13

页§2-2整型常数实例整型常量的不同表示方法:

10进制:

100-80+123

8进制:

010024010016进制:

0x380x100X100XFF0xa整型常量的类型:

1.在整型表示范围之内,根据值大小默认类型2.在常量后面加l或L,则认为它是longint型例如:都是longint型常量

10进制:-123L0L432l8进制:010L024L0100L16进制:

0x38L0x1000L0XFFlx0a0000l返回共72页第14

页§2-2实型常数实例实型常量的不同表示方法:

10进制:1.01.+12.0-12.00.0指数:1e31.8e-3-123e-6

等价于:10001.8*10-3-123*10-6

指数:-.1e-3.1E10

等价于:-0.1*10-30.1*10-10返回共72页第15

页§2-2常数与常数定义-字符常数字符型常量:用单引号括起来的单个字符实例:’A’

’g’

’#’

’0’

’2’

’+’

’,’

’;’

’(’

’)’字符定界符:单引号’字符型数据的存储格式:ASCII码(见书P207)65103354850返回如何表示不可显示字符?回车/退格/TAB?如何表示定界符?’’’

产生歧异转义符\:将\后面的字符转换为其它含义共72页第16

页§2-2常数与常数定义-转义符常数字符形式功能使用举例

\0字符串结束标志

\n换行(ASCII码为10) printf(”\n”);

\t横向跳格 printf(”\t”);

\b退格

\r回车(ASCII码为13)

\f走纸换页

\\字符\(ASCII码为92)’\\’

表示字符

\

\’

单引号 ’\’’表示字符’

\”双引号 ’\”’表示字符”

\ddd用8进制表示字符 ’a’=’\141’

’A’=’\101’

换行符’\12’

\xhh用16进制表示字符’a’=’\x61’

’A’=’\x41’

换行符’\xa’返回共72页第17

页§2-2常数与常数定义-字符串常数字符串常量:用双引号括起来的字符序列实例:”ThisisCstring.”

”a”

(1个空格)

””

(不含空格)

串定界符:双引号

”字符串长度:字符串中包含的字符数量。返回串长=17串长=1串长=1串长=0"\t\"Name\\Address\n"串长=15空串实例:"\"Cisveryeasy.\""串长=17注意:字符串"a"

与字符’a’

的区别"Hesaid\"ok.\"\n"串长=13共72页第18

页§2-2常数与常数定义常量定义形式#define

标识符

常量用定义的一个标识符来代表一个常量,称为符号常量

# 宏命令专用定义符号

define

命令

标识符

宏替换名(一般采用大写字符)二、常数定义与符号常量常量定义实例注意:符号常量与变量不同,它的值在程序运行过程中不能改变,也不能重新赋值。共72页第19

页§2-2常量定义实例常量定义实例#defineONE1

#define

PAI

3.1415926

#define

TV

”television”

#define

MAX

10#defineTWO

ONE+ONE使用方法

a=8+2;printf(”%s”,”television”);

s=3.14159*r*r;

intarray[10];返回a=b+TWO;printf(”%s”,TV);s=PAI*r*r;intarray[MAX];共72页第20

页§2-3

变量与变量说明变量:在程序运行过程中允许改变的量变量的说明格式:[类型修饰符]类型说明符变量列表;例如:inti;

charch,str;

longk=1,m=0x12345678;doublex,y=1;变量说明意味着确定了:该变量占用内存单元的数量,数据在内存的表示方式,数据的取值范围。一、变量说明的基本概念共72页第21

页§2-3变量与变量说明变量的三个属性:

–变量名称:编程时使用(进行编程) –变量的值:程序运行时使用(进行运算)

–变量地址:程序运行时,要将变量的值保存在计算机的存储单元中,每个存储单元都有唯一的内存地址。变量在内存中占据的存储单元的地址就是变量的地址。指针:变量的地址一般变量:存储变量的值指针变量:保存变量地址的变量二、指针与指针变量共72页第22

页§2-3变量与变量说明指针变量说明:数据类型

*变量名; 例:有变量说明语句:char

c='A';

若变量c在内存中对应的地址为1000; *变量名称:c,类型为char,占用1个字节 *变量c的值:字母’A’

*变量c的地址:1000 若有:char

*

pc; 则称指针变量pc是char型指针

pc=&c;/*&取c的地址*/ 则称指针变量pc指向变量c共72页第23

页§2-3变量与变量说明变量在说明之后,没有固定的初始值,要先赋值(给定一个初始值),后使用。变量赋初值将变量说明与赋初值合一,在说明变量时同时完成。实例

charcc='a',dd='\n'; int x=10,y=-10,z; doubletry=28.5,w=1e10;三、变量赋初值共72页第24

页§2-4运算符一、运算符简介按运算类型分类1.算术运算符 2.关系运算符3.逻辑运算符4.

位运算符5.赋值与赋值组合运算符6.自增自减运算符7.条件运算

8.指针运算9.

其它运算符按运算对象的数目分类◆单目运算◆双目运算◆三目运算目:进行运算时需要的操作数的数量共72页第25

页§2-4运算符-算术运算一、算术运算符运算符(双目运算符/单目运算符)+加法运算12

正值运算14-减法运算12

负值运算14*乘法运算13/除法运算13%求余运算13优先级:*/%同级(高),+

-同级(低)结合性:相同优先级运算符进行运算时的次序

自左向右(标记为

→)共72页第26

页§2-4运算符-算术运算实例1.参加运算的对象都是int型,结果截取为int型10/3 11/310.0/3 11/3.1/2 1./210/5*3 10/(5*3)2.求余运算的对象必须是整型9%3 1%310%3 10%-3-10%3 -10%-3=3=3=3.3333=3.66667=0=0.5=6=0=0=1=1=1=-1=-1共72页第27

页§2-4运算符-关系运算二、关系运算符运算符(双目运算符

)>大于10>=大于等于10<小于10<=小于等于10

==

等于 9!=不等于 9优先级:>>=<<=同级(高),!===同级(低)关系运算的结果应该为逻辑型“真”或“假”

C语言中没有逻辑型,将逻辑型数值化处理,用整型1表示“真”,用整型0表示“假”。共72页第28

页§2-4运算符-关系运算实例实例逻辑表达式

7>5的值是

1,5>7的值是

0。已知:inta=13,b=2,c=1;a>b a<=b a!=b a==b (a>b)==ca>b==ca-b==c 成立,结果为1不成立,结果为

0成立,结果为1不成立,结果为0结果为1与上面等价,结果为1等价于(a-b)==1,结果为0?

如何判断数学中的逻辑关系:0≤a≤9?

0<=a<=9等价于(0<=a)<=9结果恒为1共72页第29

页§2-4运算符-逻辑运算三、逻辑运算符运算符

&&逻辑与(双目)5(→)

¦¦逻辑或(双目)4(→)!逻辑非(单目)14(←)逻辑运算关系逻辑运算真值表ab!a!ba&&ba||b11

0

01110

010101

10

0100

110

0共72页第30

页§2-4运算符-逻辑运算式2

(y¦¦

b)&&(y

¦¦

a

)

1结果2结果例:要判断0≤x≤9是否成立:(

0<=x

)&&(

x<=9

)

如果没有括号:0

<=

x

&&

x

<=

9

等价

结果

结果

实例:比较下列两个逻辑表达式的执行过程式1

y¦¦

b&&y¦¦

a共72页第31

页§2-4运算符-位运算四、位运算符运算符

>> 按位右移(双目)11(→)

<< 按位左移(双目)11(→)

& 按位与(双目)

8(→)

∧ 按位异或(双目)7(→)

¦

按位或(双目)

6(→)∼~ 按位反(单目)

14(←)真值表aba∧b~a~b000110 11101010111000共72页第32

页实例:已知:intx=7,y=10,z=1;设字长为8位

x&y= x&z=x

¦y=y¦

z=

x^y=

~

x=

–x=x<<2=y>>2=x>>2=

2(00000111

&00001010=0010) 1(00000111

&00000001=0001)15(00000111

¦00001010=1111)11(00001010

¦

00000001=1011)

13(00000111

^00001010=1101)

–8(

~

0000

0111)=1111

1000–728(00000111

<<2=0001

1100)2(00001010>>2=00000010)1(00000111

>>2=00000001)§2-4运算符-位运算共72页第33

页说明关于>>:右移一位=缩小1/2关于<<:左移一位=扩大2倍关于~: 因为: ~

x=按位求反=求反运算 求负=求补=求反+1所以: 求反=求负–1

~x=-x-1

~7=–8~(–8)=7注意:1.位运算是对二进制的位进行运算2.只能对int型、char型和long型进行位运算§2-4运算符-位运算共72页第34

页§2-4运算符-自增自减运算五、自增自减运算符运算符(单目←)

++

自增 14

–– 自减 14++和––为单目运算,只能作用于变量只能对int、char、long和指针变量进行运算功能:

++x <==>x=x+1

––x <==>x=x–1 (前缀)

x++ <==>x=x+1 x––

<==>x=x–1 (后缀)共72页第35

页§2-4运算符-自增自减运算自增(自减)有前缀和后缀之分。前缀形式:先自增(自减)再引用后缀形式:先引用再自增(自减)前缀与后缀的区别:

y=++x;<==>x=x+1;

y=x;

x先加1再赋值

y=x++;<==>y=x;

x=x+1;

x先赋值再加1共72页第36

页§2-4运算符-自增自减运算实例实例(1)

++i;i++;

因为在表达式中没有其它运算,结果一样。(2)

x=1;y=++x;

结果:x=2,y=2

y=++x;<==>x=x+1;y=x;

在做赋值运算之前,x先加1,然后将x赋给y(3)x=1;y=x++;

结果:x=2,y=1y=x++;<==>y=x;x=x+1;先将x

赋值给y,然后x

再加1共72页第37

x=3,z=3

x=3,y=6,z=3*6=18

x=3,y=6,z=2*6=12

x=3,y=6,z=3*5=15

x=3,y=6,z=2*5=10

x=4,z=4*4=16注意,以下操作是错误的:

x=++(i+j)+1;j=++

(5+x);y=++x*++x;§2-4运算符-自增自减运算实例实例已知:intx

=

2,y

=

5,z;

z=++x;

z=++x

*

++y;

z=x++

*

++y;z=++x

*

y++;

z=x++

*

y++;z=++x

*

++x;逻辑虽然正确,但实际编程中容易产生误解,应当避免共72页第38

页§2-4运算符-自增自减运算实例实例已知:inti=1,j=2,k;k=i+++j;C语言处理运算符(标识符)时,遵循自左向右组合的原则,两个‘+’号是一个运算符,故处理成(i++)+j。k=i+++++j;不能编译通过。原因是编译器将前两个‘+’处理成自增,接下来又将两个‘+’号处理为自增,故不合语法。编程者可用空格或括号来表示正确的含义:k=i+++++j;

注意:一般不要用这样的语句。共72页第39

页§2-4运算符-赋值与赋值组合运算六、赋值与赋值组合运算符运算符(双目←)

赋值运算: =2 赋值组合运算:e1

op=e22

等于于:e1=e1

op(e2) 其中:op为下列10个运算符之一+–*/%<<>>|&^

e1为可以进行赋制操作的变量

e2为合法的表达式例:x+=2; <==>x=x+2; x*=y+1; <==>x=x*(y+1);

不等价

x=x*y+1; x>>=2; <==>x=x>>2;共72页第40

页§2-4运算符-条件运算七、条件运算符运算符(三目←)e1

?

e2

:

e3功能:如果表达式e1成立(e1值为非0),则执行表达式e2;否则(表达式e1不成立),执行表达式e3例:max=(a>b)?a:b; 求变量a与b的最大值

min=(a<b)?a:b;求变量a与b的最小值判断e1

?执行e2执行e3成立不成立共72页第41

页§2-4运算符-指针运算八、指针运算符运算符(单目

←)

&取变量的地址 14

*

取指针变量(所指向)的内容 14注意:运算符&和“位与”运算是同一符号;运算符*和“乘”运算是同一符号。只能从程序的上下文来区分运算符&和运算符*

的实际意义。共72页第42

页§2-4运算符-指针运算实例实例:已知:intx=2,y,*px;x为一般变量,px为指针型变量

y=x*100;

*px=y*10;

++x;

x++;px

px=&x; 取变量x的地址赋值给指针px

又称为让px指向变量x

x=10;若px已经指向x,则可以用*px代替变量xx210<==>

*px=10;也称为间接访问<==>y=*px;取指针px的内容<==>

y=*px

*100;<==>x=y*10;<==>++

*

px<==>(*

px)++;

括号不能省略

y=x; 共72页第43

页§2-4运算符-其它运算九、其它运算符运算符

. 取结构/联合的成员 15

–>通过指针取结构/联合的成员 15

() 改变表达式中的优先级关系 15

[] 数组下标 15

, 逗号,表达式从左向右顺序计算

1

(type)

e将e的数据类型强制转换为type

14

sizeof(opr) 求opr所占用的内存的字节数 14第六章第五章共72页第44

页§2-4运算符-其它运算实例实例:已知:intx,y,z;

y=(x=10,x+1);

答案:先执行x=10,然后再执行y=x+1

y=11,x=10

z=sizeof(int);

答案:z=2求int型数据占用的内存字节数量

z=sizeof(x);

答案:z=2求变量x占用的内存字节数量共72页第45

页§2-5运算符的优先级与结合性按运算符的优先级分为15级按运算符的结合性分为2种

自左向右结合自右向左结合优先级不同时:运算符优先级的高低决定了进行运算的先后次序。优先级相同时:同优先级运算符的运算次序由结合性决定。例如:四则运算中的“先乘除,后加减”反映了运算符的优先级;“同级运算从左至右”反映了乘/除运算(加/减运算)的结合性。共72页第46

页§2-5运算符的优先级与结合性运算符优先级表共72页第47

页§2-5实例已知:inta=8,b=5,c=2;计算下列表达式结果①a/b*b②a%b*c③a*c>>2④a&c&&b⑤a|b&c⑥~(~a>>3)⑦b>~a

?a*c

:

a%c5 先/后*6 先%后*4 先

*后>>0 先&后&&8 先&后|~后>>~00001000=11110111>>3=11111110~=0000000116 先~

再>再?:共72页第48

页#definePRINT(x)printf("%d\n",x)main(){intx=3,y=2,z=1;x=y++>=x&&x-y==++z;

PRINT(x);PRINT(y);PRINT(z);y*=z=x+(z+2);PRINT(x);PRINT(y);PRINT(z);x=y=z=1;PRINT(--x&&++y||z++);

PRINT(x);PRINT(y);PRINT(z);x=9;y=6;z=5;x=((x+y)%z>=x%z+y%z)?1:0;

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*//*┃①┃┃┃③┃┃④┃━┳━*//*┗┳┛②┃┗┳┛⑤┗┳┛┃*//*┗━┳━┛⑥┗━┳━┛┃*//*┗━━━┳━━━┛⑦┃*//*┗━━━━━━━━━┛*/

/*x=0*/例C2_4003共72页第49

页#include<stdio.h>main(){intx,y,z;x=1;y=1;z=0;x=x&&y||z;printf("x=%d\n",x);printf("%d\n",x||

!y++&&++z);printf("y=%d,z=%d\n",y,z);x=y=1;z=x++-1;printf("x=%d,z=%d\n",x,z);z+=-x+++++y;printf("x=%d,y=%d,z=%d\n",x,y,z);}&&优先级高,先计算x&&y,结果为1由于是||运算,故不再计算1||z。x=1||优先级最低,x=1,不再计算||右边的算式,y和z不变y=1,z=0

++为后缀,先将x-1的值赋给z,再计算x++

x=2,z=0等价于z+=(-(x++))+(++y)

x=3,z=0,y=2实例例C2_4002共72页第50

页§2-6数据类型转换不同数据类型的数据/变量进行混合运算时,需要进行数据类型转换转换方式有两种:“显式的”类型转换“隐式的”类型转换“显式的”类型转换采用强制类型转换运算符(type)“隐式的”类型转换是C语言按照一定的类型转换规则自动进行的转换共72页第51

页§2-6数据类型转换“隐式的”类型转换规则1、运算中将所有char型数据都转换成int型,float型转换成double型。2、低级类型服从高级类型,并进行相应的转换double

floatlongunsignedint

char3、赋值运算以赋值运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变量的类型看齐,并进行相应的转换。共72页第52

页§2-6数据类型转换-实例例:inta,j,y;floatb;longd;doublec;则:y=j+'a'+a*b-c/d;其运算次序和隐含的类型转换为:①计算a*b,运算结果为double型。②再计算c/d,结果为double型。③计算j+'a',结果为整型。④将第1步和第3步的结果相加,结果为double型⑤用第4步结果减第2步结果,结果为double型⑥给y赋值,先将第5步的结果double型转换为整型(因为赋值运算左边变量y为整型),截掉double型数据的小数部分,压缩成int型。共72页第53

页§2-7数据的输入与输出输入是指用户借助计算机的输入设备将数据输入到计算机中。常见的输入设备是键盘、鼠标输出是指从计算机内部将数据输送到用户指定的外部输出设备常见的输出设备如显示器、打印机、绘图仪等C语言通过标准输入/输出库(I/O库)提供的函数完成输入/输出功能共72页第54

页§2-7字符输入函数getchar调用形式:

c=getchar()功能:从标准输入设备(键盘)上取一个字符作为函数值返回。例:#include"stdio.h"main(){charc;c=getchar();

putchar(c);/*输出字符变量c的值*/}运行程序,如果从键盘输入: a[ENTER] 则输出为: a 如果从键盘输入: abc[ENTER] 则输出也为: a共72页第55

页§2-7格式输入函数scanf调用形式:scanf(”控制字符串”,参数1,参数2,…,参数n) 其中:控制字符串也称为格式说明串,它用于描述变量的输入方式,格式说明的形式是:%附加格式说明符

格式转换字符 附加格式说明符部分可以缺省。功能:从标准输入设备上读取输入数据,按格式说明的描述将读入的数据赋于相应的参数。 参数部分的每个参数,若为一般变量,要在变量名前加“&”(取地址运算符),表示将输入的数据存入变量对应的内存单元(地址)中。scanf

(

”%d”,&x);共72页第56

页§2-7格式输入函数scanf格式转换字符说明

d输入十进制整数

o输入八进制整数

x输入十六进制整数

c输入单个字符

s输入字符串

f输入实数,可为小数形式或指数形式附加格式说明符说明

l用于输入长整型数据及double型数据

h用于短整型数据正整数用于指定输入数据占据的宽度*表示本输入项在读入后舍弃共72页第57

页§2-7格式输入函数scanf1:scanf("%3d%2d",&x,&y); 输入序列:123456[ENTER]

结果:x=123,y=452:scanf("%d,%d:%f",&x,&y,&z);

输入序列:1,2:3.5[ENTER]

结果:x=1,y=2,z=3.53:scanf("%d%d%d",&x,&y,&z);

输入序列一:123[ENTER]

结果:x=1,y=2,z=3 输入序列二:1[TAB]23[ENTER] 输入序列三:1[ENTER]

23[ENTER] 结果与输入序列一的结果一样。共72页第58

页§2-7格式输入函数scanf4:scanf("%2d

%*2d,%2d",&x,&y);

输入序列:1234,56[ENTER]

结果:x=12,y=56。注意:在scanf中,可以使用[ENTER]、空格或[TAB]作为数据之间的分隔符。5:scanf(”x=%d",&x);

要使x的值等于12,从键盘应怎样输入?

正确的输入序列:x=12[ENTER]

注意:字符x=被过滤掉了

若输入序列为:12[ENTER]错误!共72页第59

页§2-7字符输出函数putchar调用形式:

putchar(c)功能:通过标准输出设备(显示器)输出变量c。例C2_7301.C:将从键盘输入的一行字符复制到标准输出。#include"stdio.h"main(){charc;c=getchar();

while(c!=’\n’)

{

putchar(c); /*输出该字符*/

c=getchar();/*再取下一输入字符*/

}

}例C2_7301共72页第60

页§2-7格式输出函数printf调用形式:printf(”控制字符串”,参数1,参数2,…,参数n)

其中:控制字符串也称为格式说明串,它用于描述变量的输出方式,格式说明的形式是:%附加格式说明符

格式转换字符 附加格式说明符部分可以缺省。功能:按照控制字符串中的格式说明依次将后面的各参数进行转换,排放成格式说明中规定的格式,输出到输出设备上。对非格式说明符,则按原样输出。共72页第61

页§2-7格式输出函数printf格式转换字符说明

d以十进制形式输出整数(正数不输出符号)

o以八进制无符号形式输出整数(不输出前缀符)

x以十六进制无符号形式输出整数(不输出前缀符)

u以无符号十进制形式输出整数

c以字符形式输出,仅输出一个字符

s输出字符串

f以小数形式输出单、双精度数

e以标准指数形式输出单、双精度数

g选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0共72页第62

页§2-7格式输出函数printf附加说明符说明

l用于输出长整型数据,可加在格式转换符d,o,x,u前面

m(正整数)输出数据的最小域宽.n(正整数)对实数,表示输出n位小数;对字符串,表示截取的字符个数-输出的数据在输出域内向左对齐共72页第63

页§2-7格式输出函数printf实例1:#include<stdio.h>main(){printf("ThisisaCprogram.\n");}实例2:#include<stdio.h>main(){inta=1,b=2,c=100;printf("a=%d,b=%3d,d=%3d%%\n",a,b,a*c/b);

printf("%d,%o,%x\n",-a,-a,-a);}答案:a=1,b=

2,d=

50%-1,177777,

ffff例C2_7302例C2_7303共72页第64

页§2-7格式输出函数printf实例3:#include<stdio.h>main(){charc='a';charch[]="Good-bye.";pri

温馨提示

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

评论

0/150

提交评论