版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章格式化输入/输出
本章要点printf函数scanf函数输入/输出系统组成系统结构计算机系统结构硬件系统CPU控制器运算器输入设备(鼠标、键盘、手写笔、MIC等)输出设备(显示器、绘图仪、打印机等)存储器内存储器(RAM)外存储器(软盘、硬盘、光盘)触摸屏“现代计算机之父”-冯·诺依曼从20世纪初,物理学和电子学科学家们就在争论计算机该采用什么样的结构人们习惯十进制计数,所以研制模拟计算机的呼声很高20世纪30年代美籍匈牙利科学家冯·诺依曼大胆地提出,抛弃十进制,采用二进制作为数字计算机的数制基础同时提出程序存储的思想(预先编制计算程序,然后让计算机来按照程序事前制定的计算顺序来执行数值计算工作)该思想后来用于现代计算机(冯·诺依曼式计算机)的设计中,世界首台冯·诺依曼式计算机EDVAC(1949年)计算机基本结构——冯氏结构3.1printf()函数intprintf(“formatstring”,expr1,expr2,…);formatstring:格式串,“”,包含:普通字符:(哪些?)原样输出占位符:以%开头的转换说明(conversionspecification),说明输出数据在格式串中的位置和格式,输出时替换为对应expr值转换说明符:%后字母,如d、f。expr可以是常量、变量或者表达式。printf("theareais%f\ntheperimeteris%f",PI*radius*radius,2*PI*radius);3.1printf()函数占位符应与要输出的值配对:数量匹配、格式匹配编译器不检查匹配问题错误:inti;floatf;Toomanyconversionspecifications: printf("%d%d\n",i);Toofewconversionspecifications: printf("%d\n",i,j);incorrectconversionspecificationsprintf(“%f%d\n”,i,f);3.1.1转换说明格式:%m.pX或%-m.pX%:格式说明起始符号,不可缺少X为转换说明符把内存中二进制转换成相应格式-、m和p皆可选,m,p为整数,-:左对齐输出,省略则右对齐输出m:最小域宽(输出项所占的最少字符数),不足补空,超出扩展p:精度与X有关,eg输出实数的小数位数,缺省为6转换说明符d:把待输出数据从二进制转换成十进制int型,%o(八进制数),%x(十六进制数)f:把待输出数据从二进制转换成十进制(小数形式)float型实数%f:不指定宽度,整数部分全部输出并输出6位小数。%-m.pf:输出共占m列,其中有p位小数,如数值宽度小于m右端补空格。%m.pf:输出共占m列,其中有p位小数,如数值宽度小于m左端补空格。
转换说明符e:以指数形式输出实数:%e:数字部分(又称尾数)输出6位小数。%m.pe和%-m.pe:m、p和”-”字符含义与前相同。p:小数位数,m:整个输出数据所占的宽度。g:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。转换说明符c:char,输出字符s:string,输出字符串%ms:输出占m列,如字符串长于m,将字符串全部输出;若串长小于m,则左补空格%-ms:字符串向左靠,右补空格%m.ps:输出占m列,但只取字符串中左端(前)p个字符。右对齐,左补空。如果p>m,则自动取p值,即保证p个字符正常输出。%-m.ps:左对齐,右补空。#include<stdio.h>intmain(void){ inti; floatx; i=40; x=839.21f; printf("|%d|%5d|%-5d|%5.3d|\n",i,i,i,i); printf("|%10.3f|%10.3e|%-10g|\n",x,x,x); return0;}转义序列一些特殊符号(非打印字符,不可见)没有专用符号表示,用转移序列表示‘\’:转义字符\n\t\b\aprintf("Item\tUnit\tPurchase\n\tPrice\tDate\n");3.2scanf()函数格式:scanf(“format
string”,地址列表);formatstring:[普通字符]与转换说明%X(d,i,o,x,f,c,s),地址列表:变量地址列表,用“&”取址输入多个数据,一般以空格、TAB、回车键作为分隔符(不需要在格式控制串中指明)格式符之间用其它字符分隔,则输入时也用该分隔符%c:输入字符,如输入血型,A、B,性别,M(男),F(女),空格或其它字符作为有效字符输入%s:输入字符串,比如AB型,名字tom,mike,遇空格、TAB、回车表示结束scanf(“%s”,university);universityof……#include<stdio.h>voidmain() {intnum; scanf("%d",&num);printf("%d\n",num); }地址列表为变量的地址,用“&”取址#include<stdio.h> voidmain(){intnum1,num2;scanf(“%d%d”,&num1,&num2);//两个%d之间无分隔符printf("%d\t%d\n",num1,num2);}输入多个数据,一般以空格、TAB、回车键作为分隔符#include<stdio.h>voidmain() {intnum1,num2;scanf("%d,%d",&num1,&num2);printf("%d\t%d\n",num1,num2);}程序输出结果:注意输入时避免如下错误:格式符之间用其它字符分隔,则输入时也以同样字符分隔#include<stdio.h>voidmain(){charch;printf("请输入一个字符:");scanf("%c",&ch); printf("你输入的字符是:%c\n",ch);}输入字符什么场合用呢?输入性别、血型、继续有否,Y或N【思考】以下程序应如何输入?#include<stdio.h>voidmain(){ charch1,ch2; scanf("%c%c",&ch1,&ch2); printf("ch1=%c,ch2=%c\n",ch1,ch2);}正确输入后的程序结果显示如上图:【思考】产生右图结果的原因是什么?%c:空格或其它字符作为有效字符输入#include<stdio.h>voidmain(){charstr[10];printf("请输入一个字符串");scanf("%s",str);printf("你输入的字符串是%s\n",str);}输入字符串#include<stdio.h>voidmain() {floatnum1,num2;scanf("%f%f”,&num1,&num2);printf("num1=%f\n",num1);printf("num1=%f\tnum2=%f\n",num1,num2);}输入浮点数scanf(“%.2f”,&num1);scanf(“%.pf”,&a);
不合法输入时不能规定精度,程序是不能控制操作它的人来输入数据精度。scanf(“%pd”,&a);合法温故而知新——printf()函数intprintf(“formatstring”,expr1,expr2,…);expr可以是常量、变量或者表达式。formatstring:普通字符:原样输出占位符(转换说明):以%开头,输出时替换为对应expr值温故而知新——转换说明格式:%m.pX或-%m.pXX为转换说明符-、m和p皆可选,m,p为整数,-:左对齐输出,省略则右对齐输出m:最小域宽(输出项所占的最少字符数),不足补空,超出扩展p:精度与X有关,eg输出实数的小数位数,缺省为6温故而知新——转换说明符d:输出十进制int型,%o(八进制数),%x(十六进制数)f:输出十进制(小数形式)float型实数e:以指数形式输出实数g:自动选f格式或e格式中较短的一种输出。c:char,输出字符s:string,输出字符串温故而知新——scanf()函数格式:scanf(“formatstring”,addrlist);formatstring:一般不含普通字符addrlist:&取地址%与&配对:数量配对,类型配对输入多个数据分隔:formatstring没指定分隔符(默认):以空格、TAB、回车键作为分隔符scanf(“%d%d%d”,&y,&m,&d);——20120925formatstring明确指定分隔符,则输入时也用该分隔符,scanf(”%d-%d-%d”,&y,&m,&d);——2012-09-25%c:空格或其它字符作为有效字符输入,%s:遇空格、TAB、回车表示结束%s:遇空格、TAB、回车表示结束#include<stdio.h>voidmain(void){ charname[20]; printf(“What’syourname?\n”); scanf(“%s”,name); printf(“Mynameis%s\n”,name); return0;}scanf的工作方式模式匹配:输入串格式串%与&配对:数量配对,类型配对%d%f%c1)整数,2)实数,3)字符匹配成功,读入数据项,并继续处理格式串不成功,不再处理格式串的后续部分%d%f%c23fUestc……把当前读入字符f退回到输入缓冲输入缓冲23dUestc……scanf(“%d%f%c”,…);产生键盘中断(等待键盘输入)键入缓存匹配23dUestc……同一程序所有读入共享读入不成功退回字符#include<stdio.h>intmain(){ inta=0; charb; printf("Enteranumber!\n"); scanf("%d",&a); scanf("%c",&b); printf("i=%d\tc=%c\n\n",i,c); return0;}//输入23f//不用输入scanf的工作方式30scanf("%d%d%f%f",&i,&j,&x,&y);输入:[空格]1-20.3-4.0e3¤(¤:换行符)scanf处理输入如下:%d.读入1,再读入-,-不属于整数,退回,存1到i%d.存–20到j,退回
.%f.存0.3到x,退回-%f.存–4.0×103到y退回换行温故而知新——printf()函数intprintf(“formatstring”,expr1,expr2,…);expr可以是常量、变量或者表达式。formatstring:普通字符:原样输出占位符(转换说明):以%开头,输出时替换为对应expr值占位符与表达式匹配数量匹配类型匹配温故而知新——转换说明格式:%m.pX或%-m.pXX为转换说明符-、m和p皆可选,m,p为整数,-:左对齐输出,省略则右对齐输出m:最小域宽(输出项所占的最少字符数),不足补空,超出扩展p:精度与X有关,eg输出实数的小数位数,缺省为6温故而知新——转换说明符d:输出十进制int型,%o(八进制数),%x(十六进制数)f:输出十进制(小数形式)float型实数e:以指数形式输出实数g:自动选f格式或e格式中较短的一种输出。c:char,输出字符s:string,输出字符串温故而知新——scanf()函数格式:scanf(“formatstring”,addrlist);formatstring:一般不含普通字符addrlist:&取地址%与&配对:数量配对,类型配对输入多个数据分隔:formatstring没指定分隔符(默认):以空格、TAB、回车键作为分隔符scanf(“%d%d%d”,&y,&m,&d);——20120925formatstring明确指定分隔符,则输入时也用该分隔符,scanf(”%d-%d-%d”,&y,&m,&d);——2012-09-25%c:空格或其它字符作为有效字符输入%s:遇空格、TAB、回车表示结束温故而知新——scanf的工作方式模式匹配:数量,类型匹配%与&Scanf(“%d%f%c”,&a,&b,&c)输入串与格式串(占位符)“%d%f%c”输入串:1)整数,2)实数,3)字符匹配成功读入数据项不成功停止处理格式串后续部分当前读入字符退回输入缓冲海伦-秦九韶公式 a,b,c:三角形三边长 s:半周长#include<math.h>
sqrt():开根运算程序练习1——“三斜求积术”海伦-秦九韶公式#include<stdio.h>#include<math.h>intmain(){ floata,b,c,s,area;
printf("Enterthelengthsofedgesoftriangle.\n");
scanf("%f%f%f",&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%f\n",area); return0;}程序练习1——“三斜求积术”常用库函数C语言编译器提供了许多基本的、常用的功能,以函数形式分别保存在不同的文件中供程序员使用。stdio.h:提供文件I/O处理功能,如:printf,scanf等。string.h:提供字符串处理功能,如:islower,strcat,strcmp,strlen等。math.h:提供常用数学公式,如:sin,log,sqrt等time.h:提供时间、日期功能,如:timegraphics.h:提供图形功能,包括各种绘制点、线、圆、方和填色等的函数alloc.h:提供动态存储分配控制台程序没有独立窗口,一般在命令行运行。输入输出通过标准IO进行,不象界面程序可以通过鼠标点击进行操作。一般后台运行的程序可作为控制台应用程序。return后程序结束,自动关闭让计算机等待输入:scanf();getchar();system(“pause”);#include<stdlib.h>system(“pause”)#include<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度教育信息化设备承包租赁协议3篇
- 二零二五年度水产养殖产业可持续发展战略合作协议合同3篇
- 2025年度文化旅游创意园区委托经营管理与合作合同3篇
- 2025年度农村土地承包权生态补偿与保护合同
- 二零二五年度房地产公司兼职正式聘用销售合同3篇
- 二零二五年度新型城镇化拆迁房产分割与生态补偿合同3篇
- 2025年度竞业禁止机械租赁及设备维护保养合同3篇
- 二零二五年度特色养殖养鸡场地租赁及农业旅游合同3篇
- 二零二五年度智能穿戴设备出口业务合同范本3篇
- 2025年度农村电商农副产品批发合作框架协议3篇
- 煤泥综合利用的可行性研究报告
- 四川省自贡市2022-2023学年八年级上学期期末语文试题
- 变曲率双向可调收缝式翻升模板施工工法
- 教你炒红炉火版00缠论大概
- 消防管道施工合同
- 大学生计算与信息化素养-北京林业大学中国大学mooc课后章节答案期末考试题库2023年
- 2023年中国社会科学院外国文学研究所专业技术人员招聘3人(共500题含答案解析)笔试历年难、易错考点试题含答案附详解
- 2023年国开大学期末考复习题-3987《Web开发基础》
- 《骆驼祥子》1-24章每章练习题及答案
- 《伊利乳业集团盈利能力研究》文献综述3000字
- 减盐防控高血压培训课件
评论
0/150
提交评论