版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章格式化输入输出目录/Contents数据格式化输入函数scanf()数据格式化输出函数printf()数据的输入与输出C语言无I/O语句,I/O操作由函数实现,如printf、scanf函数,这些函数定义在库函数<stdio.h>中#include<stdio.h>变量可以从键盘获得数据吗?C语言如何从键盘获取数据?可以,通过scanf函数格式:scanf(“格式控制符”,变量地址);功能:从键盘按格式读取数据,并赋给变量。取地址运算符:&scanf(“%d”,&a);0x22fe48a问题的提出格式scanf(格式控制字符串,输出项表列);scanf(“i=%f,j=%d",&a,&b);可以输入若干任意类型的数据
函数名输入数据地址表列普通字符格式说明格式化输入scanf()非格式字符输入数据以,分隔没有时可以空格、Tab或回车分隔未加修饰的转换字符在输入流中被匹配的字符对应参数的类型c任何字符,包括空白chard可选的有符号十进制整数inti可选的有符号十进制整数、八进制整数或十六进制整数intu可选的有符号十进制整数unsignedo可选的有符号八进制整数,不需要前导0unsignedx,X可选的有符号十六进制整数,不允许前导0x或0Xunsignede,E,f,g,G可选的有符号浮点数floatpprintf()中的%p所产生的通常是无符号十六进制整数voidscanf()的格式转换字符m表示数据占用的宽度l加在d、o、x、u前:输入长整型加在f、e前:输入双精度型L加在f、e前:输入longdouble型scanf()的格式修饰符#include<stdio.h>main(){
inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}问题1:当要求程序输出结果为:a=12,b=34时,用户应该如何输入数据?
1234↙a=12,b=34↙a=12,b=34↙输入数据的格式控制#include<stdio.h>main(){
inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}问题2:当限定用户输入数据以逗号为分隔符,即输入数据格式为:12,34↙时,应修改程序中的哪条语句?怎样修改?,
输入数据的格式控制#include<stdio.h>main(){
inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}问题3:语句scanf("%d%d",&a,&b);修改为scanf("a=%d,b=%d",&a,&b);时,用户应该如何输入数据?a=12,b=34↙输入数据的格式控制#include<stdio.h>main(){
inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}问题4:如果程序第5行语句输入项修改为a,b,那么结果又会如何呢?
a,b输入数据的格式控制【例3.1】
编写程序,按如下数据输入格式从键盘输入一个整数乘法表达式:整数1*整数2然后计算并输出该表达式的计算结果,输出格式如下:整数1*整数2=计算结果C格式符问题及解决办法#include<stdio.h>main(){
inti,j;
charop; printf("Pleaseentertheexpressioni*j\n"); scanf("%d%c%d",&i,&op,&j); printf("%d%c%d=%d\n",i,op,j,i*j);}Pleaseentertheexpressioni*j
第1次测试12*3↙124199288=4199300C格式符问题及解决办法C格式符问题及解决方法#include<stdio.h>main(){
inti,j;
charop; printf("Pleaseentertheexpressioni*j\n"); scanf("%d%c%d",&i,&op,&j); printf("%d%c%d=%d\n",i,op,j,i*j);}Pleaseentertheexpressioni*j
第2次测试123↙123=36C格式符问题及解决办法#include<stdio.h>main(){
inti,j;
charop; printf("Pleaseentertheexpressioni*j\n"); scanf("%d%c%d",&i,&op,&j); printf("%d%c%d=%d\n",i,op,j,i*j);}Pleaseentertheexpressioni*j
第3次测试12*3↙12*3=36#include<stdio.h>main(){
inta;
charb;
floatc;printf("Pleaseinputaninteger:");scanf("%d",&a);printf("integer:%d\n",a);printf("Pleaseinputacharacter:");scanf("%c",&b);printf("character:%c\n",b);printf("Pleaseinputafloatnumber:");scanf("%f",&c);printf("float:%f\n",c); }Pleaseinputaninteger:希望得到的运行结果12↙Pleaseinputancharacter
:a↙Pleaseinputafloatnumber:3.5↙integer:12character
:afloatnumber:3.500000#include<stdio.h>main(){
inta;
charb;
floatc;printf("Pleaseinputaninteger:");scanf("%d",&a);printf("integer:%d\n",a);printf("Pleaseinputacharacter:");scanf("%c",&b);printf("character:%c\n",b);printf("Pleaseinputafloatnumber:");scanf("%f",&c);printf("float:%f\n",c); }Pleaseinputaninteger:实际得到的结果好像很奇怪呀!12↙Pleaseinputancharacter
:a↙Pleaseinputafloatnumber:3.5↙integer:12floatnumber:3.500000#include<stdio.h>main(){
inta;
charb;
floatc;printf("Pleaseinputaninteger:");scanf("%d",&a);printf("integer:%d\n",a);printf("Pleaseinputacharacter:");
getchar();/*将存于缓冲区中的回车字符读入,避免被后面的变量作为有效字符读入*/scanf("%c",&b);printf("character:%c\n",b);printf("Pleaseinputafloatnumber:");scanf("%f",&c);printf("float:%f\n",c); }Pleaseinputaninteger:程序修改后得到的运行结果12↙Pleaseinputancharacter
:a↙Pleaseinputafloatnumber:3.5↙integer:12character
:afloatnumber:3.500000#include<stdio.h>main(){
inta;
charb;
floatc;printf("Pleaseinputaninteger:");scanf("%d",&a);printf("integer:%d\n",a);printf("Pleaseinputacharacter:");scanf(“%c”,&b);/*第2种解决方案:在%c前加一个空格*/printf("character:%c\n",b);printf("Pleaseinputafloatnumber:");scanf("%f",&c);printf("float:%f\n",c); }#include<stdio.h>main(){
inti,j,mul;
charop; printf("Pleaseentertheexpressioni*j\n"); scanf("%d%c%d",&i,&op,&j); printf("%d%c%d=%d\n",i,op,j,i*j);}12*3↙12*3↙12↙*↙3↙C格式符问题及解决办法scanf("%d,%f\n",&a,&b);scanf("%d,%f",a,b);scanf("%7.2f",&a);几点忠告不要拘泥于细节不要死记硬背在使用中慢慢掌握注意!格式输入函数常见错误格式化输出printf()
格式printf(格式控制字符串,输出项表列);printf("a=%db=%f",a,b);
可以输出若干任意类型的数据
函数名可选输出表列普通字符格式说明转换字符对应的参数如何显示c作为字符d,i作为十进制整数u作为无符号十进制整数o作为无符号八进制整数x,X作为无符号十六进制整数e,E作为指数形式的浮点数,如1.234e+3f作为带小数点的浮点数,如3.1415g,G以e(E)或f格式,都是较短的s作为串p相应的参数是指向void的指针,按十六进制数显示它的值n相应的参数是指向一个整数的指针,该整数是至今成功写到流或缓冲区中的字符个数,对参数不做转换%使用%%把%写入输出流,没有相应的参数被转换printf()的转换字符printf()格式修饰符m表示数据占用的最小宽度数据宽度大于m,按实际宽度输出数据宽度小于m时,补空格n对实数表示输出n位小数对字符串表示最多输出的字符个数l长整型整数,加在d、o、x、u前Llongdouble型数,加在f、e、g前-
改变输出内容的对齐方式默认为右对齐格式化输出printf()【例3.2】
下面程序演示格式化显示数字举例。#include<stdio.h>intmain(){ inti=1234; doublex=0.123456789; printf("|%d|%6d|%7o|%-9x|%-#9x|\n",i,i,i,i,i); printf("|%10.5f|%-12.5e|\n",x,x); return0;}程序的运行结果如下:|1234|1234|2322|4d2|0x4d2||0.12346|1.23457e-001|格式化输出printf()float的格式:%f
一般格式:
%[<最小域宽>.<小数位数>]fExample:printf("Valueis:%10.4f",32.6784728);Valueis:32.678510characters4digits【例3.3】
下面程序演示格式化显示字符和串举例。#include<stdio.h>intmain(){ charch='W'; chars[]="Bluemoon!"; printf("|%c|%2c|%-3c|\n",ch,ch,ch); printf("|%s|%3s|%.6s|%-11.8s|\n",s,s,s,s); return0;}格式化输出printf()程序运行结果如下:|W|W|W||Bluemoon!|Bluemoon!|Bluem|Bluemoo|【例3.4】
编写一个程序,对用户录入的产品信息进行格式化。程序运行后需得到如下运行结果:Enteritemnumber:456Enterunitp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论