printf与scanf语句讲解

printf()用法

printf == print format 表示打印格式

printf()作用是把双引号里面参数打印出来
上代码

printf("hello world");

printf与scanf语句讲解_第1张图片看这就是上面的打印结果
scanf()这个语句输出后自动换行(这里咱们先知道一下,下面会讲)
printf()不会输出后在屏幕中换行,如果我们想要换行可以在末尾加\n(换行符)

printf(“hello world\n”);

看下面打印结果画横线的地方就换行了
printf与scanf语句讲解_第2张图片

printf("hello\nworld\n");

上面代码写的作用可以把hello打印成一行,world打印一行,
printf与scanf语句讲解_第3张图片
要用到printf()语句,我们要在上面加上#include,因为printf()语句是标准库的头文件stdio.h定义的,调用函数就要用到头文件。

占位符

占位符有 %d %f %s %c等等我们就讲这些常用到的

	printf("%d\n",4);
	printf("%f\n",5,2);
	printf("%s\n","hello");
	printf("%c",'w');

printf与scanf语句讲解_第4张图片
大家看完代码和输出结果相信就会理解了。
占位符就是这个位置可以被其他值代入入

printf("there is %d",3);//这里的3就代入了前面的%d

%d表示代入整型
%f表示代入浮点型
%s表示代入字符串
%c表示代入字符

printf与scanf语句讲解_第5张图片
看上面图片我们可以得知占位符是和后面的数据一 一对应的,占位符也是可以输入多个的。

printf()允许占位符限定的最小宽度(***最小是重点)

例如

printf("%5d",123);

printf与scanf语句讲解_第6张图片

%5d表示的是一共占5的空格,打印结果看不好,它是 (空格空格123)一共占五个。
那%3毋庸置疑就是占三个直接打印123
数据不够宽度默认向前补零(右对齐),这时就是小伙伴好奇了,不能向后补零(左对齐)吗!我的回答是当然可以!只需要在%d前加上-号

printf("-%5d",123);
printf("lll")//我们在后面加上这个打印结果能清晰的看出

printf与scanf语句讲解_第7张图片
注意:printf()语句占位符限定的时最小宽度
例如:123456,超出%5d这个最小宽度,会全部打印

printf("%5d",123456);

printf与scanf语句讲解_第8张图片

printf()语句中对+ -号的输出

printf("%d",+1);
printf("%d",-1);

printf与scanf语句讲解_第9张图片
printf()中的+1是不会显示出来的,只需要在%d中间加上+,在输出的-号的时候也可以加,输出结果不会改变

printf("%+d",+1);
printf("%+d",-1);

printf与scanf语句讲解_第10张图片

限定小数的位数
printf("%.2f",2.0f);

printf与scanf语句讲解_第11张图片
很简单吧,跟上面%d限定整数宽度一样是几就是几的宽度,记得数子前加.
浮点型默认小数点保留是六位,上面%.2f就是保留两位小数

可以这么写
printf("%5.2f",0.5);

printf与scanf语句讲解_第12张图片
记住小数点前面的数字是整体数值的宽度,小数点后面的数字是小数点的宽度或是位数

最小宽度和小数点位数可以用*号传递
printf("%*.*f\n",6,2,0.5);//和上面输出结果一致

printf与scanf语句讲解_第13张图片

输出部分字符串

printf(“%.2s”,"hello";//保留的前俩字母

printf与scanf语句讲解_第14张图片

scanf()语句

scanf()用于用户键盘的输入,然后把输入值存到变量
程序运行到这个语句会停下来,等待用户的输入,把输入的数据放到缓存中,等到用户按下回车,才会执行。

int a = 0;
scanf("%d",&a);//这里是输入a的值
printf("%d",a);//输出

printf与scanf语句讲解_第15张图片

注意

scanf()语句解读用户输入时,会从上一次解读遗留的第一个字符开始或者遇到第一个不符合条件的字符开始。这句话怎么解读来看一个例子

//我们来输入" -3.1445e12# 0"
int a = 0;
float f1 = 0.0f;
scanf("%d",&a);
scanf("%f",&f1);
printf("%d\n", a);
printf("%f\n", f1);

printf与scanf语句讲解_第16张图片
这时小伙伴肯定懵了吧,what?输入一个数据怎么会能输出俩个结果
咱们先来对这代码来对上面的话解读

第一个输出是3,因为第一个scanf(“%d”,&a);

中%d是代入的是整型的结果,下面的输出会打印-3,接下来第二个scanf()语句会从上一个遗留下来的字符开始解读或是上一个不符合条件的第一个字符,就是从小数点开始到#号结束,因为第二个scanf语句中有%f,
它就会解读浮点型到#结束,也就会变成0.1445e12,那同学就有疑问了
你这和打印结果不同啊,是因为e12表示10的12次方,屏幕上的e12*到了0.1445上,就变成了打印结果的样子。
同学们是不是恍然大悟!!!

scanf()语句也是有返回值的,它的返回值是它成功读取变量的个数

int a = 0;
float b = 0.0f;
int r = scanf("%d%f",&a,&b);
printf("r=%d",r)

printf与scanf语句讲解_第17张图片

如果没有读取任何项,或者匹配失败,则返回 0 。如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量 EOF。
还是一样上代码理解

int a = 0;
float b = 0.0f;
int r = scanf("%d%f",&a,&b);
printf("r=%d",r)

printf与scanf语句讲解_第18张图片
按俩次ctrl+z 出现r=1,表示成功读取一个变量ctrl+z结束退出,为什么是俩次呢,是因为vs编译器的问题,有些编译器是一次就可以。
然后按三次
printf与scanf语句讲解_第19张图片
这里就是-1
在看一下下面的话
printf与scanf语句讲解_第20张图片
E0F就是-1

在这里插入图片描述

scanf()会忽略空白字符的

什么叫空白字符就是在打印输入的时候输入看不见的字符,这种说法就很简单易懂了吧。

除了%c不会忽略空白字符

char a = 0;
	scanf("%c", &a);
	printf("%c", a);
	

printf与scanf语句讲解_第21张图片在这里插入图片描述
!](https://img-blog.csdnimg.cn/fba97db5c3714192a1b365d5021a0901.png)
这里输出的就是空格,不会忽略空白字符,(字符只占1位)

如何能让%c忽略空白字符

前面加上空白字符

char a = 0;
	scanf("% c", &a);//%c前加了空格
	printf("%c", a);

printf与scanf语句讲解_第22张图片
多个空格也是可以
printf与scanf语句讲解_第23张图片

赋值忽略符%*

printf与scanf语句讲解_第24张图片
###双引号里的格式要与打印输入格式相同否则出现下面情况

printf与scanf语句讲解_第25张图片
##也可以用*号解决,就不用按双引号的格式

int score = 0;
	int number = 0;
	scanf("%d%c*%d", &score, &number);
	printf("%d %d", score, number);

printf与scanf语句讲解_第26张图片
分开

printf与scanf语句讲解_第27张图片

分开

printf与scanf语句讲解_第28张图片
注意这个%*d格式要写出,不然会出现上面

你可能感兴趣的:(c语言,笔记)