printf、scanf

一、prinf()

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

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

3、printf()格式修饰符

4、数据显示例子

二、scanf()

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

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

3、输入数据时长需要注意的问题

一、printf()
1.函数printf()的一般格式
printf(格式控制字符串);
printf(格式控制字符串,输出值参数表);

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

格式转换说明用法
%d输出带符号的十进制整数,正数符号省略
%u以无符号的十进制整数形式输出
%o以无符号的把精致整数形式输出,不输出前导符0
%x以无符号十六进制整数形式(小写)输出,不输出前导符0x
%X以无符号十六进制整数形式(大写)输出,不输出前导符0X
%c输出一个字符
%s输出字符串
%f以十进制小数形式输出实数(包括单,双精度),整数部分全部输出,隐含输出6位小数,输出的数字并非全部时有效数字,单精度实数的有效位数一般为7位,双精度实数的有效位数一般为16位。 %f适合输出向3.14这样的小数位较少的实数,可以是实数输出的宽度较小。
%e以指数形式(小写e表示指数部分)输出实数,要求小数点前必须有且仅有1位非零数字。
%E以指数形式(大写E表示指数部分)输出实数
%g自动选取f或e格式中输出宽度较小的一种使用,且不输出无意义的0
%%输出百分号%

3.printf()格式修饰符
在函数printf()的格式说明中,还可以在%和格式符之间插入如下表所示的格式修饰符,用于对输出格式进行微调,如指定输出数据域宽(Field of Width) 、显示精度(小数点后现实的小数位数)、左对齐等。

格式修饰符用法
英文字母 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的整数)精度修饰符位于最小域宽修饰符之后,由一个圆点及以后的整数构成。对于浮点数,用于指定输出的浮点数小数位数。对于字符串,用于指定从字符串左侧开始截取的子串字符个数

4.数据显示例子
在这里插入图片描述

在这里插入图片描述

#include <stdio.h>

int 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);
	return 0;
 } 

程序第11行没有使用宽域和精度说明符即按%f格式输出实型数据,这是除非特别指定,否则隐含输出6位小数。程序第13行,使用宽域和精度说明符即按%7.2f格式输出实行数据,这里%7.2f表示输出数据所占的域宽为7,显示的精度为2。域宽为7表示输出数据占7个字符,2表示小数点后由两位(小数点也算1位),
在这里插入图片描述
二、scanf()
1.函数scanf()的一般格式
scanf(格式控制字符串,参数地址表);
其中,格式控制字符串是用双引号括起来的字符串,它包括格式转换说明符和分隔符两个部分。函数scanf()的格式转换说明符通常用%开始,并以一个格式字符结束用于指定各参数的输入格式。

格式转换说明符用法
%d输入十进制整数
%o输入八进制整数
%x输入十六进制整数
%c输入一个字符,空白字符(包括空格、回车、制表符)也作为有效字符输入
%s输入字符串,遇到空白字符(包括空格、回车、制表符)时,系统认为读入结束(但在开始之前遇到的空白字符会被系统跳过)
%f或%e输入实数,以小数或指数形式输入均可
%%输入一个百分号

在这里插入图片描述
参数地址表是由若干变量的地址组成的列表,这些参数之间用逗号隔开。函数scanf()要求必须指定用来接收数据的变量的地址,斗则数据不能正确读入指定的内存单元。

2.函数scanf()中的格式修饰符:

格式修饰符用法
英文字母l加在格式符 d、o、x、u之前,用于输入long型数据;加在格式符f、e之前,用于输入double型数据
英文字母L加在格式符f、e之前,用于输入long double型数据
英文字母h加在格式符d、o、x之前,用于输入short型数据
域宽m(正整数)指定输入数据的宽度(列数),系统自动按此宽度截取所需数据
显示精度 .n(0或正整数)scanf()没有精度修饰符,即用scanf()输入实型数据时不能规定精度
忽略输入修饰符表示对应的输入项在读入后不赋给相应的变量

在用函数scanf()输入数值型数据时,遇到以下几种情况都认为数据输入结束:
(1).遇空格符、回车符、制表符(Tab);
(2).达到输入域宽;
(3).遇到非法字符输入。

3.输入数据时长需要注意的问题:
例题:
在这里插入图片描述

#include <stdio.h>

int main()
{
	int a=0,b=0;
	int c,d;
	printf("---------存在空格----------- \n");
	scanf("%d %d",&a,&b);
	printf("a=%d,b=%d\n",a,b);
	printf("---------存在逗号-----------\n");
	scanf("%d,%d",&a,&b);
	printf("a=%d,b=%d\n",a,b);

	printf("---------使用任意字符用于间隔-----------\n");
	scanf("%d%*c%d",&a,&b);
	printf("a=%d,b=%d\n",a,b);
	printf("---------什么都不存在-----------\n");
	scanf("%2d %2d",&a,&b);
	printf("a=%d,b=%d\n",a,b);
	
	return 0;
 } 
 

在这里插入图片描述

 
#include <stdio.h>

int main()
{
	int a=0,b=0;
	int c,d;
	printf("---------存在赋值-----------\n");
	scanf("c=%dd=%d",&c,&d);
	printf("c=%d,d=%d\n",c,d);

	return 0;
 } 
 
 

在这里插入图片描述

#include <stdio.h>

int main()
{
	int a=0,b=0;
	int c,d;
	printf("---------输出带引号-----------\n");
	scanf("c=%2d d=%2d",&c,&d);
	printf("c=%d,d=\"%d\"\n",c,d);
	return 0;
 } 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值