第03章 基本类型数据的输入输出
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf的格式与作用
• 若格式控制串中不含格式说明,则输出项表列可省略, 此时printf函数可简化为: printf(格式控制串); • 例如: printf("Welcome to C world!\n");
• 小结:printf函数的作用就是输出格式控制串,但格 式控制串中的格式说明要用指定的字符序列替换。
u格式字符以无符号十进制数形式输出整数(连同符 号位),o格式字符和x格式字符分别以八进制数和 十六进制数形式输出整数(连同符号位)。
printf函数的使用
• 例(3):char c='a'; printf("%c,%d\n",c,c); 输出:a,97 • 例(4): printf("%3s,%6.2s,%.3s,%-5.3s\n", "Good","Good","Good","Good"); 输出:Good,⊔⊔⊔⊔Go,Goo,Goo⊔⊔
scanf函数输入整数(2)
输入有符号八进制、十进制和十六进制整数可用格 式字符i: scanf("%i",&a); 输入数据按何种进制转换,取决于运行时的输入。 若运行时输入:077↙ 则为输入八进制数据。 若运行时输入:99↙ 则为输入十进制数据。 若运行时输入:0x77↙ 则为输入十六进制数据。
printf函数的使用
• 例(5):float x=111111.111f,y=3.1415926f; printf("%f,%6f,%6.2f,%-6.2f,%.2f\n", x+x, y, y, y, y);
输出:222222.218750,3.141593,⊔⊔3.14,3.14⊔⊔,3.14
scanf函数输入整数(3)
输入无符号八进制、十进制和十六进制整数分别用 格式字符o、u和x: scanf("%o%u%x",&c,&d,&e); 运行时若输入:77 99 ff↙ 则系统自动将77(八进制)转换成整数后存入变量c, 将99(十进制)转换成整数后存入变量d,将ff(十六 进制)转换成整数后存入变量e。但若输入非法字符, 则输入数据将出错。 输入有符号十进制短整数可用格式字符d和格式修 饰符h: scanf("%hd",&f);
printf的格式与作用
• printf函数的格式: printf(格式控制串,输出项表列) • printf函数的功能:将"输出项表列"中的数据按"格式 控制串"指定的格式转换成对应的字符序列后输出。调 用成功,返回输出的数据个数,否则返回负数。 格式控制串:由普通字符和格式说明组成,用双引 号括起来;格式说明应与输出项表列中的数据项依 次一一对应。输出时,①格式控制串中的普通字符 原样输出;②格式控制串中的格式说明用指定的字 符序列替换后输出。而指定的字符序列是由输出项 表列中的数据按格式说明转换所得。 输出项表列:待转换的输出数据,数据之间用逗号 分隔,每个数据均为表达式。
默认精度6位 小数:x+y的 整数部分全输 出,并输出6 位小数。单精 度实数的有效 位数为7位, 双精度实数的 有效位数为16 位。
输出宽 度>6位, 默认精 度6位小 数:y的 整数部 分全输 出,并 输出6位 小数。 输出宽度>6 位,2位小 数:y的整 数部分全输 出,并输出 2位小数。 实际输出4 个字符,不 足6个,左 补2个空格。
printf函数的格式说明
• 格式说明的作用:转换并输出基本类型的数据。 • 格式说明的组成:由%开始、依次由标志字符序列、宽度 指示符、精度指示符、格式修饰符和格式字符组成。其中, 方括号内为可选项。
printf函数的使用
• 例(1):int a=123,b=12345; printf("%d,%4d,%4d",a,a,b); 输出:123,⊔123,12345 • 例(2):int a=-1; printf("%d,%u,%o,%x",a,a,a,a); 输出:-1,4294967295,37777777777,ffffffff 说明:-1在内存单元中以补码形式存放:
含6位小 数:x的 尾数部分 输出整数、 小数点和 6位小数; 指数部分 输出:e, 指数符, 3位指数。
>10位含2位小 数:x的尾数部 分输出整数、 小数点和2位小 数;指数部分 输出:e,指数 符,3位指数。 实际输出9个字 符,不足10个, 左补一个空格。
>10位含6位小 数:结果同上。
左对齐,>10位 含2位小数:x的 尾数部分输出整 数、小数点和2 位小数;指数部 分输出:e,指 数符,3位指数。 实际输出9个字 符,不足10个, 右补一个空格。
scanf函数使用说明
讨论1:因格式控制串未指定输入数据之间的分隔 符,故输入数据之间可用空格分隔,也可用回车键、 跳格键(tab)分隔。即以下3种输入均合法: 30⊔⊔⊔20↙ 30↙ 20↙ 30(按tab键)20↙
scanf函数使用说明
讨论2:若希望用指定字符做输入数据之间的分隔, 则可在scanf函数的格式控制串中指定。例如,下列 scanf函数调用指定逗号做输入数据之间的分隔: scanf("%d,%d",&a,&b); 这样,输入数据时,数据之间必须用逗号分隔: 30,20↙ 否则导致输入结果出错。
3.2 非格式化字符输入输出函数
• 非格式化字符输入函数 原型:int getchar(void); 功能:从键盘输入一个字符。若调用成功,则返回 输入的字符,否则返回EOF(-1)。 例如: c=getchar(); 注.若从键盘输入Ctrl+Z键,则c得到的是EOF(-1)。 • 非格式化字符输出函数 原型:int putchar(int c); 功能:向显示器输出一个字符。若调用成功,则返 回字符c,否则返回EOF(-1)。
• 程序的一次运行结果: a↙ ab
3.3 格式化输出函数printf
• printf函数的输出原理: 计算机保存和处理数据用二进制形式。 人阅读数据用字符形式。 计算机显示数据时应先将内存中的二进制数据转换 成相应的字符序列,才可显示。 例如,整数123456789在内存中的二进制形式为: 0000 0111 0101 1011 1100 1101 0001 0101 显示时,对应的八进制字符序列为:726746425, 十进制字符序列为:123456789, 十六进制字符序列为:75bcd15。
第3章 基本类型数据的输入输出
教学目标
• 了解C语言实现输入输出的方法 • 掌握非格式化字符输入输出函 数的用法 • 掌握输入函数scanf的用法 • 掌握输出函数printf的用法 • 理解输入输出界面设计的重要 性,掌握简单输入输出界面设 计方法 3.1 3.2 3.3 3.4 3.5
目录
C语言的输入输出 字符输入输出函数 输出函数printf 输入函数scanf 程序案例
scanf函数的格式
• scanf函数的格式: scanf("格式控制串",输入项表列); 格式控制串:由普通字符和格式说明组成。 格式说明:与输入项表列中的数据项一一对应。 普通字符:输入时原样输入,作为输入字符序列数 据之间的分隔。若无普通字符,则用一个或多个空 白符作为输入字符序列数据之间的分隔。 空白符:空格、回车键、跳格键(tab)。 输入项表列:给出待转换的数据存放的内存位置,多个 数据项之间用逗号分隔。 返回值:调用成功,返回输入、转换和保存的数据个数; 若没有数据被保存,则返回0;若读到文件结束(从键盘 输入Ctrl+Z),则返回EOF(-1)。
• 例如:
printf的格式与作用
• 输出过程: 普通字符"i="和",c="原样输出。 "%d"是第一个格式说明,①用于将输出项表列中的第 一个表达式(10+10)转换成十进制字符序列("20")②被 转换的字符序列("20")替换后输出。 "%c"是第二个格式说明,①用于将输出项表列中的第 二个表达式(65)转换成ASCII字符('A')②被转换的字符 序列('A')替换后输出。 最终输出的字符序列为:"i=20,c=A\n"
3.1 C语言的输入输出
• 输入输出(I/O):程序运行所需数据往往要从外设(如 键盘等)得到,程序的运行结果通常也要输出到外设 (如显示器、打印机、文件等)。 • C语言实现I/O的方法:C语言没有专门的I/O语句,I/O 操作通过调用标准库stdio.h中声明的库函数来实现。 getchar:从键盘输入一个字符 putchar:向显示器输出一个字符 scanf:从键盘输入基本类型的数据 printf:向显示器输出基本类型的数据
scanf函数使用说明
• 例如:int a,b; scanf("%d%d",&a,&b); • 运行时输入下列字符序列: 30⊔20↙ 对输入的第一个字符串"30",按第一个格式说明指 定的格式"%d",转换成十进制数值30,再以二进制 形式存入输入项表列的第一项&a指定的内存。 对输入的第二个字符串“20”,按第二个格式说明 指定的格式“%d”,转换成十进制数值20,再以二 进制形式存入输入项表列的第二项&b指定的内存。
左对齐,输 出宽度>6位, 2位小数:y 的整数部分 全部输出, 并输出2位小 数。实际输 出4个字符, 不足6个,右 补2个空格。
未指定宽 度,2位 小数:y 的整数部 分全输出, 并输出2 位小数。 实际只输 出4个字 符。
printf函数的使用
• 例(6):float x=314.15926f; printf("%e,%10e,%10.2e,%-10.2e,%.2e", x, x, x, x, x); 输出:3.141593e+002,3.141593e+002,⊔3.14e+002,3.14e+002⊔,3.14e+002
含2位小数:x 的尾数部分输 出整数、小数 点和2位小数; 指数部分输出: e,指数符,3 位指数。因未 指定至少占多 少位,则按实 际输出9个字符。
3.4 格式化输入函数scanf
• scanf函数的输入原理: 人输入数据用字符形式。 计算机保存和处理数据用二进制形式。 计算机输入数据:应先将所输入的字符序列数据转换成 基本类型的二进制数据方可存入内存。 例如:从键盘输入十进制整数123456789(此时是整数串, 不是整数),应按整数格式转换成二进制数形式: 0000 0111 0101 1011 1100 1101 0001 0101 再存入内存。 • scanf函数的功能:从键盘输入字符序列数据,并按指定格 式(由格式控制串指定)转换成相应基本类型的二进制数据 存入指定变量的内存(由输入项表列指定)。
指定输出的字 符串占3列。若 串长>3,则全 串输出。若串 长<3,则左补 空格。 指定输出的字 符串占6列,但 只取串中左端2 个字符输出在6 列的右侧,左 补空格。 指定输出 的字符串 仅占3列, 只取串中 左端3个字 符。 指定输出的字 符串占5列,只 取串中左端3个 字符,输出在5 列的左侧,右 补空格。
3.2 非格式化字符输入输出函数
• 举例:下列程序从键盘输入一个字符,并输出该字符 及其后续字符。
#include<stdio.h> int main(void) { char c; c=getchar( );/*从键盘读入字符*/ putchar(c); /*向屏幕输出所输入的字符*/ putchar(c+1);/*向屏幕输出所输入的字符的后续字符*/ return 0; }
scanf函数的格式说明
• 作用:将输入的字符序列转换成基本类型数据。 • 组成:ห้องสมุดไป่ตู้%开始、依次由星号(*)、宽度指示符、格式 修饰符和格式字符组成。
scanf函数输入整数(1)
• 设有下列变量说明: int a,b; unsigned c,d,e; short int f; 输入有符号十进制整数可用格式字符d: scanf("%d",&a); scanf("%3d%d",&a,&b); 运行时若输入:11112↙ 则将前三个字符111转换成整数后存入变量a,将 剩余的字符12转换成整数后存入变量b。但这种 方法输入数据时容易出错,建议少用。