_顺序程序设计_第1页
_顺序程序设计_第2页
_顺序程序设计_第3页
_顺序程序设计_第4页
_顺序程序设计_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

1、第4章l 主要内容主要内容o1 C1 C语言的语句语言的语句o2 2 赋值语句赋值语句o3 3 数据输入输出的概念及在数据输入输出的概念及在c c语言中的实现语言中的实现o4 4 字符数据的输入输出字符数据的输入输出o5 5 格式输入与输出格式输入与输出o6 6 顺序结构程序设计举例顺序结构程序设计举例4.1 C语言的语句oC语句用来向计算机系统发出操作指令。o一个语句经编译后产生若干条机器指令,这些指令指挥计算机完成相应的动作,因此C语句用来完成一定的操作任务。o声明部分的内容不应称为语句。例如:int a;o语句:由分号结束,分号是语句的一部分。oC语句分为:4类类空语句表达式语句复合语句

2、控制语句4.1.14.1.1空语句。即只有一个分号的语句,它什么也不做空语句。即只有一个分号的语句,它什么也不做 o用来做流程的转向点用来做流程的转向点(流程从程序其他地方转到此语句处流程从程序其他地方转到此语句处)o用来作为循环语句中的循环体用来作为循环语句中的循环体(循环体是空语句表示循环循环体是空语句表示循环体什么也不做。具有延时的作用体什么也不做。具有延时的作用)4.1.24.1.2表达式语句。由一个表达式加一个分号构成表达式语句。由一个表达式加一个分号构成一个语句必须在最后出现分号,分号是语句中不可缺少的一个语句必须在最后出现分号,分号是语句中不可缺少的组成部分,而不是两个语句间的分

3、隔符号。组成部分,而不是两个语句间的分隔符号。10+5.0; 12.3+a;+i;c=c+2;s=sqrt(a+b+c);printf(“hello!”);赋值语句函数调用语句4.1.34.1.3复合语句。用一对复合语句。用一对括起来的语句括起来的语句 z=x+y; t=z/100; printf(“%f”,t); 注意:复合语句中最后一个语句中最后的分号不能忽略不写。注意:复合语句中最后一个语句中最后的分号不能忽略不写。C C语言允许一行写几个语句,也允许一个语句拆开写在几行上语言允许一行写几个语句,也允许一个语句拆开写在几行上(1) if (ay) z=x; else z=y; 其中,xy

4、是一个“判别条件”,z=x;和z=y;是语句,内嵌在ifelse语句中。 4.2 C语言中的输入输出 程序程序是数据数据的处理器: 它接收输入数据,对数据进行处理,再将得到数据输出。输出输出:从计算机向外部输出设备(显示器,打印机)输出数据输入输入:从输入设备(键盘,鼠标,扫描仪)向计算机输入数据. 由于各种设备差别很大,C缓冲文件系统把每种设备都转换成称为流(stream)的逻辑设备。 流给程序员提供了与设备无关的一致界面,因此能够用于写入磁盘文件的函数也能用于写入显示器终端。 本章讨论标准的输入和输出函数。也就是认为输入输出函数是从键盘输入,向显示屏输出。 4.2.2 C语言中标准输入输出

5、C语言函数库中有一批“标准输入输出函数标准输入输出函数”,例如: 字符输入函数: getchar 字符输出函数:putchar 格式输入函数: scanf 格式输出函数: printf 字符串输入函数: gets 字符串输出函数:puts使用这些函数时,应在程序的开头处写下预编译命令: # include “stdio.h” 或或 # include 4.3 字符数据的输入输出4.3.1 字符输出函数 putchar( )p函数作用:向终端输出一个字符p一般形式:putchar(c) 输出变量c的值 C可以是字符型变量或整型变量例例1 输出单个字符。输出单个字符。#includevoid ma

6、in() char a,b,c; ch1=:;ch2=);c=*; putchar(ch1);putchar(ch2);putchar(ch3);putchar(n); 运行结果::)*putchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);运行结果::)*o也可以输出其他转义字符,例如: putchar(101); (输出字符A) putchar(); (输出单引号字符) putchar(015) (输出回车,不换行,使输出的当前位置移到本行开头) 3.4 字符数据的输入输出(续)3.4.2 字符输入函数p函数作用:

7、从终端(或系统隐含指定的输入设备)输入一个字符。p没有输入参数,一般形式:getchar()p函数值:从输入设备得到的字符。例例2 输入单个字符。输入单个字符。#includevoid main() char c; c=getchar(); putchar(c); putchar(n);运行程序:运行程序:从键盘输入字符从键盘输入字符* *按按EnterEnter键键屏幕上将显示输出的字符屏幕上将显示输出的字符* * * *也可改写为:putchar(getchar();4.4 格式化输入与输出函数4.4.1格式化输出函数 printf( )printf( )o函数作用:向终端(或系统隐含指定

8、的输出设备)输出函数作用:向终端(或系统隐含指定的输出设备)输出若干个任意类型若干个任意类型的数据。的数据。o一般格式:一般格式:printfprintf(格式控制字符串,数据列表)(格式控制字符串,数据列表)格式控制字符串它包括两种信息:格式控制字符串它包括两种信息:l 格式说明:由格式说明:由“”和格式字符组成,例如和格式字符组成,例如d d、f f等,等, 作用是将输出的数据转换为指定的格式输出。作用是将输出的数据转换为指定的格式输出。l 显示字符:按原样输出。显示字符:按原样输出。“数据列表数据列表”是需要输出的一些数据,可以省略,也是需要输出的一些数据,可以省略,也可以是表达式。可以

9、是表达式。x=90; sum=19.9;pirntf(“nWelcome to Gamen”);printf(“nThe answer is %dn”,x);printf(“a= %d sum=$%5.2f n”,30,sum) ;则输出到显示屏上的内容是则输出到显示屏上的内容是:Welcome to GameThe answer is 90a= 30 sum= $19.904.4.1格式化输出函数 printf( )printf( )例如:o printf(“a=%d b=%d”,a,b); 如果a、b的值分别为3、4,则输出为:o a=3 b=4格式说明格式说明数据列表数据列表显示字符显示

10、字符逗号分隔逗号分隔 o格式说明符格式说明符包含一个百分号(%)、可选格式修饰符和一个格式码。 o%和格式码是必选的 1.格式码%c输出字符%s输出字符串%d带符号10进制形式输出整数%i带符号10进制形式输出整数%u以无符号10进制形式输出整数%e科学表示法。(小写e表示指数部分)%E科学表示法(大写E表示指数部分)%f10进制浮点数,隐含输出六位小数1.格式码(续)%g选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0%G选用%f或%E格式中输出宽度较短的一种格式,不输出无意义的0。%o以8进制无符号形式输出整数%x以16进制无符号形式输出整数(不输出前导字符0 x) 。16进制

11、数的af以小写形式输出。%X以16进制无符号形式输出整数(不输出前导字符0 x)。16进制数的AF以大写形式输出。%p显示地址%显示百分号%打印字符和字符串打印字符和字符串例如, char c=c; int i=97; printf(“%c,%dn”,c,c); printf(“%c,%dn”,i,i);显示: c, 99a, 972. 打印数值打印数值%dint a=123,b=-213;printf(“%d,%d”,a,b);显示:123,-213%uint a=123,b=-1; unsigned int c=65534;printf(“%d,%d,%dn”,a,b,c);printf(

12、“%u,%u,%u”,a,b,c);显示:123,-1,-2123,65535,655342. 打印数值打印数值%ffloat a=-323.4563; double b=4523000000123.45251413; printf(“%f,%f”,a,b);显示:-323.456299,4523000000123.4521502. 打印数值打印数值%e 或或 %E : 科学表示法显示的一般格式是:科学表示法显示的一般格式是: x.dddddE+/-yyfloat a=-2233.456; b=0.003424;printf(“%e,%E”,a,b);显示: -2.23346e+03,3.42

13、400E-03注意小数位数的四舍五入。同时希望大写显示E时用%E,否则用%e格式。2. 打印数值打印数值%g 或或 %G : 适当选用适当选用%f或或%e(或(或%E),选择规则是产生最短输出),选择规则是产生最短输出者优先。者优先。 float f=234.453printf(“%f,%E,%g“,f,f,f);显示: 234.453003,2.34453E+02,234.4532. 打印数值打印数值%o与与%x(%X ): 以以8进制进制16进制整数形式输出。输出的数值不带符号进制整数形式输出。输出的数值不带符号 。int a=-1; printf(“%x,%X,%o,%d”,a,a,a,

14、a); 显示:ffff,FFFF,177777,-13.显示地址显示地址%p 令令printf()以主机的地址格式显示机器地址。以主机的地址格式显示机器地址。 #includefloat sum;int main() printf(“%p”,&sum); 2.输出格式修饰符输出格式修饰符标志标志 最小输出宽度修饰符 double val=10.30421;printf(“%fn”,val) ;printf(“%+12fn ” ,val) ;printf(“%-012fn”,val);printf(“%012fn”,val);显示: 10.304210 +10.304210 10.304

15、210 00010.304210 printf(“%.4fn”,124.3523423);printf(“%3.5dn”,3000);printf(“%8.10s,%7.2s,%-.4s”, “IlikeC”, “IlikeC”, “IlikeC”);printf(“|%-+8.2f| |%0+8.2f|”,1.2,2.3);显示: 124.352303000 IlikeC, Il, Ilik|+1.20 | | 00002.30|2.输出格式修饰符输出格式修饰符精度说明符精度说明符 大小修饰符大小修饰符 大小修饰符大小修饰符 2.输出格式修饰符输出格式修饰符 %ld: 输出长整型数据。 例:

16、 long a=135790;/* 定义a为长整型变量*/ printf(“%ld”,a);2.输出格式修饰符输出格式修饰符修饰符修饰符*和和# 例如, printf(“%#fn”,10.5); printf(“%x,%#xn”,10,10); printf(“%*.*f”,10,4,123.54);显示: 10.500000 a,0 xa 123.5400格式修饰符.n对实数,指定小数点后位数(四舍五入)对字符串,指定截取的字符个数修饰符功 能m输出数据域宽,数据长度m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-在d, o, x, u前,指定输出精度为long型在e, f,

17、 g前,指定输出精度为double型l说明:说明:o除了X,E,G外,其他格式字符必须用小写。o可以在printf函数中的“格式控制”字符串中包含转义字符,例如:“n”、“t”、“b”、“r”、“f”、“377”等。o想输出%,则应该在格式控制字符串中用连续两个%表示 例如:printf(“%f%”,1.0/3); 输出:0.333333%3 常见的输出错误常见的输出错误 long a=135790; /* 定义a为长整型变量*/printf(“%d”,a); 由于基本整型数据的表数范围为-3276832767。长整型数据应当用%ld格式输出。printf(“%d %d %dn”, 33,66

18、); 输出 33 66 0这个例子有三个转换规约,但只有两个数据。pirntf(“%d %dn”,33,66,99); 输出 33 66这个例子有两个转换规约但有三个数据,在这种情况下,printf将忽略第三个值。 float x=123.45;printf(“The answer is %dn”, x); 输出: The answer is 0这个格式规约(整型)不匹配数据类型(实型)的常见错误4.4 格式输入与输出(续)4.4.2格式输入函数 scanf( )o函数作用:按照变量在内存的地址将变量值存进去。o一般格式: scanf(格式控制字符串,地址表列)同同printfprintf函数

19、函数由若干个地址组成的表列,可以是变量的地址由若干个地址组成的表列,可以是变量的地址(&变量名变量名),或字符串的首地址或字符串的首地址例:例: 用用scanfscanf函数输入数据。函数输入数据。#includevoid main() int a,b,c; scanf(“%d%d%d”, &a, &b, &c); printf(“%d,%d,%dn”, a, b, c); 运行情况:运行情况:3 4 5 (3 4 5 (输入输入a,b,ca,b,c的值的值) )3 3,4 4,5 5 (输出(输出a,b,ca,b,c的值的值)& &是地址运算符

20、是地址运算符,scanf,scanf函数的作用函数的作用是:按照是:按照a a、b b、c c在内存的地址将在内存的地址将a a、b b、c c的值存进去。的值存进去。 “%d%d%d” “%d%d%d”表示按十进制整数形式输入表示按十进制整数形式输入3 3个数据。输入数据个数据。输入数据时,在两个数据之间以一个或多个空格间隔,也可以用时,在两个数据之间以一个或多个空格间隔,也可以用EnterEnter键键 、TabTab键。下面输入均为合法:键。下面输入均为合法:3 4 53 4 53 3 4 5 4 53(3(按下按下TabTab键键)4)4 5 5 用用“%d%d%d”%d%d%d”格式

21、输入数据时,不能用逗号作两个数据间的格式输入数据时,不能用逗号作两个数据间的分隔符。如下输入不合法:分隔符。如下输入不合法:3,4,53,4,5scanfscanf格式字符:格式字符:%d%d: : 用来输入带符号的十进制整数用来输入带符号的十进制整数%o%o: : 用来输入无符号的八进制整数用来输入无符号的八进制整数%x%x: : 用来输入无符号的十六进制整数用来输入无符号的十六进制整数( (大小写作用相同大小写作用相同) )%u%u: : 用来输入无符号的十进制整数用来输入无符号的十进制整数%c%c: : 用来输入单个字符用来输入单个字符%s%s: : 用来输入字符串,将字符串放入一个字符

22、数组中用来输入字符串,将字符串放入一个字符数组中%f%f 用来输入实数,可以用小数形式或指数形式输入用来输入实数,可以用小数形式或指数形式输入e,E,g,Ge,E,g,G 与与f f作用相同。作用相同。输入数值输入数值%d和%i读入10进制整数,%e、%f和%g以标准格式或科学表示法读入浮点数。%o和%x用于分别读入8进制和16进制数。 %u用于输入一个无符号整数 unsigned num;int num10,num8,num16;scanf(“%u%d%o%x”,&num,&num10,&num8,&num16);printf(“%u,%d ,%o ,%xn”

23、,num,num10,num8,num16);2.输入单个字符和字符串输入单个字符和字符串 使用%c,scanf()也可以像getchar()一样读入单个字符。有关字符串的输入可以用%s实现,这在第7章字符数组中介绍。 char c1,c2,c3;scanf(“%c%c%c”,&c1,&c2,&c3);若输入: a b c 则将字符a送给c1,空格字符 送给c2,字符b送给c3。 如果想将字符a、b、c分别赋给字符变量c1,c2,c3,正确的输入方法是: abc (字符间没有空格)scanfscanf的格式修饰字符:的格式修饰字符:l l 用于输入长整型数据用于输入长整

24、型数据( (可用可用%ld,%lo,%lx,%lu)%ld,%lo,%lx,%lu) 以及以及doubledouble型数据型数据( (用用%lf%lf或或%le)%le)h h 用户输入短整型数据用户输入短整型数据( (可用可用%hd,%ho,%hx)%hd,%ho,%hx)域宽域宽 指定输入数据所占列数指定输入数据所占列数, ,域宽应为正整数域宽应为正整数* * 表示本输入项在读入后不赋给相应的变量表示本输入项在读入后不赋给相应的变量格式修饰符格式修饰符(1)域宽)域宽域宽修饰符是一个整数,放在%与格式码之间,限制该域读入的最多字符数。例如,scanf(“%3d%2d%4d”,&s

25、sn1,&ssn2,&ssn3);若输入:46271419则系统自动将462赋给ssn1,71赋给ssn2,1419赋给ssn3。 格式修饰符格式修饰符(2)大小)大小读长整型长整型数时,应在格式转换码前加字母l;读短整数短整数时加h。l和h适用于与d、i、o、u和x 转换码一道使用。,例如, double f1; float f2 ;scanf(“%lf,%f”,&f1,&f2) 若写成scanf(“%f,%f”,&f1,&f2) 就错误错误了。 格式修饰符格式修饰符(3)赋值压缩标记)赋值压缩标记* 在域的转换码前加星号(*)时,使scanf

26、()读入该域但不向任何变量赋值。 例如,scanf(“%d%*c%d”,&x,&y);可以输入一个坐标值:10,20这时系统会将10赋值给x,%*c将使,读入后不向任何变量赋值,20赋值给y。当仅需要处理部分键入内容时,这种对赋值的压制特别有用。scanf输入转换码与输入转换码与printf输出转换码的不同输出转换码的不同 (1)在输入规约中没有小数位数的指定。如果包括小数位数将是错误的, scanf遇到小数位数会停止处理,输入流进入错误状态。scanf(“%7.2f”, sum); /*错误错误(2)输入格式中只有一个赋值压缩标志(*)。此标志告诉scanf对接下来的输入域只

27、读取不存储,即读取的数据将被丢弃。(3)宽度规约的不同。对输入格式是最大宽度,而不是最小宽度。 3空白符空白符空白符空白符是指空格(space)、制表符(tab)、垂直制表符、进纸符(formfeed)和新行。 scanf()跳过输入流中的一个或多个前导空白符 例如,int a,b,c; scanf(“%d%d%d”, &a, &b, &c); printf(“%d,%d,%dn”, a, b, c); 输入数据时,在两个数据之间以一个或多个空格间隔,也可以用Enter键 、Tab键。3 4 5 (输入a,b,c的值,之间用空格分隔)3 4 5 (输入a,b,c的值,之

28、间用多个空格分隔)3 (输入a,b,c的值,之间用换行符分隔) 4 5 3(按下Tab键)4 (输入a,b,c的值,之间用制表符分隔) 5 4非空白符非空白符格式控制串中的非空白符使scanf()读出并滤掉滤掉输入流中的匹配者 例例:输入的数据输入的数据 :212 3 23Z相应输入语句相应输入语句:scanf(“%d%d%d%c”,&a,&b,&c,&d);输入的数据输入的数据 :212 3 23 Z相应输入语句相应输入语句:scanf(“%d%d%d %c”,&a,&b,&c,&d);输入的数据输入的数据 :13/56 24/

29、69 相应输入语句相应输入语句:scanf(“%2d/%2d %2d/2d”,&num1,&den1,&num2,&den2);4非空白符非空白符格式控制串中的非空白符使scanf()读出并滤掉滤掉输入流中的匹配者 例例:输入的数据输入的数据 :3-16-2009 相应输入语句相应输入语句:scanf(“%d-%d-%d”,&month,&day,&year); 更好的方式更好的方式 :printf(“Enter mm-dd-yy”);scanf(“%d-%d-%d”,&a,&b,&c);5 使用使用scanf函数

30、时应注意的问题函数时应注意的问题 :scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。 scanf(“%d,%d”,a,b); 错误 scanf(“%d,%d”,&a,&b); 正确5 使用使用scanf函数时应注意的问题函数时应注意的问题 :(2)对于每个要读取的变量需要有转换规约与之对应,数目要相一致;例如:scanf(“%d%d%d”,&a,&b); /scanf读取前面读取前面2个值后,由于无法找到第个值后,由于无法找到第3个地址而停止个地址而停止。scanf(“%d%d”,&a,&b,&c);/scanf读取前读

31、取前2个值并忽略第个值并忽略第3个地址。个地址。 (3) 在输入数据时,遇以下情况时认为该数据结束。 遇空格,或按“回车”或“跳格”(Tab)键; 按指定的宽度结束,如“%3d”,只取列; 遇非法输入。例如:scanf(“%d%c%f”,&a,&b,&c);若输入123 a 123o.26 a b c由于疏忽将1230.26打成123o.26,由于123后面出现了字符o,就认为该数值数据到此结束,因此将123送给变量c。 4.5 顺序结构程序设计举例例1.:打印报表:编写程序打印如图4-3所示的报表样例。#include void main() /*Print caption */printf(tPart Number tQty On Hand);printf(tQty On OrdertPricen);/*P

温馨提示

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

评论

0/150

提交评论