




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计
2023翻转课堂实用教程第4章输入输出函数格式化输入函数scanf()和格式化输出函数printf()4.1字符/字符串输入输出函数4.2
4.1格式化输入函数scanf()和
格式化输出函数printf()情形一情形二情形三从标准输入设备(一般是键盘)输入数据(包含整数、实数、字符等),并把结果输出到终端(一般是屏幕)上从标准输入设备输入字符或字符串,并把结果显示在终端上,建议使用字符输入函数getchar()和字符串输入函数gets()从文件中读取数据(包含整数、实数、字符等),并把结果输出到文件中使用格式化输入函数scanf()和格式化输出函数printf()使用字符输出函数putchar()和字符串输出函数puts()使用文件输入函数fscanf()和文件输出函数fprintf()选择使用哪个函数?放到文件一章讲解4.1.1格式化输入函数scanf()scanf(格式控制字符串,变量地址列表)函数格式:函数功能:通过标准输入设备(键盘、写字板等),按照格式控制字符串中的格式要求为变量地址列表中的变量输入数据变量地址列表串:变量地址列表由输入项组成,两个输入项之间用逗号分隔,输入项一般由地址符&和变量名组成,即:&变量名格式转换说明符功能描述%d输入一个十进制整数%u输入一个无符号十进制整数%f输入一个单精度实数%lf输入一个双精度实数%e,%E,%g,%G输入一个输入实数,可以用小数形式或指数形式输入%c输入一个字符%s输入一个字符串%o输入一个八进制整数%x,%X输入一个十六进制整数%*表示本输入项只是读入,但不赋给相应变量例子PK例如:从键盘接收整数或实数例如:从键盘输入数据方法inta=0,b=0,c=0;floatd=0,e=0;scanf("%d%d",&a,&b);//两个%d之间无空格,输入整数并赋值给变量a和bscanf("%d%d",&b,&c);//输入两个整数并分别赋值给b、cscanf("%dissmallerthan%d",&a,&b);scanf("%f,%f",&d,&e);//输入两个整数并分别赋值给d、e5.scanf("%f+%f",&d,&e);//输入两个整数并分
别赋值给d、e1.scanf("%d%d",&a,&b);//两个%d之间无空格,输入整数并赋值给变量a和b2.scanf("%d%d",&b,&c);//输入两个整数并分别赋值给c、d3.scanf("%dsmaller%d",&a,&b)4.scanf("%f,%f",&d,&e);//输入两个整数并分别赋值给c、d5.scanf("%f+%f",&d,&e);//输入两个整数并分别赋值给c、d输入函数scanf()注意(1)格式控制字符串中多个格式转换说明符之间没有逗号,输入数据时,通常使用空格键或者回车键来分隔数据;格式转换说明符之间有逗号,输入数据时,一定要用逗号来分隔数据。(2)格式转换说明符个数和类型必须与变量地址列表一一对应。(3)*(抑制字符):表示本输入项只是读入,但不赋给相应变量。(4)对于scanf(),输入数据的格式要和控制字符串的格式保持一致,但对输入数据之间的空格的处理比较宽松,并不要求空格数严格对应,多几个少几个无所谓,只要有空格就行。*抑制字符的用法案例4-1-1*(抑制字符)的用法案例4-1-1程序代码:main(){ inta,b; scanf("%d%*d%d",&a,&b); printf("a=%d,b=%d\n",a,b);}案例4-1-1,运行结果:123456↙a=12,b=56第二个数对应*,没有赋值给变量例如:从键盘接收字符或字符串charm,n;charurl[30];//定义一个字符数组用来存储字符串scanf("%c%c",&m,&n);//输入一个字符,并赋值给变量letter2.scanf("%s",url);//输入一个字符串,并赋值给变量url例如:从键盘输入数据方法scanf("%c%c",&m&n);//输入两个字符,并赋值给变量letter2.scanf("%s",url);//输入一个字符串,并赋值给数组变
量url。注意:1.scanf()读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串,解决办法需要用到后面要讲的gets()函数。2.一个%c只能接收一个字符,"%c%c"格式控制时,在键盘输入两个连续的字符时不能有任何分隔符,否则,分隔符本身会被认为是一个字符4.1.2格式化输出函数printf()printf(<格式控制字符串>,<参数列表>)例如:printf(“i=%d,c=%c\n”,i,c)函数格式:函数功能:将输出列表中的各个表达式的值按照格式控制字符串中对应的格式输出到标准输出设备(显示屏)格式说明的一般形式:%[标志][输出最小宽度m][.精度n][长度]类型格式字符,其中方括号[]中的项为可选项:(1)类型格式字符符号作用符号作用d十进制有符号整数X、x无符号以十六进制表示的整数u十进制无符号整数o无符号以八进制表示的整数f浮点数e指数形式的浮点数c单个字符g浮点数,选用f或e格式中输出宽度较短的一种格式s字符串p指针的值(2)标志标志意义标志意义-结果左对齐,右边填空格0指定数字前的空格用0填补+输出符号(正号和负号)
#对c、s、d、u类无影响对o类,输出是时加前缀o
空格输出值为正值,冠以空格,为负值冠以负号对x类,输出是时加前缀0X对e、g、f类,当结果有小数时才给出小数点4.1.2格式化输出函数printf()用十进制整数来表示输出的最少位数。若实际位数多于宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。(3)最小输出宽度:(4)精度以“.”开头,后跟十进制整数若实际位数大于所定义的精度位数,则截去超过的部分。(5)长度长度格式符为h、l两种h表示按短整型量输出l表示按长整型量输出注意:(1)格式转换说明符个数和类型必须与输出列表一一对应
。(2)格式控制字符串中可以有转义字符和普通字符。转义字符根据具体作用实现操作,普通字符原样输出。(3)修饰符m(正整数):指定输出项所占的宽度,当指定宽度小于实际宽度时按实际宽度输出,当指定宽度大于实际宽度时在前面用空格补足。(4)修饰符.n(正整数):指定输出的实型数据的小数位数(四舍五入),系统默认小数位数为6。(5)修饰符0(数字):指定数字前的空格用0填补。(6)修饰符-:指定输出项的对齐方式,表示左对齐。案例案例4-1-2输出类型格式符使用案例4-1-2程序代码:main(){ floatc=12.44; inta=12,b=1234; printf("%.1f,%.2f,%.6f\n",c,c,c); printf("%4d,%4d\n",a,b); printf("%-4d,%-6d\n",a,b); printf("%04d,%06d\n",a,b);}案例4-1-2,运行结果:12.4,12.44,12.44000012,123412,12340012,001234
4.2字符/字符串输入输出函数4.2.1getchar函数getchar();函数格式:函数功能:从标准输入设备输入一个字符注意:(1)该函数没有参数,函数的返回值是从输入设备得到的字符。(2)从键盘上输入数据通过回车键结束,送入缓冲区,该函数从缓冲区中读入一个字符赋给字符变量。(3)该函数也可以接收回车符。案例4-2-1无参数函数使用案例4-2-1程序代码:main(){ charch1,ch2,ch; ch1=getchar(); ch2=getchar(); ch=getchar(); printf("ch1=%c,ch2=%c\n",ch1,ch2);printf("ch=%c\n",ch);}案例4-2-1,运行结果输入:x↙
y↙输出:ch1=x,ch2=ch=y为什么?4.2.2putchar函数putchar(ch);函数格式:函数功能:向标准输出设备输出一个字符注意:(1)输出字符型变量(2)输出字符型或者整型常量(3)输出转义字符案例4-2-2putchar(ch)函数使用案例4-2-2程序代码:main(){ putchar('\n'); putchar('\007');}案例4-2-2,运行结果字符型、整型、转义字符换行
响铃4.2.3getche()和getch()
函数getche()没有缓冲区,输入一个字符后会立即读取,不用等待用户按下回车键1、getche()函数2、getch()
函数getch()没有缓冲区,输入一个字符后会立即读取,但它没有回显3、getchar()、getche()和getch()的比较案例4-2-3getche()和getch()函数使用案例4-2-3程序代码:main(){ charc=getch(); printf("c:%c\n",c); charc=getche(); printf("c:%c\n",c);}案例4-2-3,运行结果函数缓冲区头文件回显适用平台getchar()有stdio.h有Windows、Linux、MacOS等所有平台getche()无conio.h有Windowsgetch()无conio.h无Windows输入:@输出:c:@输入f↙输出:fd:f4.2.4输入字符串gets()是专用的字符串输入函数,它拥有scanf()不具备的特性1、gets()函数2、gets()和scanf()的主要区别案例4-2-4gets()函数使用案例4-2-4程序代码:main(){ charname[20]={0},add[20]={0}; gets(name); printf("name:%s\n",name); gets(add); printf("add:%s\n",add);}案例4-2-4,运行结果(1)scanf()读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。(2)gets()认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对gets()来说就是一个完整的字符串。也就是说,gets()能读取含有空格的字符串,而scanf()不能。xiaoming↙name:xiaomingcenter↙add:center从控制台读取数据函数的比较注意(1)scanf()、getchar()、gets()是标准函数,适用于所有平台;getche()和getch()不是标准函数,只能用于Windows。scanf()是通用的输入函数,它可以读取多种类型的数据。(2)getchar()、getche()和getch()是专用的字符输入函数,它们在缓冲区和回显方面与scanf()有着不同的特性,是scanf()不能替代的。(3)gets()是专用的字符串输入函数,与scanf()相比,gets()的主要优势是可以读取含有空格的字符串。(4)scanf()可以一次性读取多份类型相同或者不同的数据,getchar()、getc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备维修技术合作协议
- 农村畜牧业产品供需供应合同
- 媒体合作协议细节陈述
- 高新技术项目合作开发合同
- 智能化养殖技术与设备供应合同
- 教育游戏化在高中历史教学中的实践与效果报告
- 绿色建筑材料在建筑绿色供应链中的应用前景及可行性研究评估报告
- 2025年GPS高空探测系统项目建议书
- 2025年法医DNA检测试剂项目发展计划
- 2025年社交电商项目合作计划书
- 2024-2030年中国集群通信系统行业市场发展监测及投资前景展望报告
- 电缆维修保养服务合同标准
- 儿童重症肺炎病例讨论
- 儿童心肺复苏课件
- 销售心态培训课件
- 重症护理的护理课件
- 2025至2030氧气瓶行业产业运行态势及投资规划深度研究报告
- GB 36980.1-2025电动汽车能量消耗量限值第1部分:乘用车
- 公司新生产线策划方案
- 浙江中考科学必考题型解读-40 电能和电功计算(解析版)
- 2025年中国商业圣诞装饰品行业市场全景分析及前景机遇研判报告
评论
0/150
提交评论