第3章 语句与输入输出_第1页
第3章 语句与输入输出_第2页
第3章 语句与输入输出_第3页
第3章 语句与输入输出_第4页
第3章 语句与输入输出_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

第3章语句与输入输出1《C语言程序设计》第3章语句与输入输出第3章语句与输入输出3.1C语言的语句

3.2数据的输入和输出2《C语言程序设计》第3章语句与输入输出C程序函数中的执行部分是由语句组成的。程序的功能是由执行语句实现的。可执行语句通过向计算机系统发出操作指令,指挥计算机完成相应的操作。3.1C语言的语句《C语言程序设计》第3章语句与输入输出3C语言的语句分为五类。3.1C语言的语句《C语言程序设计》第3章语句与输入输出41.控制语句控制语句用于控制程序的流程,以实现程序的各种结构。C语言有九种控制语句。可分成以下三类:(1)条件判断语句if语句、switch语句;(2)循环执行语句dowhile语句、while语句、for语句;(3)转向语句break语句、continue语句、return语句、goto语句。C语言的语句分为五类。3.1C语言的语句《C语言程序设计》第3章语句与输入输出52.函数调用语句函数调用语句由函数调用加分号构成。例如:

printf(“ThisismyfirstCprogram.\n”);C语言的语句分为五类。3.1C语言的语句《C语言程序设计》第3章语句与输入输出63.表达式语句表达式语句由表达式后加分号构成。比较典型的表达式语句是赋值表达式语句。需要注意表达式与表达式语句是不同的:表达式后面没有分号,它可以出现在任何使用表达式的地方;语句以分号结束,它是可执行语句,不能出现在表达式中。C语言的语句分为五类。3.1C语言的语句《C语言程序设计》第3章语句与输入输出74.空语句空语句仅由一个分号构成。显然,空语句什么操作也不执行。有时用来做被转向点或循环体(此时循环体不执行任何操作)。例如:;就是一个空语句。C语言的语句分为五类。3.1C语言的语句《C语言程序设计》第3章语句与输入输出85.复合语句复合语句是由大括号括起来的一组语句构成。说明:(1)在语法上和单一语句相同,即可以使用单一语句的地方,也可以使用复合语句。(2)复合语句可以嵌套,即复合语句中也可出现复合语句。3.2数据的输入和输出所谓数据的输入,是指计算机外部设备将数据送入计算机内部的操作。例如常见的从键盘输入数据。所谓数据的输出,是指将计算机内部的数据送到外部设备的操作。例如常见的将数据显示在屏幕上或打印在纸上。C语言本身没有输入输出语句,它是通过调用标准库函数中提供的输入输出函数来实现数据的输入输出。C语言提供了丰富的用于输入输出的库函数。在使用这些库函数之前需要在源文件开头包含以下预编译命令#include<stdio.h>9《C语言程序设计》第3章语句与输入输出3.2数据的输入和输出3.2.1printf()函数3.2.2scanf()函数3.2.3getchar()函数与putchar()函数10《C语言程序设计》第3章语句与输入输出3.2.1printf()函数printf()函数称为格式输出函数,其作用是向终端设备按指定格式输出数据。它是一个标准库函数,它的函数原型在头文件“stdio.h”中。11《C语言程序设计》第3章语句与输入输出3.2.1printf()函数1.printf()函数的调用形式 printf(格式控制,输出表列)例如:

printf("%d,%c\n",i,c);12《C语言程序设计》第3章语句与输入输出3.2.1printf()函数1.printf()函数的调用形式

说明:(1)格式控制:是由""括起来的字符串,由“格式说明”和“普通字符”两部分组成。1)格式说明:以“%”字符开始,由%及格式字符共同组成。其作用是说明将“输出表列”中的数据按指定格式进行输出。2)普通字符:格式字符以外的字符作为普通字符,按原样输出。13《C语言程序设计》第3章语句与输入输出3.2.1printf()函数1.printf()函数的调用形式

说明:(2)输出表列:是指需要输出的数据,可以是变量、常量或表达式。14《C语言程序设计》第3章语句与输入输出3.2.1printf()函数1.printf()函数的调用形式例如:inta=3,b=4;printf("a=%db=%d",a,b);运行结果:a=3b=4其中,普通字符“a=”、“”、“b=”原样输出;格式说明“%d”、“%d”则按有符号数十进制整数形式输出变量a、b的值,即3和4。15《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符

格式字符用以指明按什么格式输出数据。16《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符(1)格式字符d:以有符号十进制形式输出整数。1)%d:用以输出整型数据。例如:inta=123;printf("%d",a);运行结果:12317《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符(1)格式字符d:以有符号十进制形式输出整数。2)%ld,用以输出长整型数据。例如:longa=123456;printf("%ld",a);运行结果:123456注意:对于长整型数据输出应该采用%ld格式,否则有可能会出现错误。18《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符(1)格式字符d:以有符号十进制形式输出整数。3)%md或%mld:按指定的长度输出整型数据或长整型数据。如果数据位数小于m,则左端补以空格;否则,则按实际位数输出。例如:longa=123456;printf("%8ld,%4ld",a,a);运行结果:□□123456,123456注意:□表示空格。19《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符(2)格式字符o:以无符号八进制形式输出整数。例如:inta=-1;printf("%d,%o",a,a);在TC环境(16位系统)下的运行结果:-1,177777说明:因为-1的16位补码为1111111111111111,因此变量a在内存实际存储的内容为“1111111111111111”。当变量a以“八进制无符号整数形式”输出时,其值为177777Q,所以实际输出为“177777”。20《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符(3)格式字符x:以无符号十六进制形式输出整数。例如:inta=-1;printf("%x,%d",a,a);在TC环境(16位系统)下的:ffff,-1说明:变量a在内存实际存储的内容为“1111111111111111”。当变量a以“十六进制无符号整数形式”输出时,其值为FFFFH,所以实际输出为“ffff”。21《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符(4)格式字符u:以无符号十进制形式输出整数。与“%d”格式一样,可以使用“%lu”输出长整型,使用“%mu”或“%mlu”形式进行定长输出。注意:一个int型数据可以用“%u”格式输出;反之,一个unsigned型数据也可以用“%d”、“%o”、“%x”格式输出。所有输出都是将内存中实际存储的数据按格式字符指定的编码进行输出。22《C语言程序设计》第3章语句与输入输出【例3.1】输出函数的应用。3.2.1printf()函数《C语言程序设计》第3章语句与输入输出2324源程序:#include<stdio.h>intmain(){ unsignedinta=65535; intb=-2; printf("a=%d,%o,%x,%u\n",a,a,a,a); printf("b=%d,%o,%x,%u\n",b,b,b,b); return0;}在TC环境下的运行结果:《C语言程序设计》第3章语句与输入输出a=-1,177777,ffff,65535b=-2,177776,fffe,65534【例3.1】输出函数的应用。程序分析:a为无符号整型变量,赋值为65535后,在内存中存储为“1111111111111111”。当变量a以“%d”格式输出时,是作为有符号数输出。根据补码规则,“1111111111111111”是-1的补码,因此输出为-1。3.2.1printf()函数《C语言程序设计》第3章语句与输入输出253.2.1printf()函数2.格式字符(5)格式字符c:以字符形式输出单个字符。例如:charc='a';printf("%c",c);26《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符实际上,整数也可以用字符形式输出;反之,字符数据也可以用整数形式输出。例如:inti=65;printf("%c,%d\n",i,I);运行结果:A,65说明:65是字符'A'的ASCII码的值。也可以指定字符输出的宽度,例如printf("%3c",c),此时输出的3列中,前2列补空格。27《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符(6)格式字符s:输出字符串。有5种用法:1)%s:按字符串的实际长度输出。例如:printf("%s","CHINA");运行结果:CHINA。2)%ms:指定长度输出字符串。如果字符串长小于m,则左补空格;否则,按字符串实际长度输出。28《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符3)%-ms:指定对齐方式为左对齐(默认的对齐方式为右对齐)。在m列范围内,字符串向左靠,右补空格。4)%m.ns:指定长度与输出字符数。输出占m列,只取待输出字符串中左端n个字符。这n个字符向右靠,左补空格。5)%-m.ns:指定对齐方式为左对齐,并指定长度与输出字符数。输出占m列,只取待输出字符串中左端n个字符,这n个字符向左靠,右补空格。29《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符注意:如果n>m,则m自动取n值(m=n),即保证n个字符正常输出。例如:

printf("%3s,%7.2s,%.4s,%-5.3s\n","CHINA","CHINA","CHINA","CHINA");运行结果:CHINA,□□□□□CH,CHIN,CHI□□注意:%.4s中只给出了n,没给m,自动使m=n=4。30《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符(7)格式字符f:以小数形式输出实数。1)%f:不指定输出宽度。整数部分全部输出,小数部分占6位。如果输出双精度实数,使用%lf。注意:输出的数字并非全部是有效数字。单、双精度实数的有效数字一般分别为7、16位。31《C语言程序设计》第3章语句与输入输出3.2.1printf()函数【例3.2】输出函数的应用。32《C语言程序设计》第3章语句与输入输出33源程序:#include<stdio.h>intmain(){ floatx,y; doublea,b; x=123456.123; y=654321.321; a=1234401190110.123456789; b=7531031008655.23456321; printf("%f\n",x+y); printf("%lf\n",a+b); return0;}在TC环境下的运行结果:《C语言程序设计》第3章语句与输入输出777777.4375008765432198765.3574003.2.1printf()函数【例3.2】输出函数的应用。程序分析:由于单精度数前7位有效、双精度数前16位有效,所以上述结果中超出有效位数的小数部分均存在无效数字,如.437500中的37500和.357400中的400是无意义的。34《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符(7)格式字符f:以小数形式输出实数。2)%m.nf:指定输出长度和小数位数。输出总长度为m列(含1位小数点),小数点后保留n位小数。当数据位数小于m时,左补空格。当数据位数大于m时,整数部分按实际长度输出,小数部分按指定位数即n位输出。如果没有指定小数部分位数n时,则小数部分默认为6位。35《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符(7)格式字符f:以小数形式输出实数。3)%-m.nf:指定对齐方式为左对齐,并指定输出长度和小数位数。例如:

floatf=123.456;printf("%f,%11f,%9.2f,%-9.2f,%.2f\n",f,f,f,f,f);运行结果:123.456001,□123.456001,□□□123.46,123.46□□□,123.4636《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符(8)格式字符e:以指数形式输出实数。按“%e”格式输出时,系统自动指定小数位数为6位,指数部分为5位(如e+002),数值按规范化指数形式输出(即小数点前有且只有1位非零数字)。因此“%e”输出正实数时,总位数为13位(含1位小数点),输出负实数时,总位数为14位(多出1位符号位)。37《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符(8)格式字符e:以指数形式输出实数。也可以按“%m.ne”或“%-m.ne”格式输出,m用以控制显示数值的宽度、n用于控制小数点后面的位数、-用以控制对齐方式。例如:

floatf=123.96;printf("%15e,%10.2e,%-10.2e,%.1e",f,f,f,f);运行结果:

□□1.239600e+002,□1.24e+002,1.24e+002□,1.2e+00238《C语言程序设计》第3章语句与输入输出3.2.1printf()函数2.格式字符(9)格式字符g:选择“小数形式”和“指数形式”中位数较少的一种形式输出实数(不输出无意义的0)。此格式较少使用。例如:floatf=123.468;printf("%f,%e,%g",f,f,f);

运行结果:123.468002,1.234680e+002,123.468

从结果中可以看出“%g”选择了“%f”格式,且取消了末尾的无意义的002。39《C语言程序设计》第3章语句与输入输出《C语言程序设计》第3章语句与输入输出40格式字符说明d,i以带符号的十进制形式输出整数(正数不输出符号)。u以无符号的十进制形式输出整数。O以无符号的八进制形式输出整数(不输出前导符0)。x,X以无符号的十六进制形式输出整数(不输出前导符0x),用x则输出十六进制数a~f时以小写形式输出,用X时,则以大写形式输出。c以字符形式输出单个字符。s输出字符串。f以小数形式输出单、双精度实数,隐含输出6位小数。e,E以规范化指数形式输出单、双精度实数。用e时指数以“e”表示(如1.23e+002),用E时指数以“E”表示(如1.23E+002)。g,G选用%f或%e格式中输出宽度较短的一种,不输出无意义的0。用G时,若以指数形式输出,则指数以大写表示。表3-1printf()函数的格式字符注意:在格式说明中,在%和上述格式字符间可以插入以下几种附加的格式修饰符,如表3-2所示。《C语言程序设计》第3章语句与输入输出41字符说明字母l输出长整型数据(%ld,%lu,%lo,%lx)或double型数据(%lf、%le)。m(一个正整数)指定输出数据的最小宽度。当实际数据宽度>m时,以实际宽度为准。n(一个正整数)对实数,表示输出n位小数;对字符串,表示截取的字符个数。-输出的数字或字符在域内向左靠。+输出的有符号数无论正、负,都带上符号输出(“+”号或“-”号)。0当域宽m>实际数据长度时,不足数位以0补足。表3-2printf()函数的格式修饰符注意:修饰符可以多个一起使用。例如:printf("%+08d\n",2346);运行结果:+0002346从结果中可以看出,三个修饰符“+、0、8(域宽)”一起使用,使输出数据带有+号,且总宽度为8,不足数位补0。3.2.2scanf()函数scanf()函数称为格式输入函数,其作用是按用户指定的格式从键盘输入数据到指定的变量之中。它是一个标准库函数,它的函数原型在头文件“stdio.h”中。42《C语言程序设计》第3章语句与输入输出3.2.2scanf()函数1.scanf()函数的调用形式(1)格式控制:是由""括起来的字符串,由“格式说明”和“普通字符”两部分组成。用于控制输入数据的类型、个数、间隔符等。1)格式说明:以“%”字符开始,由%及格式字符共同组成。其是说明按指定格式进行数据输入。例如:“%d”,“%f”等。2)普通字符:格式字符以外的字符为普通字符,必须按原样输入。43《C语言程序设计》第3章语句与输入输出3.2.2scanf()函数1.scanf()函数的调用形式例如:inta;scanf("a=%d",&a);

“scanf("a=%d",&a);”语句中,“a=%d”为格式控制,其中的“a=”为普通字符,在从键盘输入数据时必须原样输入。44《C语言程序设计》第3章语句与输入输出3.2.2scanf()函数1.scanf()函数的调用形式(2)地址表列:由若干个地址组成的表列,可以是变量的地址,或字符数组的首地址等。例如:inta,b,c;scanf("%d%d%d",&a,&b,&c);“scanf(”%d%d%d“,&a,&b,&c);”语句中,“&”为取地址运算符,“&a”是变量a在内存中的地址,该地址将作为从键盘输入数据存放的内存地址。45《C语言程序设计》第3章语句与输入输出3.2.2scanf()函数1.scanf()函数的调用形式注意:输入的数据一般以空格进行分隔,也可以用回车键(Enter、↙)或制表键(跳格键、Tab)。例如,对于“scanf("%d%d%d",&a,&b,&c);”语句,以下三种输入方式均是正确的。(1)345↙(2)3↙45↙(3)3(按tab键)4↙5↙46《C语言程序设计》第3章语句与输入输出3.2.2scanf()函数1.scanf()函数的调用形式注意:输入数据时,不能加入多余的普通字符。例如,对于“scanf("%d%d%d",&a,&b,&c);”来说,“3,4,5↙”输入方式是不正确的。47《C语言程序设计》第3章语句与输入输出3.2.2scanf()函数2.格式说明以%开头,以一个格式字符为结束,中间可以插入格式修饰符,如l、h、*等。格式字符如表3-3所示,格式修饰符如表3-4所示。48《C语言程序设计》第3章语句与输入输出《C语言程序设计》第3章语句与输入输出49格式字符说明d,i用来输入有符号的十进制整数。u用来输入无符号的十进制整数。o用来输入无符号的八进制整数。x,X用来输入无符号的十六进制整数(大小写作用相同)。c用来输入单个字符。s用来输入字符串。将字符串送到一个字符数组中,在输入时以非空格字符开始,以第一个空格字符结束。字符串末尾自动添加‘\0’作为字符串结束标志。f用来输入实数,可以用小数形式或指数形式输入。e,E,g,G与f作用相同,e、f、g可以互相替换(大小写作用相同)。表3-3scanf()函数格式字符《C语言程序设计》第3章语句与输入输出50字符说明l用于输入长整型数据(%ld、%lo、%lx、%lu)或double型数据(%lf、%le)。h用于输入短整型数据(%hd,%ho,%hx)。域宽指定输入数据所占宽度(列数),域宽应为正整数。*表示本输入项在读入后不赋给相应的变量。表3-4scanf()函数的格式修饰字符3.2.2scanf()函数格式修饰字符的说明(1)指定域宽输入数据时,系统自动按指定宽度截取所需数据。例如:inta,b;scanf("%3d%3u",&a,&b);输入“123456↙”,则123赋值给a,456赋值给b。51《C语言程序设计》第3章语句与输入输出3.2.2scanf()函数格式修饰字符的说明(2)如果使用禁止赋值符“*”,表示跳过它指定的列数。例如:

inta,b;scanf("%2d%*3d%2d",&a,&b);输入:“123456789↙”,则12赋值给a;%*3d表示读入3位整数但不赋给任何变量,即跳过345不用;67赋值给b。52《C语言程序设计》第3章语句与输入输出3.2.2scanf()函数格式修饰字符的说明(3)输入实数时不要指定精度。例如:“scanf("%7.2f",&a);”是错误的。(4)输入字符串时用“%s”,以空格符或回车键作为输入结束的标志。53《C语言程序设计》第3章语句与输入输出3.2.2scanf()函数3.使用scanf()函数时应注意的问题(1)“地址列表”中的变量名前必须要有&符号(取地址运算符)。例如:“scanf(”%d,%f“,a,f);”中变量a,f前未加&,运行时会出现错误。54《C语言程序设计》第3章语句与输入输出3.2.2scanf()函数3.使用scanf()函数时应注意的问题(2)如果“格式控制”字符串中除了格式说明以外,还有其他字符,则在输入数据时应输入与这些字符相同的字符。例如:inta,b;scanf("%d,%d",&a,&b);正确的输入:“3,4↙”。55《C语言程序设计》第3章语句与输入输出3.2.2scanf()函数3.使用scanf()函数时应注意的问题(3)用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入。例如:scanf("%c%c%c",&c1,&c2,&c3);输入:abc↙分析:字符‘a’赋值给c1,‘’(空格字符)赋值给c2,字符‘b’赋值给c3。如果希望变量c1、c2、c3的值分别为‘a’、‘b’、‘c’,则输入应该为“abc↙”,这是因为%c只能接收一个字符,所以‘a’、‘b’、‘c’之间无需加空格进行分隔。56《C语言程序设计》第3章语句与输入输出3.2.2scanf()函数3.使用scanf()函数时应注意的问题(4)在输入数据时,遇到以下情况则认为一个数据输入结束:1)遇到空格键、回车键、制表键。2)按指定的宽度结束,如“%3d”,只取3列。3)遇到非法输入。57《C语言程序设计》第3章语句与输入输出3.2.2scanf()函数例如:

inta;charb;floatc;scanf("%d%c%f",&a,&b,&c);printf("%d%c%f\n",a,b,c);输入:1234a123O.26↙运行结果:1234a123.000000分析:在输入变量a的值时,字符'a'为非法字符,因此遇到'a'时,变量a的输入会自动结束。同理,输入变量c的值时,123后的字符'O'为非法输入,变量c的输入会自动结束。58《C语言程序设计》第3章语句与输入输出3.2.3getchar()函数与putchar()函数getchar()函数与putchar()函数是标准库函数,在使用时程序前面应包含预编译命令“#include<stdio.h>”。59《C语言程序设计》第3章语句与输入输出3.2.3getchar()函数与putchar()函数1.getchar()函数(字符输入函数)getchar()函数调用形式如下:

变量=getchar()函数没有参数。功能:从标准输入设备(一般为键盘)输入一个

温馨提示

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

评论

0/150

提交评论