赞
踩
printf()作用是把双引号里面参数打印出来
上代码
printf("hello world");
看这就是上面的打印结果
scanf()这个语句输出后自动换行(这里咱们先知道一下,下面会讲)
printf()不会输出后在屏幕中换行,如果我们想要换行可以在末尾加\n(换行符)
printf(“hello world\n”);
看下面打印结果画横线的地方就换行了
printf("hello\nworld\n");
上面代码写的作用可以把hello打印成一行,world打印一行,
要用到printf()语句,我们要在上面加上#include<stdio.h>,因为printf()语句是标准库的头文件stdio.h定义的,调用函数就要用到头文件。
printf("%d\n",4);
printf("%f\n",5,2);
printf("%s\n","hello");
printf("%c",'w');
大家看完代码和输出结果相信就会理解了。
占位符就是这个位置可以被其他值代入入
printf("there is %d",3);//这里的3就代入了前面的%d
%d表示代入整型
%f表示代入浮点型
%s表示代入字符串
%c表示代入字符
看上面图片我们可以得知占位符是和后面的数据一 一对应的,占位符也是可以输入多个的。
例如
printf("%5d",123);
%5d表示的是一共占5的空格,打印结果看不好,它是 (空格空格123)一共占五个。
那%3毋庸置疑就是占三个直接打印123
数据不够宽度默认向前补零(右对齐),这时就是小伙伴好奇了,不能向后补零(左对齐)吗!我的回答是当然可以!只需要在%d前加上-号
printf("-%5d",123);
printf("lll")//我们在后面加上这个打印结果能清晰的看出
注意:printf()语句占位符限定的时最小宽度
例如:123456,超出%5d这个最小宽度,会全部打印
printf("%5d",123456);
printf("%d",+1);
printf("%d",-1);
printf()中的+1是不会显示出来的,只需要在%d中间加上+,在输出的-号的时候也可以加,输出结果不会改变
printf("%+d",+1);
printf("%+d",-1);
printf("%.2f",2.0f);
很简单吧,跟上面%d限定整数宽度一样是几就是几的宽度,记得数子前加.
浮点型默认小数点保留是六位,上面%.2f就是保留两位小数
printf("%5.2f",0.5);
记住小数点前面的数字是整体数值的宽度,小数点后面的数字是小数点的宽度或是位数
printf("%*.*f\n",6,2,0.5);//和上面输出结果一致
printf(“%.2s”,"hello");//保留的前俩字母
scanf()用于用户键盘的输入,然后把输入值存到变量
程序运行到这个语句会停下来,等待用户的输入,把输入的数据放到缓存中,等到用户按下回车,才会执行。
int a = 0;
scanf("%d",&a);//这里是输入a的值
printf("%d",a);//输出
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);
这时小伙伴肯定懵了吧,what?输入一个数据怎么会能输出俩个结果
咱们先来对这代码来对上面的话解读
中%d是代入的是整型的结果,下面的输出会打印-3,接下来第二个scanf()语句会从上一个遗留下来的字符开始解读或是上一个不符合条件的第一个字符,就是从小数点开始到#号结束,因为第二个scanf语句中有%f,
它就会解读浮点型到#结束,也就会变成0.1445e12,那同学就有疑问了
你这和打印结果不同啊,是因为e12表示10的12次方,屏幕上的e12*到了0.1445上,就变成了打印结果的样子。
同学们是不是恍然大悟!!!
int a = 0;
float b = 0.0f;
int r = scanf("%d%f",&a,&b);
printf("r=%d",r)
如果没有读取任何项,或者匹配失败,则返回 0 。如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量 EOF。
还是一样上代码理解
int a = 0;
float b = 0.0f;
int r = scanf("%d%f",&a,&b);
printf("r=%d",r)
按俩次ctrl+z 出现r=1,表示成功读取一个变量ctrl+z结束退出,为什么是俩次呢,是因为vs编译器的问题,有些编译器是一次就可以。
然后按三次
这里就是-1
在看一下下面的话
E0F就是-1
char a = 0;
scanf("%c", &a);
printf("%c", a);
在这里插入图片描述
!](https://img-blog.csdnimg.cn/fba97db5c3714192a1b365d5021a0901.png)
这里输出的就是空格,不会忽略空白字符,(字符只占1位)
前面加上空白字符
char a = 0;
scanf("% c", &a);//%c前加了空格
printf("%c", a);
多个空格也是可以
###双引号里的格式要与打印输入格式相同否则出现下面情况
##也可以用*号解决,就不用按双引号的格式
int score = 0;
int number = 0;
scanf("%d%c*%d", &score, &number);
printf("%d %d", score, number);
分开
分开
注意这个%*d格式要写出,不然会出现上面
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。