第4章 键盘输入和屏幕输出
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
16/36
【例4.3】计算圆的周长和面积
#include <stdio.h> main() { const double pi = 3.14159; double r, circum, area; printf("Input r:"); scanf("%lf", &r); circum = 2 * pi * r; area = pi * r * r; printf("printf WITHOUT width or precision specifications:\n"); printf("circumference = %f, area = %f\n", circum, area); printf("printf WITH width and precision specifications:\n"); printf("circumference = %7.2f, area = %7.2f\n", circum, area); }
29/36
输入数据的格式控制——例4.4
#include <stdio.h> main() { int a, b;
scanf("%d %*c %d", &a, &b); printf("a = %d, b = %d\n", a, b);
} 问题6:设计程序使得用户可以以任意字符(回车、空格、 制表符、逗号、其他字符)作为分隔符进行数据的输入
5/36
4.1.1 字符常量(续)
表4-1 常用的转义字符来自6/364.1.1 字符常量(续)
字符型变量的取值范围取决于计算机系统所使 用的字符集。 目前计算上广泛使用的字符集是ASCII码(美 国标准信息交换码)字符集。该字符集规定了 每个字符所对应的编码,即在字符序列中的“ 序号”。 也就是说,每个字符都有一个等价的整型值与 其相对应,这个整型值就是该字符的ASCII码 。例如:字符‘A’的ASCII码为65。 从这个意义上讲,可将char型看成是一种特 殊的int型。
31/36
输入数据的格式控制——例4.4
#include <stdio.h> main() { int a, b;
scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b);
} 问题8:如果用户输入了非法字符,例如输入了12 那么程序运行结果如何? 12 3a↙ 3a,
23/36
举例:利用*跳过一个输入项
#include <stdio.h> main() { int a, b;
跳过一个输入项
printf("Please input a and b:"); scanf("%2d%*2d%2d", &a, &b); printf("a=%d, b=%d, a+b=%d\n",a,b,a+b); } Please input a and b: 123456↙ a=12, b=56, a+b = 68
举例:
scanf(格式控制字符串, 地址列表);
scanf("%d,%f", &a, &b);
21/36
2. 函数scanf()中的格式修饰符
与printf()类似,在函数scanf()的%和格 式符之间也可以插入如表4-5所示的格式修饰 符。
表4-5 函数scanf()的格式修饰符
22/36
第4章 键盘输入 和屏幕输出
本章学习内容
字符常量与转义字符 字符输出函数putchar() 字符输入函数getchar() 数据的格式化输出函数printf() 数据的格式化输入函数scanf()
2/36
第4章 键盘输入和屏幕输出
4.1 单个字符的输入/输出 4.2 数据的格式化屏幕输出 4.3 数据的格式化键盘输入
17/36
第4章 键盘输入和屏幕输出
4.1 单个字符的输入/输出 4.2 数据的格式化屏幕输出 4.3 数据的格式化键盘输入
18/36
1. 函数scanf()的一般格式
一般格式 scanf(格式控制字符串,参数地址表) 其中,格式控制字符串是用双引号括起来的字 符串,它包括格式转换说明符和分隔符两个部 分。 格式说明符通常由%开始,并以一个格式字符 结束,用于指定各参数的输入格式。
24/36
输入数据的格式控制——例4.4
#include <stdio.h> main() { int a, b;
scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b);
} 问题1:当要求程序输出结果为 a = 12, b = 34 时,用户应该如何输入数据?
4.1.2 字符的输入/输出
getchar()和putchar()是C标准函数库中 专门用于字符输入/输出的函数。 函数putchar()的作用是把一个字符输出到 屏幕的当前光标位置。 函数getchar()的作用是从系统隐含指定的 输入设计输入一个字符,按回车表示输入结束 ,读入的字符会自动被回显到屏幕上。
14/36
1.函数printf()的一般格式(续)
举例:
printf(格式控制字符串, 输出项列表); printf("a=%d b=%f", a, b);
函数名 普通 字符
格式 说明
可选输 出列表
可以输出若干任意类型的数据
15/36
2.函数printf()中的格式修饰符
在函数printf()的格式说明中,可在%和格 式符中间插入如表4-3所示的格式修饰符,用 于对输出格式进行微调,如指定输出数据域宽 、显示精度、左对齐等。 表4-3函数printf()的格式修饰符
2. 函数scanf()中的格式修饰符(续)
在用函数scanf()输入数值型数据时,遇到以 下几种情况都认为数据输入结束: (1)遇空格符、回车符、制表符(Tab); (2)达到输出域宽; (3)遇非法字符输入。 注意:如果scanf()的格式字符串中存在除格式 说明以外的其他字符,那么这些字符必须在输入 数据时由用户从键盘原样输入。
表4-4函数scanf()的格式转换说明
19/36
1. 函数scanf()的一般格式(续)
参数地址表是由若干变量的地址组成的列表, 这些参数之间用逗号分隔。 函数scanf()要求必须指定用来接收数据的变 量的地址,否则数据不能正确读入指定的内存 单元。
20/36
1. 函数scanf()的一般格式(续)
a = 12, b = 3
32/36
输入数据的格式控制——例4.4
#include <stdio.h> main() { int a, b;
scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b);
} 问题9:如果用户输入的是123a,那么结果又会如何呢?
30/36
输入数据的格式控制——例4.4
#include <stdio.h> main() { int a, b;
scanf("%d%*2d%d", &a, &b); printf("a = %d, b = %d\n", a, b);
} 问题7:输入123456时程序的输出结果是什么?
a = 12, b = 56
28/36
输入数据的格式控制——例4.4
#include <stdio.h> main() { int a, b; scanf("%d %d", &a, &b); == \"%d\" printf("a = \"%d\" %d , ,b b %d \n", a, b); } 问题5:限定用户输入数据为以下格式 12↙ 34↙ 同时要求程序输出结果为a = "12" ,b = "34"
3/36
4.1.1 字符常量
C中的字符常量是用单引号括起来的一个字符 。 例如,‘a’是字符常量,而a则是一个标识符 。再如,‘3’表示一个字符常量,而3则表示 一个整数。
4/36
4.1.1 字符常量(续)
把字符放在一对单引号里的做法,适用于多数 可打印字符,但不适用于某些控制字符(如回 车、换行符等)。 因此,C语言引入了另外一种特殊形式的字符 常量—转义字符。它是以反斜线(\)开头的字 符序列,它有特殊的含义,用于描述特定的控 制字符。 作为字符使用时,同样要放到一对单引号内。
a = 12, b = 34↙
27/36
输入数据的格式控制——例4.4
#include <stdio.h> main() { int a, b; %2d%2d scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b); } 问题4:限定用户输入数据为以下格式 1234↙ 同时要求程序输出结果为a = 12, b = 34
4.1 单个字符的输入/输出 4.2 数据的格式化屏幕输出 4.3 数据的格式化键盘输入
12/36
1.函数printf()的一般格式
两种格式: printf(格式控制字符串); printf(格式控制字符串, 输出值参数表); 其中,格式控制字符串是用双引号括起来的字符 串,一般包括两部分:格式转换说明和需要原样 输出的普通字符。 格式转换说明由%开始,并以转换字符结束, 用于指定各输出值参数的输出格式。
9/36
例4.1
[例4.1] 从键盘输入一个大写英文字母,将其转换为小 写字母后,再显示到屏幕上。 [问题求解方法分析] 观察附录D中的常用ASCII字符表,可以发现 这样一个规律,即小写英文字母的ASCII码值 比相应的大写英文字母的ASCII码值大32。根 据这一规律,可轻松实现大小写英文字母之间 的转换。
Input r: 5.3↙ printf WITHOUT width or precision specifications: circumference = 33.300854, area = 88.247263 printf WITH width and precision specifications: circumference = 33.30, area = 88.25
10/36
【例4.1】大小写英文字母转换
ch = ch - ('a' – 'A');
/*从键盘输入一个字符,回车结束输入*/
Press a key and then press Enter: B↙ b
What does this statement mean?
11/36
第4章 键盘输入和屏幕输出
7/36
4.1.1 字符常量(续)
在ASCII码取值范围内,对char型数据和int 型数据进行相互转换不会丢失信息,二者可以 进行混合运算。
同时,一个char型数据既能以字符型格式输 出,也能以整型格式输出,以整型格式输出时 就是直接输出其ASCII码的十进制值。
5和‘5’的区别???
8/36
表4-2函数printf()的格式转换说明
13/36
1.函数printf()的一般格式(续)
输出值参数表是需要输出的项的列表,输出数 据项可以是变量或表达式,输出值参数之间用 逗号分隔,其类型应与格式转换说明符相匹配 每个格式转换说明符和输出值参数表中的输出 值参数一一对应,没有输出值参数时,格式控 制字符串中不再需要格式转换说明符。
12 34↙
25/36
输入数据的格式控制——例4.4
#include <stdio.h> main() { int a, b;
scanf("%d ,%d", &a, &b); printf("a = %d, b = %d\n", a, b);
} 问题2:当限定用户输入数据以逗号为分隔符,即输入数据 格式为: 12,34↙ 时,应修改程序中的哪条语句?怎样修改?
26/36
输入数据的格式控制——例4.4
#include <stdio.h> main() { int a, 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); 时,用户应该如何输入数据?