工学C语言键盘输入与屏幕输出
C语言程序设计 键盘输入和屏幕输出(4.2.2)--4.1节和4.4节

【例4.1】从键盘输入一个大写英文字母,将其转换为小写字母后,再显示到屏幕上。
程序如下:1 2 3 4 5 6 7 8 9 10#include <stdio.h>main(){char ch;printf("Press a key and then press Enter:");ch = getchar(); /* 从键盘输入一个字符,按回车键结束输入,该字符被存入变量ch */ch = ch + 32; /* 将大写英文字母转换为小写英文字母 */putchar(ch); /* 在屏幕上显示变量ch中的字符 */putchar('\n'); /* 输出一个回车换行控制符 */}程序的运行结果如下:Press a key and then press Enter: B↙b【例题解析】在ASCII字符表中,小写英文字母与相应的大写英文字母的ASCII码值相差32。
根据这一规律,可实现大小写英文字母之间的转换。
【例4.2】从键盘输入一个大写英文字母,将其转换为小写英文字母后,将转换后的小写英文字母及其十进制的ASCII码值显示到屏幕上。
1 2 3 4 5 6 7 8 9#include <stdio.h>main(){char ch;printf("Press a key and then press Enter:");ch = getchar();ch = ch + 32;printf("%c, %d\n", ch, ch); /* 分别输出变量ch中的字符及其ASCII码值 */ }此程序的运行结果如下:Press a key and then press Enter: B↙b, 98【例题解析】字符型数据既可以用字符格式输出,也可以用整型格式输出,后者是输出其ASCII码的值。
第3章 键盘的输入与屏幕的输出讲解

/* I have 2 dogs and 4 cats.*/
2019/6/7
C语言大学实用教程课件 制作人倪芳英
13
printf格式字符
d 以带符号十进制整数输出 o 以八进制无符号整数输出(无前导0) x 以十六进制无符号整数输出(无前导0x) u 以十进制无符号整数输出 c 以字符形式输出单个字符 s 输出一个字符串 f 以小数形式输出浮点数(6位小数) e 以标准指数形式输出(6位小数) g 选用%f,%e中输出宽度较小的一种格式
2019/6/7
C语言大学实用教程课件 制作人倪芳英
11
3.4.2格式输入/输出
格式输出函数 – printf(格式控制字符串, 输出项表列); – 输出若干个任意类型的数据
printf("a=%d b=%f", a, b);
函数名
普通 字符
输 格式说明 出
表
列
2019/6/7
C语言大学实用教程课件 制作人倪芳英
向左端靠,右端补以空格
2019/6/7
C语言大学实用教程课件 制作人倪芳英
18
e格式符:以指数形式输出实数
– 数字部分小数位数为6位,指数部分占5列。
printf(”%e”,123.456);
则输出结果为:
1.234560e+002 所输出的实数共占13列
– g格式符:用来输出实数,根据数值的大小,自动选
}
2019/6/7
printf("printf WITH width and precision specifications:\n");
printf("%5.2f\n%6.1f\n%3.0f\n", f1, f2, f3); printf("%5d\n%6d\n%3d\n\n", n1, n2, n3);
第4章 键盘输入和屏幕输出

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 字符常量(续)
C语言输入和输出

(5)不同类型的整型数据之间的赋值都是采用“按存储单元 中的存储形式直接传送”的方式来进行的。例如:
unsigned a; int b=-1; a=b; printf(“a=%d,a=%u\n”,a,a); printf(“b=%d,b=%u\n”,b,b); 在整数为16位的计算机上,其显示结果为: a=-1, a=65535 b=-1,b=65535 这里: b 11 a
③ %ms:m为输出时字符串所占的列数。如果字符串的 长度(字符个数)大于m,则按字符串的本身长度输出, 否则,输出时,字符串向右对齐,左端补以“空格” 符。
④ %-ms:m的意义同上。如果字符串的长度小于m, 则输出时字符串向左对齐,右端补以“空格”符。
⑤ %m.nf:m为浮点型数据所占的总列数(包括小数 点),n为小数点后面的位数。如果数据的长度小于m, 则输出时向右对齐,左端补以“空格”符。
程序执行时按下列 格式输入数据: 10 2.5<CR> 那么,程序的输出 结果将如下所示: i=10,f=2.5
(1) printf函数中的“格式控制”字符串 中的每一个格式说明符,都必须与“输出表”中的 某一个变量相对应,例如,上述程序中的“%d”与 i对应,“%f”与f对应,而且格式说明符应当与其 所对应的变量的类型一致。
g,G: 选用%f或%e格式中输出宽度较短的一种格式,不输出无用的0。
s: 输出以'\0'结尾的字符串。 o和x格式输出的数值不带符号,符号位也作为八/十六进制数一起显示 出来(补码形式)。如:a=-1;printf("%o",a);在整数占16位的计算 机上,将显示:177777。这是由于-1补码是:1111111111111111
当用户输入ABCDEFG时,系统将把A赋给变量c,将C赋 给变量c1,将F赋给变量c2 。 char s[100], s1[200]; scanf("%2s%3s",s,s1) 当用户输入ABCDEFG时,系统将自动地把 AB赋给变量s,将CDE赋给变量s1。
Chapter Three键盘输入和屏幕输出

14
Chapter Three: Keyboard Input and Screen Output
constants variables readability identifier cout cin preprocessor directive output stream object comments the insertion operator the extraction operator increment and decrement operator a postfix operation a prefix operation precedence associativity parentheses the unary operator the binary operator mixed expression promotion widening static cast demotion narrowing manipulators member functions
11
Chapter Three: Keyboard Input and Screen Output
Single-character input and output
空白字符:Tab、Enter和空格键。 char ch; cin.get(ch); cout.put(ch); Ex: char ch; cin>>ch; (ignores whitespace characters (tabs, spaces, etc.) cin>>noskipws>>ch;(空白字符可读)
Case 1: Case 2:
Input: Yang
Output: hello Yang!
《c语言程序设计教学资料》第4章-键盘输入与屏幕输出

数据存储
将用户输入的数据存储在 适当的变量中,以便后续 处理或使用。
输入验证与错误处理
数据有效性检查
在处理用户输入之前,应验证输 入数据的合法性和有效性,例如 检查输入的数字是否在合理范围 内。
错误处理
当用户输入无效或出现错误时, 应采取适当的错误处理措施,例 如提示用户重新输入或给出错误 提示信息。
fgets函数
与gets函数类似,但不加锁,适用于多线 程环境。
Hale Waihona Puke 用于从文件读取一行字符串。
自定义输入输出函数
自定义输入函数
根据实际需求,编写自定义的输入函数,可以封装标准输入 函数或提供更方便的接口。
自定义输出函数
根据实际需求,编写自定义的输出函数,可以封装标准输出 函数或提供更丰富的功能。
感谢您的观看
错误处理与异常情况
输入错误处理
当用户输入的数据类型不正确或超出范围时,可以使用条件语句和循环结构进行 错误处理。
异常情况处理
在程序运行过程中可能出现异常情况,如数组越界、除数为零等,需要使用异常 处理机制来捕获并处理这些异常情况。
04
输入输出函数库
标准输入输出库函数
01
02
03
04
printf函数
02
屏幕输出
基本的输出函数
printf()
用于在控制台输出格式化 的文本。
puts()
用于输出一个字符串到控 制台。
disp()
用于在屏幕上显示一个变 量的值。
控制台输出格式化
使用格式说明符
例如,`%d`表示整数,`%f`表示浮点数,`%c`表示字符等。
输出宽度、精度和小数点
例如,`%5d`表示输出的整数宽度为5,`%.2f`表示浮点数输出保留 两位小数。
《C语言程序设计》 第4章 键盘输入与屏幕输出

可变长度输入 地址参数表
问题1:若未使用&,会怎样?
问题2:若格式字符写错,会怎样?
C语言程序设计
1346
第4章 键盘输入和屏幕输出
输入数据的格式控制——例
#include <stdio.h> int main(void) {
int a, b;
scanf("%d %d", &a, &bb); printf("a = %d, b = %d\n", a, b); return 0; } 问题:若程序第5行语句未使用&,结果会怎样?
return 0;
} 问题:如果用户输入的是123a,那么结果又会如何呢?
123a↙ a = 123, b = -858993460
C语言程序设计
2046
第4章 键盘输入和屏幕输出
输入数据的格式控制——例
#include <stdio.h> int main(void) {
int a, b;
格式字符串中的 普通字符原样输入
Example:
printf("Value is:%-10f", 32.6784728);
6 digits (default)
10 characters左对齐
C语言程序设计
946
第4章 键盘输入和屏幕输出
printf()的格式修饰符
显示精度.n 对浮点数表示输出n位小数 格式: %.nf
Example:
C语言程序设计
格式符%f与%lf
第4章 键盘输入和屏幕输出
调用scanf()输入数据时,通过地址指向变量
%f告诉编译器scanf()在该地址存储一个float型数 %lf告诉编译器scanf()在该地址存储一个double
C语言入门5-键盘的输入和屏幕输出

C语⾔⼊门5-键盘的输⼊和屏幕输出C程序中的键盘输⼊和屏幕输出都是通过调⽤输⼊/输出函数实现的。
⼀、数据的格式化屏幕输出函数printf()的⼀般格式(有两种)(1)第⼀种:printf(格式控制字符串);printf ( “请输⼊a的值” );(2)第⼆种printf(格式控制字符串,输出值时参数表);// 就是变量名字printf(“您输⼊的a的值是:%d”, a );格式控制字符串(format string)是⽤双引号括起来的字符串,也称转换控制字符串,输出值参数表可有多个输出值,也可没有(只输出⼀个字符串时)。
*** 格式控制字符串包括两部分:需原样输出的普通字符和格式转换说明(Format Specifier) %d %f %cprintf( “您输⼊的a的值是:%d”, a );如表4—2所⽰,格式转换说明有%开始,并以转换字符(Conversion Character)结束,⽤于指定各输出值参数的输出格式。
这⾥,下⾯两条语句的作⽤是等价的。
printf(“%c”,ch);putchar(ch);⽽下⾯两条语句的作⽤也是等价的。
printf(“\n”);putchar(‘\n’);⼆、数据的格式化键盘输⼊(1)函数scanf()的⼀般格式scanf(格式控制字符串,参数地址表);scanf (“%d”, &a);Scanf(“%d %d” , &a , &b)其中,格式控制字符串是⽤双引号括起来的字符串,它包括格式转换说明符和分隔符两个部分。
参数地址表是由若⼲变量的地址组成的列表,这些参数之间⽤逗号分隔。
函数scanf()要求必须指定⽤来接收数据的变量的地址,否则数据不能正确读⼊指定的内存单元。
必须有 & 符号 ****1. 1. 函数scanf()中的格式修饰符与prinf()类似,在函数scanf()的%和格式符中间也可插⼊格式修饰符。
在⽤函数scanf()输⼊数值型数据时,遇到以下⼏种情况都认为数据输⼊结束:(1)遇空格符,回车符,制表符(TAB)(2)达到输⼊域宽;(3)遇⾮法字符输⼊。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
格式 说明
可以输出若干任意类型的数据
2020/4/11
可选输 出表列
7/38
printf()格式字符
%c character以字符形式输出单个字符
%s string 输出一个字符串
%d decimal 以带符号十进制整数输出
%f float 以小数形式输出浮点数(6位小数)
%e exponent 以标准指数形式输出(6位小数)
10/38
printf()的格式修饰符
Format for float: %f
General format:
%[<最小域宽> . <小数位数>]f
Example:
printf("Value is:%10.4f", 32.6784728);
4 digits
Value is: 32.6785 10 characters
第4章 键盘输入 和屏幕输出
哈尔滨工业大学 计算机科学与技术学院
苏小红
输出函数putchar() 字符输入函数getchar() 数据的格式化输出函数printf() 数据的格式化输入函数scanf()
2020/4/11
2/38
2020/4/11
16/38
scanf ()的格式修饰符
m 表示数据占用的宽度 l 加在d、o、x、u前:输入长整型
加在f、e 前:输入双精度型 L 加在f、e 前:输入long double型 h 加在d、o、x 前:输入短整型 * 本输入项在读入后不赋给相应的变量
2020/4/11
17/38
输入数据的格式控制
Press a key and then press Enter: B↙ b
2020/4/11
What does this statement mean?
6/38
4.2数据的格式化屏幕输出
格式
printf(格式控制字符串, 输出项表列); printf("a=%d b=%f", a, b);
函数名
14/38
4.3数据的格式化键盘输入
格式
scanf(格式控制字符串, 地址表列); scanf("%d,%f", &a, &b);
2020/4/11
15/38
scanf()的格式字符
c 以字符形式输入单个字符 s 输入字符串,以非空字符开始,遇第一个
空白字符结束 d 以带符号十进制形式输入整型数据 f 以小数形式输入浮点数 e 以标准指数形式输入 o 以八进制无符号形式输入(无前导0) x 以十六进制无符号形式输入(无前导0x)
4.1单个字符的输入输出
通过调用标准库函数来实现
#include <stdio.h>
字符输出函数
– putchar(ch) – 输出一个字符ch 字符输入函数
– getchar()
– 无参数
– 函数值为从输入设备接收的字符
2020/4/11
5/38
【例4.1】大小写英文字母转换
ch = ch - ('a' – 'A');
2020/4/11
9/38
m
n l L -
2020/4/11
printf()的格式修饰符
表示数据占用的最小宽度 数据宽度大于m,按实际宽度输出 数据宽度小于m时,补空格 对实数表示输出n位小数 对字符串表示最多输出的字符个数 长整型整数,加在d、o、x、u前 long double型数,加在f、e、g前 改变输出内容的对齐方式 默认为右对齐
2020/4/11
11/38
printf()的格式修饰符
Example:
printf("Value is:%10f", 32.6784728);
6 digits (default) Value is: 32.678473
10 characters
2020/4/11
12/38
printf()的格式修饰符
a=12, b=56, a+b = 68
#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'是字符常量,而a则是一个标识符 – '3'表示一个字符常量,而3则表示一个整数
转义字符(Escape Character) – 一些特殊字符(无法从键盘输入或者另有他用)用
转义字符表示
2020/4/11
3/38
字符常量
字符型变量的取值范围取决于计算机系统所使用的字符集 – ASCII(美国标准信息交换码)字符集 – 规定了每个字符所对应的编码
Example:
printf("Value is:%.3f", 32.6784728);
3 digits Value is:32.678
2020/4/11
13/38
【例4.3】计算圆的周长和面积
2020/4/11
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
%g
选用%f,%e中输出宽度较小的一种格式
%o octal 以八进制无符号整数输出(无前导0)
%x hex
以十六进制无符号整数输出(无前导0x)
%u unsigned 以十进制无符号整数输出
2020/4/11
8/38
【例4.2】大小写英文字母转换
Press a key and then press Enter: B↙ b, 98
一个字符以其对应的ASCII码的二进制形式存储在内存中 – 一个字节,保存一个字符(英文字母、数字、符号)
字符常数就是一个普通整数,也可参与各种数学运算 – 每个字符具有一个0~255之间的数值,可从ASCII表查出 – 注意:'5'和整数5的区别
'5'的ASCII码值是53
2020/4/11
4/38