




已阅读5页,还剩123页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教学内容:3.1基本数据类型3.2常用运算符和表达式3.3表达式及赋值语句3.4基本输入输出操作的实现3.5顺序结构程序设计应用实例教学要求:1.掌握整型数据、实型数据、字符数据使用规则2.掌握各种数据运算的运算符的运算。3.掌握scanf和printf函数的使用。4.掌握编写顺序结构程序的基本方法。,第3章顺序结构程序设计,用C语言编写的源程序如下:main()inta,b,c;a=24;b=14;c=a+b;printf(“%dn”,c);程序运行结果:38该程序仅由一个main()主函构成。,3.1基本数据类型,C语言提供的数据结构,是以数据类型形式出现的。一、数据类型分类1.基本类型整型、实型(又称浮点型)、字符型、空类型2.构造类型数组类型、结构类型、共用类型、枚举型3.指针类型C语言中的数据,有常量和变量之分,它们分别属于上述这些类型。,C数据类型,本章讨论基本类型数据,二、基本数据类型1.基本数据类型:整型、实型(又称浮点型)、双精度实型、字符型、无值型(空类型)。2.基本数据类型的标识符:int、float、double、char、void3.类型说明符除无值型以外的4种基本数据类型可以带有说明前缀。类型说明符有以下4种:(1)signed(2)unsigned(3)long(4)short例如longinta,b;,三、常量和变量在C语言中,数据有常量和变量之分。1.常量的概念在程序运行过程中,其值不能被改变的量称为常量。常量的类型,可通过书写形式来判别。常量的分类:表达形式:(1)整型常量6、432、76543、546783424(2)实型常量2.23、546.2487615247、3.057439+5(3)字符常量a、+、6、M(4)符号常量WHI#defineWHIIamastudent.#definePI3.14WHI,PI是符号常量,例3.1输出整型常量、字符常量的值main()printf(“%dn”,349);printf(“%dn”,-9);printf(“%Cn”,M);运行结果:349-9M,例3.2符号常量PI的使用。,以标识符来代表的常量事先编译预处理命令define定义编译时先由系统替换为它所代表的常量,再进行编译例如:,#definePI3.14main()floata,b,r;r=10;a=2*PI*r;b=PI*r*r;printf(a=%f,b=%fn,a,b);,编译前系统进行替换,例3.3符号常量WHI的使用。#defineWHIIamastudent.main()printf(“Iamastudent.n”);printf(%sn,“Iamastudent.”);printf(%sn,WHI);运行结果:Iamastudent.Iamastudent.Iamastudent.,格式控制字符串中的普通字符,照原样输出,2.变量的概念在程序运行过程中,其值可以被改变的量称为变量。变量的三个要素:(1)变量名。每个变量都必须有一个名称。(2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。(3)变量的类型例如:inta=23;a(2个字节)变量的类型int变量名字:a变量的值:23在内存中存储单元占16位,二进制数值,例3.3输出变量的数值。main()intx,y;x=5;y=3;printf(“%d-%dn”,x,y);x=1;y=2;printf(“%d-%dn”,x,y);运行结果:5-31-2,x、y是整型变量每个变量分配2个字节存储单元,将数值5、3分别存放到x、y变量的存储单元,x、y变量的值重新赋值,3.变量的定义在语言中,要求对所有用到的变量,必须先定义、后使用。系统才可知道分配多大的存储空间。变量定义的一般格式:存储类型数据类型变量名,变量名2;例如:inta1,a2,a3;例如:floatb1,b2,b3;,4.标识符命名规则语言中,用标识符来区分不同文件、函数、变量。(1)标识符有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。(2)标识符有效长度:TCV2.0标识符的有效长度为个字符。随系统而异,但至少前个字符有效。如果超长,则超长部分被舍弃。例如student11和student12的前个字符相同,有的系统认为这两个变量,是一回事而不加区别。(3)C语言的关键字不能用作变量名。,(4)标识符命名通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。通过变量名就知道变量值的含义,做到“见名知意”。例如:namexm姓名sexxb性别agenl年龄salarygz工资注意:C语言对英文字母的大小写敏感,即同一字母的大小写,被认为是两个不同的字符。变量名total与变量名TOTAL、ToTaL、totAl等不是同一个变量习惯上,变量名和函数名中的英文字母用小写,以增加可读性。,3.1.1整型数据,一、整型变量1.整型变量分为类:(1)基本整型(int)(2)短整型(shortint)(3)长整型(longint)(4)无符号整型。无符号型又分为(3种):unsignedintunsignedshortunsignedlong,二、整型变量占用内存字节数与值域1.整型变量占用的内存字节数在16位操作系统中占用:int型变量占2个字节值域占16位short型变量占2字节值域占16位long型变量占4字节值域占32位2.不同类型的整型变量值域占用内存位数为n的整型变量其值域:有符号为:-2n-1(2n1-1)无符号为:0(2n-1),三、各种整型变量的值域范围int型变量(值域为16位):-3276832767shortint(值域为16位):-3276832767longint(值域为32位):-21474836482147483647unsignedint(值域为16位):065535Unsignedshortint(值域为16位):065535Unsignedlongint(值域为32位):04294967295,整型数据类型,4.整型常量(整常数)三种表示形式(1)十进制例如:10、36(2)八进制(以数字0开头)例如:012(十进制10)(3)十六进制(以数字0+小写字母x开头)例如:0 x36(十进制54)5.整型常量分类(1)基本整型:其数据范围-3276832767(与int型变量一样)(2)长整型(在数值后面加字母L(小写字母l):其取值范围可达:-21474836482147483647例如:32769、123L、315L等。,6.整型数据在内存中的存放,数值是以补码表示的。一个正数的补码与原码相同;一个负数的补码求法:原码的二进制形式,取反求得反码,再加1,得到负数的补码。例如:,-8的原码,1000000000001000,求反码,1111111111110111,补码,1111111111111000,例3.4输出不同进制整型常量#includemain()printf(“0 x80-%dn,0 x80);printf(“0200-%dn,0200);printf(128-%dn,128);printf(128-%on,128);运行结果:0 x80-1280200-128128-128128-200,不输出前缀数字,以数字开头,3.1.2实型数据,1.实型常量(实数,又称浮点数)表示形式:(1)十进制形式例如:3.14、9.8(2)指数形式E(e)例如:3.02+5(3.02105)34.42367750+7(34.42367750107)实型常量不分(单精度)float型和(双精度)double型。一个实型常量,可以赋给一个实型变量(float型或double型)。,例3.5实型常量的使用#includemain()printf(a=%fn,32.766);printf(“b=%en,1.7e+37);运行结果:a=32.766000b=1.700000e+037,2.实型变量分类(1)单精度型变量float型变量占4字节(32位)提供7位有效数字值域:(3.4e-383.4e+38)(2)双精度型变量double型变量占8个字节(64位)提供1516位有效数字值域:(1.7e-3081.7e+308),4.实型数据在内存中的存放形式。一个单精度实型数据(float)在内存中占用个字节(32位)存放数据的数值范围:(3.4e-383.4e+38)数值的有效数字7位例如数值:56783.45620.567834562e+5在内存中的浮点数存放形式:,+5+567834562,0831前8位后24位,精选,26,实型数据类型,例3.6运行以下程序,查看运行结果。,数值的有效数字7位尾数7031不是有效数值,例3.7实型变量的使用#includemain()floatx,y,z;x=42.67;y=12.3;z=x/y;printf(“z1=%fn,z);z=y/x;printf(“z2=%fn,z);程序运行结果:z1=3.469106z2=0.288259,小数点后6位,3.1.3字符数据,1.字符常量的定义用一对单引号括起来的单个字符称为字符常量。例如:A、7、等。2.转义字符语言还允许使用一种特殊形式的字符常量,就是以反斜杠“”开头的转义字符。nbrtf0”vdddxhh注意:如果反斜杠或单引号本身作为字符常量,必须使用转义字符:、,3.以“”开头的字符在printf函数中控制输出格式:n换行t横向跳格(下一个输出区)v竖向跳格b退格r回车f走纸换页反斜杠字符单引号ddd1到3位8进制数所代表的字符。如:101=Axhh1到2位16进制数所代表的字符。,例3.9用转义字符输出字符和不可打印字符。main()printf(“ABCtabctxyzn”);printf(“abcbxyzn”);程序运行结果如下:,4.字符变量(关键字为char)字符变量类型,占用1字节内存单元。(1)变量值的存储将一个字符常量存储到一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。(2)变量值的特性字符数据在内存中存储的是字符的ASCII码(一个无符号整数),其形式与整数的存储形式一样。,例如:charch1,ch2;/*定义变量:ch1,ch2*/ch1=a;/*给字符变量赋值*/ch2=b;字符数据a、b的ASCII码值97、98(一个无符号整数)分别存放在变量ch1,ch2所占用内存存储单元中,其形式与整数的存储形式一样。ch1ch2,97,98,精选,34,字符数据类型,(3)一个字符型数据,既可以字符形式输出,也可以整数形式输出。例3.10字符变量的字符形式输出和整数形式输出。main()charch1,ch2;ch1=a;ch2=b;printf(“ch1=%c,ch2=%cn”,ch1,ch2);printf(“ch1=%d,ch2=%dn”,ch1,ch2);程序运行结果:ch1=a,ch2=bch1=97,ch2=98,(4)允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行算术运算。例3.11字符数据的算术运算。main()charch1,ch2;ch1=a;ch2=B;/*等价于ch1=97;ch2=66;*/printf(“ch1=%d”,ch1-32);/*字母的大小写转换*/printf(“ch2=%dn”,ch2+32);printf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32);运行结果:ch1=65,ch2=98ch1=A,ch2=b,例3.12用字符形式输出一个大于256的数值main()charch1=a;printf(ch1+200=%dn,ch1+200);printf(ch1+200=%cn,ch1+200);printf(ch1+256=%dn,ch1+256);printf(ch1+256=%cn,ch1+256);程序运行结果:ch1+200=297ch1+200=)ch1+256=353ch1+256=a,5.字符串常量(1)字符串常量的概念和字符串长度字符串常量:是用一对双引号括起来的若干字符序列。字符串长度:字符串中字符的个数称为字符串长度。空串:长度为0的字符串(即一个字符都没有的字符串),表示为“”(一对紧连的双引号)。例如字符串常量:“Howdoyoudo.”长度为14(空格也是一个字符)“Goodmorning.”长度为13如果反斜杠和双引号作为字符串中的有效字符,则必须使用转义字符。例C:msdosv6.22C:msdosv6.22Isay:Goodbye!Isay:Goodbye!,例3.13输出字符串常量#includemain()char*p;/*定义一个指针变量*/p=Iamastudent.;printf(%sn,p);printf(%sn,Isay:Goodbye!);运行结果:Iamastudent.Isay:Goodbye!,6.字符串的存储C语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个0作为字符串的结束标志。如果有一个字符串为“CHINA”,则它在内存中的实际存储如下所示:CHINA0最后一个字符0是系统自动加上的,它占用字节而非字节内存空间。,7.字符常量A与字符串常量A的区别:(1)定界符不同:字符常量使用单引号A,而字符串常量使用双引号;(2)长度不同:字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数;(3)存储要求不同:字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志0。,3.2常用运算符和表达式,1.运算符C语言具有丰富的运算符。TurboC提供了44种数据操作运算符,其使用范围很宽。运算符是一种向编译程序说明特定的运算或操作的符号。每一种运算符都具有特定的数据操作规则。2.运算符的分类(1)按运算符要求运算对象的个数分类:单目运算符、双目运算符、三目运算符。(2)按其数据操作功能分类:算术运算符、关系运算符、逻辑运算符、位运算符、C的特殊运算符。,3.运算符的优先级当一个表达式中出现多个运算符时,表达式的求值运算按运算符的优先级别从高到低的顺序执行。在C语言中,将44种运算符的优先级从高到低共分为15个等级。如书后表所示。4.运算符的结合性(1)运算符的左结合性:当一个操作数两侧的运算符具有相同的优先级时,操作数先与左边的运算符结合,即自左至右的结合方向。(2)运算符的右结合性:即自右至左的结合方向。除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。,初等运算符()、单目运算符!、+、+、(类型)算术运算符、/、%,+、关系运算符、=,=、!=逻辑运算符floaty;x=5y=(float)5/2如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。表达式x=5的值:5变量x的值:5表达式y=(float)5/2的值:2.5变量y的值:2.5,(3)赋值运算结合方向:右左例如:x=y=65等价于x=(y=65)操作数y是先与右边的运算符结合,即先将65赋值给变量y变量y的值是65表达式y=65的值是65再做左边赋值运算,即将表达式y=65的值65,赋值给变量x变量x的值是65表达式x=y=65的值是65,5.复合赋值运算复合赋值运算符:是由赋值运算符之前再加一个双目运算符构成的。(1)复合赋值运算的一般格式为:变量双目运算符=表达式复合赋值运算符它等价于:变量=变量双目运算符(表达式)例如:y*=x+6等价于y=y*(x+6)不是y=y*x+6,当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。例如:x+=a等价于x=x+ax/=3等价于x=x/3(2)10种复合赋值运算符C语言规定的10种复合赋值运算符如下:复合算术运算符:+=-=*=/=%=复合位运算符:x=10;y=3;m=24;m/=x4;printf(“%dn”,m);printf(“%fn”,(float)x/y);x=1;y*=x+2;printf(“%d-%dn”,x/y,x%y);运行结果:43.3333330-1,m=m/(x4);,例3.18输出多个算术表达式的结果#includemain()inta,b,c1;a=5;b=8;printf(“a1=%d,a2=%dn,a+b,a+=b);printf(“a3=%dn,a);程序运行结果:a1=21,a2=13a3=13,先运算ab的值是13,变量a的值是13再运算a+b的值是21,3.2.2算术运算,1.五种基本算术运算符+(加法)-(减法/取负)*(乘法)/(除法)%(求余数)2.运算符的优先级与结合性(1)算术运算符的优先级先取负、再乘、除、求余,最后加、减法(2)运算符的结合性为:自左至右的结合方向。,3.算术表达式由算术运算符和括号将运算对象连接起来形成的运算式子,称为算术表达式例如,3+6*9、(x+y)/214.算术表达式的值除C语言的特定规则外,C语言中算术运算与数学中的算术运算规则相同,经过有限次加减除等运算,最后求得表达式的值。例如,表达式3+6*9的值:57,5.C语言算术运算的特定规则(1)两个整数相除,其商为整数,小数部分被舍弃。例如,表达式:5/2的值为2,不是2.5。而表达式:12.6/3的值为4.2,不是4。(2)关于求余数运算,要求求余运算符两侧的操作数均为整型数据,否则出错。例如,表达式:5%3的值为2。而5.32出错,不是合法表达式。(3)C语言的整型、实型和字符型数据间可以混合运算。,例3.14输出算术表达式的结果#includemain()inta,b,c1;floatx,y,z;a=85;b=18;x=42.6;y=28.3;c1=a/b*9+a%b;z=x/y(x+y)/21;printf(c1=%dn,c1);printf(z1=%fn,z);程序运行结果:c1=49z1=39.172222,a/b的值是4,4乘9得36,a%b的值1336+13得49,混合运算中数据类型的转换:,6.数据类型转换,1)横向向左的箭头,表示必须的转换。char和short型必须转换成int型,float型必须转换成double型。2)纵向向上的箭头,表示不同类型的转换方向。,(1)整型、实型和字符型数据间可以混合运算(因为字符数据与整型数据可以通用)。一个运算符两侧的操作数的数据类型不同,则按“先转换、后运算”的原则,首先将数据自动转换成同一类型,然后进行运算。例如,int型与double型数据进行混合运算,则先将int型数据转换成double型,然后在两个同类型的数据间进行运算,结果为double型。注意箭头方向只表示数据类型由低向高转换.,例3.15整型、实型数据间混合运算#includemain()inta;floatx;a=35;x=42.63;printf(%fn,a+x);printf(%fn,x/a);程序运行结果:77.6300011.218000,自动将X的数据转换成double型,再将int型变量a数据转换成double型,进行加法运算,运算结果为double型,7.数据类型强制转换数据类型允许强制转换,一般格式为:(数据类型)(表达式)例如:(int)(x+y)/*将x+y的结果转换成int型*/(1)当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。例如:(double)a/*将变量a的值转换成double型*/,(float)5/2(等价于(float)(5)/2)/*将5转换成实型再除以2(=2.5)*/(float)(5/2)/*将5整除2的结果:2,转换成实型数:2.0*/(2)强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。例如,(double)a只是将变量a的值转换成一个double型的中间量,其数据类型并未转换成double型。,例3.16数据类型强制转换#includemain()inta;floatx,y;a=85;x=42.6;y=19.3;printf(“1-%ft,(float)5/2);printf(“2-%fn,(float)(5/2);printf(“3-%dt,(int)(x+y);printf(“4-%fn,(double)a);程序运行结果:1-2.5000002-2.0000003-614-85.000000,3.2.3自增自减运算,1.自增(+)、自减(-)运算自增运算使单个变量的值增,自减运算使单个变量的值减。2.用法与运算规则(1)前置运算运算符放在变量之前:变量、变量,先使变量的值增(或减),然后再以变化后的值参与其它运算,即先增、减,后运算。(2)后置运算运算符放在变量之后:变量、变量,变量先参与其它运算,然后再使变量的值增(或减),即先运算,后增、减。(3)结合方向:右左,3.自增、自减运算说明(1)自增、自减运算符,不能用于常量和表达式。例如,5+、-(a+b)等都是非法的。(2)自增、自减运算,常用于循环语句中,使循环控制变量加(或减),以及指针变量中,使指针指向下(或上)一个地址。(3)在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。例如:a+a+a+b,例3.20求下列表达式的值设inta,b;a=3;b=4;(1)+a+b+变量a:4,表达式值:8,变量b:5(2)a+a+a等价于(a+)+(a+)+a表达式值:9,变量a:5(3)a+(+a)+(+a)变量a:5,表达式值:15,例3.21自增自减运算符的用法与运算规则示例main()intx=6,y;printf(x=%dn,x);/*输出x的初值*/y=+x;/*前置运算*/printf(y=+x:x=%d,y=%dn,x,y);y=x-;/*后置运算*/printf(y=x-:x=%d,y=%dn,x,y);程序运行结果:x=6y=+x:x=7,y=7y=x-:x=6,y=7,例3.22由自增自减组成的表达式#includemain()inta;floatx;a=16;x=12.6;printf(a1=%d,a2=%d,a3=%dn,a+,a+,a+);printf(a=%dn,a);printf(x1=%f,x2=%f,x3=%fn,-x,-x,-x);程序运行结果:a1=18,a2=17,a3=16a=19x1=9.600000,x2=10.600000,x3=11.600000,例3.23由自增自减组成的表达式main()inta,b;floatx,y;a=16;x=12.6;+a;+x;printf(1-a=%d,x=%fn,a,x);a+;x+;printf(2-a=%d,x=%fn,a,x);b=a+;y=x+;printf(3-b=%d,y=%fn,b,y);printf(4-a=%d,x=%fn,a,x);程序运行结果:1-a=17,x=13.6000002-a=18,x=14.6000003-b=18,y=14.6000004-a=19,x=15.600000,1.条件运算符:?:2条件表达式一般格式:表达式1?表达式2:表达式3条件表达式中的“表达式1”、“表达式2”、“表达式3”的类型,可以各不相同。intx,y,a,b;charc;x=56;y=34;a=23;b=32;xy?C=#:(a+b),3.2.4条件运算符,3条件运算规则:如果“表达式1”的值为非0值(即逻辑真),运算结果等于“表达式2”的值;否则,运算结果等于“表达式3”的值。4条件运算符优先级与结合性条件运算符的优先级,高于赋值运算符,但低于关系运算符和算术运算符。其结合性为“从右到左”。例如:xy?x+y:ab?a*b:a+b等价于:xy?x+y:(ab?a-b:a+b)设x=5y=8a=34b=12表达式的值:22,例3.24从键盘上输入一个字符,如果它是大写字母,则把它转换成小写字母输出;否则,直接输出。main()charch;printf(Inputacharacter:);scanf(%c,1.逗号运算符(,)及其表达式c语言提供一种用逗号运算符“,”连接起来的式子,称为逗号表达式。逗号运算符又称顺序求值运算符。2.逗号表达式一般形式表达式,表达式,表达式n3.求解过程自左至右,依次计算各表达式的值,最后一个表达式的值即为整个逗号表达式的值。,3.2.5逗号运算符,(1)逗号表达式:a=3*5,a*4的值先求解a=3*5,得a=15;再求a*4=60,所以逗号表达式的值为:60。(2)逗号表达式(a=3*5,a*4),a+5的值先求解a=3*5,得a=15;再求a*4=60;最后求解a+5=20,所以逗号表达式的值为:20。注意:并不是任何地方出现的逗号,都是逗号运算符。很多情况下,逗号仅用作分隔符。例如:inta,b,c;printf(“%d%dn”,a+b,b+3);,1.表达式的定义用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合语言语法规则的式子,称为表达式。(1)简单表达式:表达式中只有一个运算符的表达式,被称为普通表达式,或称为简单表达式。(2)复合表达式:有多个运算符构成的表达式,被称为复合表达式。(3)特殊表达式:在使用中,单个常量、变量和函数(返回值)都可以看作是一个表达式,称为特殊表达式。,3.3表达式及赋值语句,2.表达式求值每一个C的合法表达式,经过运算一定能得到一个确定的数值,这个数值被称为表达式的值。复合表达式的求解过程如下:(1)按运算符的优先级高低次序执行。例如,先乘除后加减。(2)如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按语言规定的结合方向(结合性)进行。,3赋值语句,(1).赋值语句的格式:变量名表达式;或表达式;,(2).注意区分赋值语句和赋值表达式的区别:例如a=b+2(这是赋值表达式)a=b+2;(这是赋值语句)a+(这是表达式)a+;(这是赋值语句,等价与a=a+1;),3.4.1输入输出的概念1.从计算机向外部输出设备(如显示屏、打印机、磁盘等)输出数据称为“输出”,从外部向输入设备(如键盘、磁盘、光盘、扫描仪等)输入数据称为“输入”。2.C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。在C标准函数库中提供了一些输入输出函数,例如,printf函数和scanf函数。,3.4基本输入输出操作的实现,3.在使用C语言库函数时,要用预编译命令“include”将有关的“头文件”包括到用户源文件中。在调用标准输入输出库函数时,文件开头应有以下预编译命令:#include或#include“stdio.h”4.允许在使用printf和scanf两个函数时可不加#include命令。,一、单个字符的输入函数1getchar()函数的格式:getchar();2getchar()函数的作用:从系统隐含的输入设备(如键盘)输入一个字符。3说明:(1)getchar()函数只能用于单个字符的输入,一次输入一个字符。(2)程序中要使用getchar()函数,必须在程序(或文件)的开头加上编译预处理命令:#includestdio.h,3.4.2字符输入输出函数,例5.2getchar()函数的使用。#includestdio.h/*文件包含*/main()charch;printf(Pleaseinputacharacter:);ch=getchar();/*输入1个字符并赋给ch*/printf(%c,ch);/*输出一个字符*/printf(n);程序运行情况如下:Pleaseinputacharacters:bb,二、单个字符的输出函数1putchar()函数的格式:putchar(ch);其中ch可以是一个字符变量或常量,也可以是一个转义字符。2putchar()函数的作用:向终端输出一个字符。3说明:(1)putchar()函数只能用于单个字符的输出,且一次只能输出一个字符。(2)在程序中使用putchar()函数,务必牢记:在程序(或文件)的开头加上编译预处理命令(也称文件包含命令):#includestdio.h表示要使用的函数,包含在标准输入输出(stdio.h)头文件中。,例5.3putchar()函数的格式和使用方法。#includestdio.h/*文件包含命令*/main()charch1=N,ch2=E,ch3=W;putchar(ch1);putchar(ch2);putchar(ch3);putchar(n);putchar(ch1);putchar(n);putchar(E);putchar(n);putchar(ch3);putchar(n);程序运行结果如下:NEWNEW,返回本章首页,3.4.3格式输入输出函数,一、printf()函数1printf()函数的一般格式printf(格式字符串,输出项表);2.函数的作用:输出一个或多个任意类型的数据。3格式字符串“格式字符串”也称“转换控制字符串”,可以包含三种字符:格式指示符、转义字符、普通字符(1)格式指示符一般形式如下:%标志符宽度.小数宽度类型修饰符,(2)转义字符printf()函数中的n就是转义字符,输出时产生一个“换行”操作。还有:t、r、b等。(3)普通字符除格式指示符和转义字符之外的其它字符。普通字符原样输出。4输出项表输出项表内容:常量,变量,表达式。输出项表是可选的。若输出的数据不止1个,相邻2个之间用逗号分开。,下面的printf()函数都是合法的:(1)printf(Iamastudent.n);普通字符转义字符(2)printf(%d,3+2);格式指示符表达式(3)printf(a=%fb=%5dn,a,b+3);(4)printf(“%d,%cn”,56,56);,2个输出项之间用逗号分开,此处逗号也是普通字符,5.格式指示符%d以十进制输出整数。%md以十进制输出整数,数据最小宽度占m位。若数值长度m,输出原整数。%_md以十进制输出整数,数据最小宽度占m位。若数值长度m,输出原整数。例如:printf(“%5d,%5dn”,456,567);输出结果:456,567%ld以十进制形式输出长整型数据。,%o以八进制无符号形式输出整数,不输出前导符0。printf(%on,128);输出结果:200%lo以八进制无符号形式输出长整型数不输出前导符0。%x以十六进制无符号形式输出整数,不输出前导符0 x。%lx以十六进制无符号形式输出长整型数,不输出前导符0 x。%u以无符号十进制形式输出整数。printf(“%un”,2);输出结果:65534%lu以无符号十进制形式输出长整型数。,%c用来输出1个字符。%s用来输出一个字符串。%ms按m宽度输出字符串。若串长m,则照字符串原样输出;若串长m,则左边补空格。%-ms类似%ms,若串长m,则字符串向左靠,右边补空格。%m.ns靠右输出字符串左边的n个字符,左补空格。(nm)%-m.ns靠左输出字符串左边的n个字符,右补空格。(nm),%f以小数形式输出实数。%m.nf输出宽度为m,其中小数为n位。若数值长度m,则靠右输出,左边补空格。%-m.nf同类似,“-”表示靠左输出,右边补空格。%e以指数形式输出实数。%m.ne此处m、n、同f格式。%-m.ne此处m、n、-同f格式。%g根据数值大小自动选择f格式或e格式中占用宽度小的一种,6.使用说明(1)格式控制中的格式说明符,必须按从左到右的顺序,与输出项表中的每个数据一一对应,否则出错。例如:下面使用格式是错误的。printf(str=%s,f=%d,i=%fn,Internet,1.0/2.0,3+5,CHINA);(2)格式字符x、e、g可以用小写字母,也可以用大写字母。使用大写字母时,输出数据中包含的字母也大写。除了x、e、g格式字符外,其它格式字符必须用小写字母。例如,%f不能写成%F。,(3)格式字符紧跟在“%”后面就作为格式字符,否则将作为普通字符使用(原样输出)。例如,printf(”c=%c,f=%fn“,c,f);中的第一个c和f,都是普通字符(4)所谓无符号形式是指,不论正数还是负数,系统一律当作无符号整数来输出。unsignedinta=65535printf(“a=%un”,a);输出结果:65535,7.格式字符使用实例(1)d以带符号的十进制整数形式输出。main()intn1=123;longintn2=123456;printf(%d,%5d,%5d,%2dn,n1,n1,n1,n1);printf(n2=%dn,n2);printf(%ld,%8ld,%5dn,n2,n2,n2);,程序运行结果:123,123,123,123n2=16908411123456,123456,123456对long型数据应当用ld格式输出。对长整型数据也可以指定字段宽度,如将上面printf函数中的“ld”改为“8ld”则输出为:123456(8列)一个int型数据可以用d或ld格式输出。,(2)doxu形式输出整数。main()unsignedinta=65535;intb=-2;printf(“a=%d,%o,%x,%un”,a,a,a,a);printf(“b=%d,%o,%x,%un”,b,b,b,b);,(3)f以小数形式输出单精度和双精度实数。main()floatf=123.456;doubled1,d2;d1=1111111111111.111111111;d2=2222222222222.222222222;printf(%f,%12f,%12.2fn,f,f,f);printf(%-12.2f,%.2fn,f,f);printf(d1+d2=%fn,d1+d2);,程序运行结果如下:123.456001,123.456001,123.46123.46,123.46d1+d2=3333333333333.333010数据123.456001中的001是无意义的数据3333333333333.333010中的010是无意义,(4)%e-以标准指数形式输出实数指数形式尾数中的整数部分大于等于1、小于10,小数点占一位,尾数中的小数部分占6位;指数部分占5位(如e-003),其中e占一位,指数符号占一位,指数占3位,标准指数形式共计13位。(5)%g-让系统根据数值的大小,自动选择%f或%e格式、且不输出无意义的零。例如:floata=123.468;printf(“%f,%e,%gn”,a,a,a);输出结果:123.468000,1.234680e+002,123.468,(6)c输出一个字符(只占一列宽度)。main()charc=A;inti=65;printf(c=%c,%5c,%dn,c,c,c);printf(i=%d,%c,i,i);,程序运行结果如下:c=A,A,65i=65,AC语言中,整数以字符形式输出时,系统首先求该数与256的余数,然后将余数作为ASCII码,转换成相应的字符输出。字符数据也可以整数形式输出。,(7)s输出一个字符串。main()printf(%s,%5s,Internet,Internet);printf(%-10sn,Internet);printf(%10.5s,”,Internet);printf(%-10.5s,”,Internet);printf(“%4.5sn,Internet);,程序运行结果如下:Internet,Internet,Internet,Inter,Inter,Inter说明:系统输出字符和字符串时,不输出单引号和双引号。,例5.4输出格式控制符的作用#includemain()inta=3102;longintb=74228;shortintc=625;printf(a1=%dn,a);printf(a2=%on,a);printf(a3=%xn,a);printf(b=%ldn,b);printf(c=%dn,c);,运行结果:a1=3102a2=6036a3=c1eb=74228c=625,例5.5输出格式控制符的作用#includemain()unsignedintd=65433;floatf=2.34679865858988;doubleg=2.34679865858988;printf(d=%un,d);printf(“f1=%en,f);printf(f2=%fn,f);printf(g=%fn,g);printf(n);,运行结果:d=65433f1=2.346799e+000f2=2.346799g=2.346799,例5.6已知圆柱体的底半径(radius)1.5,高(high)2.0,求其体积。main()floatr=1.5,h=2.0,vol;vol=3.14159*r*r*h;/*求体积*/printf(“vol=%7.2fn”,vol);在程序中给计算机提供数据,可以用赋值语句,也可以用输入函数。在C语言中,可使用scanf()函数,通过键盘输入,给计算机主机同时输入多个、任意的数据,二、格式化输入函数,1.scanf()函数的一般格式scanf(格式字符串,输入项首地址表);(1)格式字符串格式字符串可以包含3种类型的字符:格式指示符、空白字符(空格、Tab键和回车键)和非空白字符(又称普通字符)。格式指示符与printf()函数的相似,空白字符作为相邻2个输入数据的缺省分隔符,非空白字符(又称普通字符)在输入有效数据时,必须原样一起输入。,(2)输入项首地址表输入项首地址表由若干个输入项首地址组成,相邻2个输入项首地址之间,用逗号分开。变量首地址的表示方法:,输入项首地址表,2.格式指示符(1)格式指示符的形式为:%*宽度h|l类型字符类型字符有:d、u、o、x、c、s、f、e、g以上类型字符代表的数据类型与p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025石墨矿石买卖合同(完整)
- 2025实习员工合同范本
- 化肥厂采购设备安装规定
- 汽车保险代理合同协议
- 中医考试题及答案大专
- 金融机构总部大楼租赁及金融服务合作协议
- 宫萱与吴鹏的情感纠葛离婚协议书
- 宠物狗品种鉴定与知识产权保护协议
- 文员岗位招聘与团队建设合同
- 离婚协议书签订与诉讼离婚心理咨询服务合同
- GB/T 45860.1-2025光纤激光束焊机的验收试验第1部分:光纤输送机的激光组件
- 卒中后抑郁症的中医治疗
- 2025年4月自考00155中级财务会计试题及答案含评分标准
- DB50∕T 1653-2024 林区森林防火及森林质量提升专项规划编制导则
- 道路工程培训课件
- 制冰厂可行性研究报告
- 快递业务流程标准化管理
- 中班健康魔法消气屋课件
- 呼吸内科出科汇报
- JJF 2267-2025场磨式大气电场仪校准规范
- 2024-2025学年安徽合肥七年级上册数学第一次月考试卷及答案
评论
0/150
提交评论