版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
共
39页第1
页数据的输入和输出C语言程序设计第四章共
25页第2
页本章要点掌握C语言中输入输出数据的方法掌握各种格式的使用
共
25页第3
页
数据输入输出的概念输出:从计算机向显示器、打印机等外部设备输出数据。输入:从标准输入设备键盘、鼠标等向计算机输入数据。C语言不提供输入输出语句,输入输出操作是由C函数库中的函数实现。两个基本的输出(输入)函数:即:格式输出(输入)函数字符输出(输入)函数共
25页第4
页4.1.1格式输出函数函数的基本功能格式:printf(格式控制字符串,输出表列)功能:从标准输出设备上,按指定的格式输出对应的变量。printf(“a=%db=%d”,a,b);printf(...)4.1数据输出输出表列*使用时在程序开头用编译预处理命令#include”stdio.h”或:
#include<stdio.h>编译预处理头文件请详见附录E格式控制字符串共
25页第5
页[例]:程序输出演示
#include<stdio.h>main(){inta=3,b=4;printf(“a=%db=%d”,a,b);}运行结果:a=3b=4共
25页第6
页2.函数说明:(1)格式控制字符串由双引号括起来,由格式说明符和普通字符(即需要原样输出的字符)组成。printf(“a=%db=%d”,a,b)
(2)输出表列是需要输出的一些数据,可以是常量、变量或表达式。printf(“a=%db=%d”,a,b)(3)输出表列的类型必须与格式说明符在类型、个数和位置上一一对应。
inta,b;printf(“a=%d
b=%d”,a,b);格式说明符普通字符%d:
输出带符号的十进制整数%u:输出无符号整数%o:输出八进制无符号整数%x:输出十六进制无符号整数(小写)%X:输出十六进制无符号整数(大写)%f:以小数形式输出单、双精度实数%e:以指数形式输出单、双精度实数%g:自动选用%f和%e中输出宽度较小的一种格式%c:输出一个字符%s:输出字符串%%:输出百分号%基本格式说明符3.格式说明符的修饰可以在%和一般格式中间插入以下列表的格式修饰符,用于修饰输出格式。l修饰d,u,o,x格式符时,用于输出long型数据。输出的数字或字符左对齐,右边补空格.
(若省略,系统默认是右对齐)m
输出数据占m列字符。n输出数据占n位小数m.n输出数据占m列字符,n位小数。共
25页第9
页
(1)
%d格式符:
输出带符号的十进制整数。
%d
按整型数据的实际长度输出。
%mdm为指定的输出字段的宽度.若输出数据的位数大于m,则按实际位数输出。若输出数据的位数小于m,则左端补空格;
%ld
输出长整型数据.(在Vc++系统中%d和%ld没有区别)例:inta=1234;
printf(“%3d”,a);
printf(“%5d\n”,a);printf(“%-5d”,a);1234
1234实际左补空1234
左对齐,右补空共
25页第10
页以下程序运行后的输出结果是?main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d",x,y,z);}A)2,3,3B)2,3,2C)2,3,1D)2,2,1
共
25页第11
页(2)o格式符输出八进制无符号的整数。将内存单元中的各位的值(0或1)按八进制形式输出,输出的数值不带符号,将符号也作为八进制数的一部分输出。例如,-1在内存单元中(以补码形式存放)如下:inta=-1;-1:
printf(“%d,%o”,a,a);
输出Tc系统:1111111111111111VC++下-1,177777(3)
x格式符,以十六进制数无符号形式输出整数。(4)
u格式符,以十进制形式输出无符号型数据。
[例]#include<stdio.h>main(){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);}
输出Tc系统:a=-1,177777,ffff,65535b=-2,177776,fffe,65534VC++下共
25页第13
页(5)c格式符输出一个字符。
整数的值在33~126范围内,也可以用字符形式输出可显示字符。在输出前,将该整数转换成相应的ASCII字符;字符数据也可以用整数形式输出。[例]
#include<stdio.h>main(){charc='a';inti=97;printf("%c,%d\n",c,c);printf("%c,%d\n",i,i);}
输出:a,97a,97共
25页第14
页s格式符输出一个字符串。说明:若不指定字符宽度和对齐方式,则输出全部字符串.
例如:printf("%s","CHINA");
程序运行结果:CHINA
若指定宽度m,实际字符个数大于m,按实际宽度输出;如果实际字符个数小于m,字符右对齐,左边填空格。.n表示输出该字符串的前n个字符。例如:printf("s1=%s,s2=%3s,s3=%-5.2s,s4=%.3s\n","abcd","abcd","abcd","abcd");
程序运行结果:
s1=abcd,s2=abcd,s3=ab,s4=abc共
25页第15
页(7)f格式符以小数形式输出实数(包括单、双精度)。1)%f,不指定字段宽度,由系统自动指定,使整数部分全部输出,并输出6位小数(输出双精度数据,也是6位,但误差降低)。2)%m.nf,指定输出的数据共占m列,其中有n位小数.若数据长度小于m,则左端补空格。例:floatx=15.3,y=222.225111;printf(“%f,%6.2f\n”,x,y);按四舍五入共
25页第16
页(8)
e格式
以指数形式输出实数。
1)%e
不指定输出数据所占的宽度和数字部分小数位数,由系统自动指定给出6位小数,指数部分占5位,其中“e”占一位,指数符号占一位,指数占3位.数值按标准化指数形式输出(小数点前有1位非零数字)。
例如:printf(“%e”,123.456);
输出:1.234560e+002
e格式输出的实数共占13列宽度.3位6位共
25页第17
页g格式符:根据数值的大小输出实数,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的零。例如:f=123.468;
printf(“%f%e%g”,f,f,f);
输出如下:123.4680021.234680e+002123.46810列13列10列共
25页第18
页几点说明:1.格式说明符与变量表要一一对应,即:类型相同,个数相等2.格式说明符号用小写字母(%X除外)3.格式说明符号之外的符号均照原样显示4.若需显示百分号,格式为:%%5.如果实际数据所占字符位大于指定的域宽,按实际输出共
25页第19
页例:分析程序的执行结果main(){inta=16;chare=’A’;unsignedb;longc;floatd;b=65535;c=123456;d=123.45;printf(”a=%d,%4d,%-6d,c=%ld\n”,a,a,a,c);printf(”%o,%x,%u\n”,b,b,b);printf(”%f,%e,%13.3e,%g\n”,d,d,d,d);printf(”%c,%s,%7.3s\n”,e,”China”,”Beijing”);}这里7指输出宽度,3表示输出该字符串的前3个字符。共
25页第20
页4.1.2字符输出函数格式:putchar(字符变量)功能:在标准输出设备上,输出指定的字符。说明:putchar*一次调用只能输出一个字符*加上分号成为字符输出语句*使用时在程序开头用编译预处理命令#include”stdio.h”或:
#include<stdio.h>编译预处理头文件请详见附录E共
25页第21
页例:#include<stdio.h>main(){chara,b,c;a='B';b='O';c='Y';putchar(a);putchar(b);putchar(c);}输出:BOY注意:头文件声明不可少!共
25页第22
页#include<stdio.h>main(){charc=
a
;putchar(c);}思考怎样输出多个字符?多个字符怎样排列?charc1,c2,c3;c1=
a
;c2=
b
;c3=
c
;putchar(c1);putchar(c2);putchar(c3);abc?例与putchar(97);putchar(98);putchar(99);等效与printf(“%c%c%c”,c1,c2,c3);等效共
25页第23
页abcputchar(
\n
);charc1,c2,c3;c1=
a
;c2=
b
;c3=
c
;putchar(c1);putchar(
\n
);putchar(c2);putchar(
\n
);putchar(c3);思考?共
25页第24
页4.2.1格式输入函数一般形式scanf(格式控制字符串,地址表列);
scanf("%d,%f",&a,&b);格式字符指定输入数据格式输入数据地址表列非格式字符输入数据以,分隔没有时用空格、Tab或回车分隔4.2数据的输入共
25页第25
页%d:
输入十进制整数%o:输入八进制整数%x:输入十六进制整数%f:以小数形式输入实数%e:以指数形式输入实数%c:输入一个字符%s:输入字符串scanf()函数说明符共
25页第26
页m表示数据占用的宽度l加在d、o、x、u前:输入长整型加在f、e前:输入双精度型L加在f、e前:输入longdouble型h加在d、o、x前:输入短整型*本输入项在读入后不赋给相应的变量scanf()的格式修饰符共
25页第27
页
说明:*scanf函数中的“格式控制”后面必须是变量地址而不是变量名。scanf("%d%f",&a,&b);*输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键、跳格键tab分隔。scanf("%d%f",&a,&b);键盘输入数据:14空格(回车键,tab)15回车键没有间隔或者空格共
25页第28
页
*输入时可以指定域宽,不允许规定精度.inta,b;scanf(“%3d%3d”,&a,&b);floatx;scanf(“%8.2f”,&x);
*输入时,遇下列情况结束*回车,空格*宽度结束*非法输入输入123456系统自动将123赋给a,456赋给b共
25页第29
页[例]:程序输入演示
#include<stdio.h>main(){inta,b,c;scanf("%d%d%d",&a,&b,&c);/*数据输入方法演示*/
printf(“%d,%d,%d\n”,a,b,c);scanf(“%3d”,&k);/*超长输入:123456*/}如下数据输入方法都可以:①12
15
16
②121516③12(按tab键)1516*格式控制字符串中若包含普通字符,则输入时必须照原样输入普通字符,否则将导致输入结束。如:inta,b,c;scanf(“%d,%d,%d”,&a,&b,&c);
输入:1,2,3<回车>*数值型数据和字符型数据混合输入方法
main(){inta,b,c,d,e;scanf(“%d%c%c%c%d”,&a,&b,&c,&d,&e);printf(“a=%d,b=%c,c=%c,d=%c,e=%d”,a,b,c,d,e);}
输入:123abc789<回车>
输出:a=123,b=a,c=b,d=c,e=789注意格式说明符以外的字符*在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入.如,scanf("%c%c%c",&a,&b,&c);输入:xyzx字符赋给a,空格字符赋给b,y字符赋给c共
25页第32
页输入double型数据,必须用格式说明符%lf或%le,输入long型数据,必须用%ld。(vc++6.0不受限制)标准C在scanf中不使用%u说明符,对unsigned型数据,以%d或%o、%x格式输入。%后的“*”为附加说明符,用来表示跳过它对应的数据。输入时格式控制符中不能加“\n”。提示注意:
例:doublea;intb;floatc;
scanf(
%f,%2d,%*d,%5f
,&a,&b,&c);printf(
a=%f\nb=%d\nc=%f\n
,a,b,c);输入:5.3,12,456,1.23456回车原因是格式符用错了.应该用lf或le格式双精度变量a输入时必须用%lf格式双精度变量输出可以用%f格式或%lf格式
共
25页第34
页#include<stdio.h>main(){inta;floatb,c;printf(“inputthreenumbers”);scanf(“%2d%3f%4f”,&a,&b,&c);printf(“a=%d,b=%f,c=%f\n”,a,b,c);}输入:12345678987654321输出?例:scanf格式控制字符串中不要普通字符,若需要输入提示,应该调用printf函数实现。共
25页第35
页4.2.2getchar函数(字符输入函数)一般形式:getchar()------没有参数功能:从键盘输入一个字符。说明:1)只能输入一个字符
2)可以将获得的字符赋给int型或char型的变量
[例]#include<stdio.h>main(){charc;c=getchar();putchar(c);}运行时键入字符a,必须要回车则输出为:a注意:输入字符时不要带撇号也可改成intc;共
39页第36
页例:从键盘读入一个字符,将该字符及其它前、
后字符输出到显示器。#include"stdio.h"main(){intc;c=getchar();putchar(c-1);putchar(c);putchar(c+1);}不要丢掉头文件共
25页第37
页#include<stdio.h>
main()
{chara,b,c,d;
scanf(“%c%c”,&a,&b);
c=getchar();d=getchar();
printf(“%c%c%c%c\n”,a,b,c,d);
}当执行程序时,按下列方式输入数据:1234则输出结果是A)1234B)12C)12D)12334
练习:
程序举例例:输入三角形的三边长,求三角形面积.为简单起见,设输入的三边长a,b,c能构成三角形.#include"math.h"main(){floata,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%7.2f,b=%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临床营养肠内营养配制技师考试试卷及答案
- 2026年高考物理临考冲刺卷03(拔高卷)(全适用)(全解全析)
- 2025年中国广电甘肃网络股份有限公司陇南市分公司招聘笔试历年参考题库附带答案详解
- 2025山西国际能源集团社会招聘258人笔试历年参考题库附带答案详解
- 2025安能集团第一工程局云南投资建设有限公司招聘10人笔试历年参考题库附带答案详解
- 2025宁夏宁鲁石化有限公司招聘40人笔试历年参考题库附带答案详解
- 2025四川雅安城投规划设计有限公司招聘1名合同制员工考察事宜阅读模式笔试历年参考题库附带答案详解
- 2025四川甘孜州新龙县招聘新龙县国资公司总经理及副总经理2人笔试历年参考题库附带答案详解
- 2025四川内江市东兴区投资发展有限公司招聘人员17人笔试历年参考题库附带答案详解
- 2025北京汽车集团有限公司信息中心副主任招聘2人笔试历年参考题库附带答案详解
- 早产儿低体重儿的护理
- 律师职业道德的未来发展与展望
- 尺寸链的计算表格
- 煤炭采矿煤矿PPT模板
- 2022-2023学年福建省三明市建宁县重点中学小升初数学入学考试卷含答案
- 南网合理均价基准差径靶心法
- 班主任班级管理整改措施
- 第三方飞检迎检策划
- GB/T 848-2002小垫圈A级
- AMR功能开启与测试总结指导书
- 动火许可证(模板)
评论
0/150
提交评论