键盘输入和屏幕输出

本文介绍了C语言中字符的输入输出,包括字符常量、转义字符的概念,以及getchar()和putchar()函数的使用。同时,详细讲解了printf()函数的格式控制字符串和格式修饰符,以及scanf()函数的格式转换说明和格式修饰符,强调了数据格式化在屏幕输出和键盘输入中的应用。
摘要由CSDN通过智能技术生成

一、单个字符的输入输出

(一)、字符常量

1、定义:用单引号括起来的一个字符。例如:‘a’是字符常量,而a则是标识符。

2、转义字符:即以反斜线开头的字符序列来描述特定的控制字符。

常见的转义字符如下表:

常用的转义字符

字符

含义

' \n '

' \r '

' \o '

' \t '

' \v '

' \b '

' \f '

' \a '

' \" '

' \' '

' \\ '

' \? '

' \ddd '

' \xhh '

换行

回车

空字符,通常用作字符串结束标志

水平制表(相当于按下tab键

垂直制表

退格

走纸换页

响铃报警提示音

一个双引号

单引号

一个反斜线

问号

1到3位八进制ASCII码值所代表的字符

1到2位十六进制ASCII码值所代表的字符

每次按下tab键,并不是从当前光标位置向后移动一个tab宽度,而是移动到下一个制表位,实际移动的宽度视当前光标位置距相邻的下一个制表位的距离而定。

注:当转义序列出现在字符串中时,是按照单个字符计数的。例如:字符串“abc\n”的长度是4,而非5,“\n”是一个字符。

(二)、字符的输入输出

getchar() 和putchar()是C标准函数库中专门用于字符输入和输出的函数。

函数putchar()的作用是把一个字符输出到屏幕的当前光标位置;而getchar()的作用是从键盘读取字符。

#include<stdio.h>
int main()
{
	char ch;
	printf("Press a key and then press Enter:");
	ch=getchar();
	ch=ch+32;//将大写转换为小写
	putchar(ch);//在屏幕上显示ch中的字符 
	putchar('\n');//输出一个回车换行控制符 
	return 0;
}

注意:函数getchar()没有参数,函数的返回值就是从终端键盘读入的字符。

二、数据的格式化屏幕输出

(一)、函数printf()的一般格式

printf(格式控制字符串);printf(格式控制字符串,输出值参数表);

格式控制字符串是用双引号括起来的字符串,也称为转换控制字符串,输出值参数表中可有多个输出值,也可以没有

1、格式控制字符串:

        (1)、格式转换说明:由%开始,并以转换字符结束,用于指定各输出值参数的输出格式

        (2)、需原样输出的普通字符

函数printf()的格式转换说明

%d

输出带符号的十进制整数,正数的符号省略
%u以无符号的十进制整数形式输出
%o以无符号的八进制整数形式输出,不输出前导符0
%x以无符号十六进制整数形式(小写)输出,不输出前导符0x
%X

以无符号十六进制整数形式(大写)输出,不输出前导符0x

%c输出一个字符
%s

输出字符串

%f

以十进制小数形式输出实数(包括单、双精度),整数部分全部输出,隐含输出6位小数,输出的数字并非都是有效数字,单精度实数的有效位数一般是7位,双精度一般是16位。

%f适合于输出像3.14这样的小数位较少的实数,可以使实数的输出的宽度较小

%e

以指数形式(小写e代表指数部分)输出实数,要求小数点前必须有且仅有一位非零数字。

%e适合于输出像1.0e+10这样的小数位较多的实数,可以使实数输出的宽度较小

%E以指数形式(大写e代表指数部分)输出实数
%g自动选取f或e格式中输出宽度较小的一种使用,且不输出无意义的0
%%输出%

(二)、函数printf()中的格式修饰符

在printf()的格式说明中,还可在%和格式符中间插入下表的格式修饰符,用于对输出数据进行微调,如:指定输出数据域宽、显示精度、左对齐等

函数printf()的格式修饰符
格式修饰符用法
l修饰格式符d,o,x,u时,用于输出long 类型
L修饰格式符f,e,g时,用于输出long double类型
h修饰格式符d,o,x时,用于输出short类型

输出域宽m

(m为整数)

指定输出项所占的列数。

若m为正整数,当输出数据宽度小于m时,在域内向右靠齐,左边多余位补空格;当输出数据大于m时,按实际宽度全部输出;若m有前导符0,则左边多余位补0。

若m为负整数,则输出数据在域内向左靠齐。

显示精度  .n

(n为大于等于0的整数)

精度修饰符位于最小域宽修饰符之后,由一个圆点及其后的整数构成。

对于浮点数,用于指定输出的浮点数的小数位数。

对于字符串,用于指定从字符串左侧开始截取的子串字符串个数。

注:输出long long 类型的数据用%164d(注意是大写的I,不是数字1).

#include<stdio.h>
int main()
{
	const double Pi=3.14159;
	float r;
	double S,C;
	printf("请输入半径r:");
	scanf("%f",&r);
	printf("S=%7.2f,C=%7.2f",Pi*r*r,2*r*Pi);
	return 0; 
 } 

 

这里%7.2f表示输出数据所占的域宽为7(输出数据占7个字符宽度),显示的精度为2(保留两位小数),小数点也会占一个字符位置

在88.25和33.30前有个空格。

如果改为%7.0f,则输出将变为

 

 在88和33前有个空格。

三、数据的格式化键盘输入

(一)、函数scanf()的一般格式

scanf(格式控制字符串,参数地址表);

​​​​​​格式控制字符串是用双引号括起来的字符串,它包括格式转换说明符分隔符两个部分。

函数scanf()的格式转换说明

%d

输入十进制整数
%o输入八进制整数
%x输入十六进制整数
%c输入一个字符,空白字符(包括空格、回车、制表符)也作为有效字符输入
%s

输入字符串,遇到空白字符(空格、回车、制表符)时,系统认为读入结束(但在开始读之前遇到的空白字符会被系统跳过)

%f和%e

输入实数,以小数或指数形式输入均可

%%输入一个%

参数地址表是由若干变量的地址组成的列表,这些参数之间用逗号隔开。 

(二)、函数scanf()中的格式修饰符

函数scanf()的格式修饰符
格式修饰符用法
l放在d,o,x,u之前时,用于输入long 类型;放在f、e之前时,用于输入double类型
L修饰格式符f,e时,用于输入long double类型
h修饰格式符d,o,x时,用于输入short类型

域宽m

(m为整数)

指定输入项所占的列数,系统自动按此宽度截取数据

显示精度  .n

(n为大于等于0的整数)

scanf()没有精度修饰符,即用scanf()输入实型数据时不能规定精度

忽略输入修饰符*表示对应的输入项在读入后不赋给相应的变量

 在遇到以下几种情况时,认为数据输入结束:

(1)、遇到空格符、回车符、制表符;

(2)、达到输入域宽;

(3)、遇到非法字符输入。

注意:如果scanf()函数中的格式控制字符串中存在除格式说明符以外的其他字符,那么这些字符必须在输入数据时由用户从键盘原样输入。参数地址表一定要记得加上"&"。

例题:

例一:写一个程序,将接收的摄氏温度转换为对应的华氏温度。程序应显示如下的提示信息:
       Please input cels:     
然后输入一个十进制数并回车,然后程序以合适的消息形式输出转换后的华氏温度。
程序使用如下的公式完成转换:fahr=9/5*cels+32
**输入格式要求:"%lf" 提示信息:"Please input cels: "
**输出格式要求:"The fahr is: %.2f"

程序运行结果示例:
Please input cels: 32
The fahr is: 89.60
#include<stdio.h>
int main()
{
	int cels;
	float fahr;
	printf("Please input cels: ");
	scanf("%d",&cels);
	fahr=9.0/5*cels+32;
	printf("The fahr is: %.2f",fahr);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值