版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章数据输出与输入第一页,共三十八页,2022年,8月28日2.1C语言的基本语句一个实际的C程序是一系列语句的集合,每一条语句都用来完成一定的操作任务,C程序的每一条语句都要有分号结束,但变量声明部分不算严格意义上的C语句。main(){inta,b;a=2;b=++a;printf(“%d,%d\n”,a,b);}严格说来,应不称为语句。C语句分为以下几类:(1)控制语句(2)函数调用语句(3)表达式语句(4)空语句(5)复合语句第二页,共三十八页,2022年,8月28日2.1格式化输出数据的“输入”和“输出”是相对于计算机主机而言的。C语言本身不提供输入输出语句,输入输出操作是通过调用库函数来实现的,例如:printf和scanf就是c语言中用于实现数据输入、输出的库函数之一。因为c语言的输入输出库函数都位于一个名为stdio.h的头文件中,所以,每一个c语言程序的开始都要用下面的编译预处理命令将该头文件包括到用户编辑的文件中去。
#include“stdio.h”或#include<stdio.h>
第三页,共三十八页,2022年,8月28日格式化输出函数printf功能:向显示屏输出数据。语法:printf(格式控制,输出列表);例如:printf(“%d,%d”,x,y);2.1格式化输出第四页,共三十八页,2022年,8月28日Printf函数说明:一、格式控制部分是用双引号括起来的字符串,用于描述输出时的格式要求,其中包含两种信息:(1)普通字符和转义字符常量,普通字符原样输出,转义字符按所表示的字符含义输出;(2)格式说明:如%d,%c等形式的字符串,指定输出表列中相应的变量或表达式的值的输出形式。见P34表2-1例如:若已知整型变量a的值为2,整型变量b的值为3,程序中有输出语句:printf(“a=%d,b=%d”,a,b);输出结果为()。格式说明,规范数据说明信息,原样输出a=2,b=3第五页,共三十八页,2022年,8月28日格式说明对应的输出数据格式格式说明输出数据格式%d或%i输出有符号的十进制整型数%f输出精度或双精度且小数点后有6位数%c输出一个字符%o输出八进制无符号整型数%x或%X输出十六进制无符号整型数%u输出无符号十进制整数%c或%E不常用第六页,共三十八页,2022年,8月28日Printf函数举例例3若有以下程序段intm=32767,n=032767;Printf(“%d,%o\n”,m,n);执行后输出的结果是:32767,32767例4若有以下程序段intm=0xabc,,n=0xabc;m-=n;Printf(“%X\n”,m);执行后输出的结果是:0第七页,共三十八页,2022年,8月28日Printf函数说明:二、输出数据列表包括需要输出的一些数据。各个数据间用逗号分隔开。输出数据的个数与输出控制中的格式说明个数相等,并且在顺序上要一一对应且类型匹配。例如:printf(“%d,%f”,3.89,6);三、在输出控制中,格式说明个数应与输出项的个数相同。如果说明个数少于输出项的个数,多余的输出项则不输出;如果格式说明的个数多于输出项个数,则对多余的格式说明输出不定值。第八页,共三十八页,2022年,8月28日例1有以下程序:Main(){inti=2000;floatj=2.71828;printf(“i=%d,j=%f,j*10=%f”,i,j,j*10);}结果是:i=2000,j=2.718280,j*10=27.182800Printf函数举例:例2有以下程序Main(){inta=666,b=888;printf(“%d\n”,a,b);}结果是:666第九页,共三十八页,2022年,8月28日Printf函数举例:例3:若有程序段intm=32767,n=032767;printf(“%d,%o\n”,m,n);执行后输出结果是:32767,32767例4:若有程序段intm=0xabc,n=0xabc;m-=n,printf(“%X\n”,m);执行后输出结果是:0例5:若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,完整的输出语句是
printf(“a=%d,b=%d”,a,b);函数说明二第十页,共三十八页,2022年,8月28日Printf函数说明:(1)可以在%和格式字符间加入一个整数来控制输出数据宽度,如果整数指定宽度大于实际输出数据宽度,数据输出采用右对齐方式,左边自动补空格;反之,则以实际宽度输出。2.1格式化输出输出语句输出结果Printf(“%d”,254);254Printf(“%2d”,254);254Printf(“%4d”,254);254Printf(“%f”,1.25);1.250000Printf(“%10f”,1.25);1.250000第十一页,共三十八页,2022年,8月28日(2)当在%和格式字符f之间加入“整数1.整数2”来控制输出数据的格式时,“整数1”用于指定输出数据占的总宽度,“整数2”用于指定输出实数的小数部分的位数。2.1格式化输出输出语句输出结果Printf(“%4.4f”,1.25);1.2500Printf(“%7.4f”,1.25);1.2500Printf(“%2.0f”,1.25);1第十二页,共三十八页,2022年,8月28日(3)如果需要在输出的八进制数前添加0,或在输出的十六进制前添加0x,可在%号和格式字符o和x之间插入一个#号。2.1格式化输出输出语句输出结果Printf(“%o”,254);376Printf(“%#o”,254);0376Printf(“%#x”,254);0xfe第十三页,共三十八页,2022年,8月28日Printf函数举例:例如:main(){inta,b;clrscr();/*清屏*/a=123,b=12345;printf(“%d,%2d,%d,%10d\n”,a,a,b,b);}结果:123,123,12345,12345第十四页,共三十八页,2022年,8月28日字符输出函数putchar语法:putchar(字符常量或字符变量);功能:将括号内的字符常量或字符变量的值显示在屏幕上。如:#include<stdio.h>main(){charc;c=‘A’;putchar(‘c’);putchar(‘\n’);putchar(c);}
cA2.2字符数据的输出第十五页,共三十八页,2022年,8月28日格式化输入函数scanf用于在程序运行时,由用户自行输入数值送入相应变量保存。语法:scanf(格式控制,地址表列);说明:格式控制含义与printf中的相同,地址表列一般是由若干个变量的地址组成的。2.3格式化输入例:#definePI3.14159Main(){floatr,area;scanf(“%f”,&r);area=PI*r*r;Printf(“area=%f”,area);}“&”是求地址运算符,&r表示取变量r的地址。第十六页,共三十八页,2022年,8月28日2.3格式化输入格式说明输入数据格式格式说明输入数据格式%d输入十进制整型数%x输入十六进制整型数%c输入一个字符%u输入无符号的十进制整数%o输入八进制整型数%f输入单精度或双精度数Scanf函数中格式说明说明:(1)当从键盘输入多个数值数据时,输入数值数据之间用分隔符(包括空格符、制表符和回车符;但不包括逗号)隔开。且格式说明类型与输入项类型一一对应匹配,个数相同。如:intx,y,z;scanf(“%d%d%d”,&x,&y,&z);则键盘输入格式:10<分隔符>20<分隔符>30<回车>例如下输入语句intx,y,z;scanf(“%d%d”,&x,&y,&z);如输入形式为10<分隔符>20<分隔符>30<回车>则只能对x和y变量分别输入10和20.第十七页,共三十八页,2022年,8月28日说明:(2)与printf相似,在scanf函数中的格式字符前可以用一个整数指定输入数据所占的宽度,但对实数不能指定小数的位数。例如:如下语句inta,b;scanf(“%3d%2d”,&a,&b);printf(“%d,%d”,a,b);输入数据123456789<回车>,输出结果为123,45(3)路过输入数据的方法。可以在格式字符与%之间加入一个“*”使输入过程路过输入的数据。如:intx,y,z;scanf(“%d,%d,%d”,&x,&y,&z);如下输入:10<分隔符>20<分隔符>30<分隔符>40<回车>则将会10赋给变量x,跳过20,30赋给变量y,40赋给变量z。2.3格式化输入第十八页,共三十八页,2022年,8月28日(4)、若在scanf函数的输入控制串中含有其他的字符,则在输入时要求一一对应的位置原样输入这些字符。如:intx,y,z;scanf(“%d,%d,%d”,&x,&y,&z);如下输入:10<分隔符>20<分隔符>30<分隔符>40<回车>则将会10赋给变量x,跳过20,30赋给变量y,40赋给变量z。2.3格式化输入例:执行以下程序时输入1234567<CR>,则输出结果是#include<stdio.h>Main(){inta=1,b;scanf(“%2d%2d”,&a,&b);printf(“%d%d\n”,a,b);}1234第十九页,共三十八页,2022年,8月28日小结:1、scanf的输入分隔符不包含逗号,因此在使用键盘输入数据时,不能以逗号作为分隔符。如果需要以逗号作分隔符,则格式为:scanf(“%d,%d”,&a,&b);则输入为10,20<回车>2、一般情况下,scanf的格式控制字符串中不要包含其他非格式控制符,否则往往容易混淆。
3、使用scanf时,如果数据输入未能完成,则程序一直等待键盘输入,此时用户应该完成数据输入。4、使用scanf给变量赋值和直接使用赋值语句给变量赋值,都能使变量的值发生改变,但二者有本质区别。2.3格式化输入第二十页,共三十八页,2022年,8月28日字符输入函数getchar语法:getchar();注意:()内为空功能:要求用户在程序执行时从键盘上输入一个字符,输入的字符先放在缓冲区中,等待用户按回车键确认,用户敲入回车键后,该函数才真正获得输入的字符,同时将输入的字符显示在屏幕上。使用时,一般用一个字符变量接收getchar()获得的字符。例:#include<stdio.h>main(){charc;c=getchar();putchar(c);}例:#include<stdio.h>main(){putchar(getchar());}2.4格式化字符输入第二十一页,共三十八页,2022年,8月28日说明:c语言程序执行时,首先会找到main函数,然后按顺序执行main函数内部的每条语句,当遇到scanf语句时,程序会暂停,等待用户输入数据后按回车,才继续向下运行,运行到main函数的最后一条语句后,运行结束,可以看结果了。用户输入时应按格式控制部分要求的格式输入,否则会出错。(1)格式控制部分若有普通字符,按原样输入。(注:scanf函数的格式控制部分中,不应该出现转义字符。)(2)格式控制部分若有格式说明符,如%d,%f等,要求输入相应格式的数据。第二十二页,共三十八页,2022年,8月28日思考:像上例的scanf(“%d%d”,&a,&b);语句,格式说明部分只要求输入两个十进制整数,并且两个%d相连,之间没有任何间隔符,那么在输入的时候是不是直接输入两个相连的整数呢?第二十三页,共三十八页,2022年,8月28日2.5顺序结构程序设计举例例1:输入一个华氏温度,要求输出对应的摄氏温度(保留两位小数),转换公式为c=5/9(f-32)。分析问题,找出求解问题的方法和步骤(简称问题求解的算法)。该问题的求解步骤很简单,首先要从键盘输入一个华氏温度,存储在一个变量里,供以后做华氏温度向摄氏温度的转换用;接着,使用转换公式,将转换后的摄氏温度值保存在另一变量中,等待输出;然后输出该摄氏温度值。第二十四页,共三十八页,2022年,8月28日用c语言语句描述上面的算法,写成完整的程序。main(){floatf,c;scanf(“%f”,&f);c=5.0/9*(f-32);printf(“%.2f\n”,c);}书写程序时,注意:(1)首先,应考虑程序中要使用几个变量,每个变量的含义及类型(2)变量应在有了确定值后,才可以使用(3)数学表达式到c语言表达式的转换
2.5顺序结构程序设计举例第二十五页,共三十八页,2022年,8月28日例2:输入两个整数,分别存放在变量a和b中,要求将这两个变量的值互换,输出它们的值。分析:完成该问题的算法可分为以下几步:(1)输入两个数,分别存入a和b中(2)将a,b变量的值相互交换(3)输出交换后的a和b的值问题是:第(2)步如何具体实现?2.5顺序结构程序设计举例第二十六页,共三十八页,2022年,8月28日main(){inta,b,c;scanf(“%d,%d”,&a,&b);printf(“first:a=%d,b=%d\n”,a,b);c=a;a=b;b=c;printf(“later:a=%d,b=%d\n”,a,b);}2.5顺序结构程序设计举例第二十七页,共三十八页,2022年,8月28日例3:编写c程序,按下列公式计算并输出s的值,其中,a和b的值由键盘输入。s=2ab/(a+b)2分析:求解该问题的算法分为以下几步(1)输入a和b的值(2)由公式计算出s的值(3)输出s2.5顺序结构程序设计举例第二十八页,共三十八页,2022年,8月28日main(){floata,b,s;scanf(“%f,%f”,&a,&b);s=2*a*b/((a+b)*(a+b));printf(“s=%f\n”,s);}2.5顺序结构程序设计举例第二十九页,共三十八页,2022年,8月28日若程序如下,则不能实现题意要求的功能。为什么?main(){inta,b;floats;scanf(“%d,%d”,&a,&b);s=2*a*b/((a+b)*(a+b));printf(“s=%f\n”,s);}2.5顺序结构程序设计举例第三十页,共三十八页,2022年,8月28日思考:如果要求对上面的程序作修改,但不允许改变变量的类型,使程序仍能实现题意要求的功能,应该怎么办?第三十一页,共三十八页,2022年,8月28日习题1、以下程序运行时若从键盘输入:102030<回车>。输出结果是#include“stdio.h”Main(){inti=0,j=0,k=0;Scanf(“%d%*d%d”,&i,&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游客服人员聘用合同
- 城中村租赁合同:服装店租赁细则
- 广告创意策划师聘用合同
- 通讯设备销售代表招聘合同
- 农庄租赁合同:农业种植基地
- 商业综合体自来水安装协议
- 铝合金风力发电设备生产合同
- 可持续旅游合同管理办法
- 电信工程脚手架施工合同范本
- 珠宝设计代理协议
- 2023-2024学年江苏省昆山市小学数学五年级上册期末模考试题
- 江苏市政工程计价表定额计算规则
- 电缆桥架施工方案
- TFSRS 2.4-2019“抚松人参”加工技术规程 第4部分:生晒参片
- GB/T 18742.2-2017冷热水用聚丙烯管道系统第2部分:管材
- GB 22128-2019报废机动车回收拆解企业技术规范
- 复读生励志主题班会
- 2023年复旦大学博士研究生科研计划书-模板
- 胶囊内镜的临床与应用
- 《不刷牙的小巨人》演讲比赛PPT
- 2020版《办公建筑设计标准》
评论
0/150
提交评论