C语言中scanf(输入)和printf(输出)的用法详解

我们在学习C语言的过程中,会发现其实对于代码的逻辑和概念还是能听懂的,但是一旦上手实操起来就出现了种种问题,对于初学者来说最重要的就是打好基础,把输入和输出的用法学扎实,这样以后在敲代码的过程中才会更得心应手,关于输入和输出的细节,其实还是很多的,我将举例一部分内容如下:

(注:printf和scanf两个都在stdio.h的文件中)

一,printf(输入)语句的用法

printf() 的作⽤是将想要输出的内容输出到屏幕上,它名字⾥⾯的 f 代表 format (格式化),printf就是表示输入的意思。
printf("Hello World");

这条代码就是表示输出"Hello World"的代码,运行之后屏幕上会出现。

由于C语言比较原始,所以在输出的时候不会换行,我们需要在末尾添加换行符\n

 printf("Hello World\n");

这样就会在末尾进行换行了,说到这里的,我们提到了换行符,换行符是占位符的一部分,接下来我将列举一些占位符,如下:

• %a :⼗六进制浮点数,字⺟输出为⼩写。
• %A :⼗六进制浮点数,字⺟输出为⼤写。
• %c :字符。
• %d :⼗进制整数。
• %e :使⽤科学计数法的浮点数,指数部分的 e 为⼩写。
• %E :使⽤科学计数法的浮点数,指数部分的 E 为⼤写。
• %i :整数,基本等同于 %d 。
• %f :⼩数(包含 float 类型和 double 类型)。
• %g :6个有效数字的浮点数。整数部分⼀旦超过6位,就会⾃动转为科学计数法,指数部分的 e
为⼩写。
• %G :等同于 %g ,唯⼀的区别是指数部分的 E 为⼤写。
• %hd :⼗进制 short int 类型。
• %ho :⼋进制 short int 类型。
• %hx :⼗六进制 short int 类型。
• %hu :unsigned short int 类型。
• %ld :⼗进制 long int 类型。
• %lo :⼋进制 long int 类型。
• %lx :⼗六进制 long int 类型。
• %lu :unsigned long int 类型。
• %lld :⼗进制 long long int 类型。
• %llo :⼋进制 long long int 类型。
• %llx :⼗六进制 long long int 类型。
• %llu :unsigned long long int 类型。
• %Le :科学计数法表⽰的 long double 类型浮点数。
• %Lf :long double 类型浮点数。
• %n :已输出的字符串数量。该占位符本⾝不输出,只将值存储在指定变量之中。
• %o :⼋进制整数。
• %p :指针(⽤来打印地址)。
• %s :字符串。
• %u :⽆符号整数(unsigned int)。
• %x :⼗六进制整数。
• %zd : size_t 类型。
• %% :输出⼀个百分号。

当然了这些占位符需要我们在以后的编程过程中自己去慢慢的熟悉,现在一下都记住显然是有些不可能,随着代码学习的深入,我们慢慢就将这些占位符应用起来了,接下来我将举例几个我们平时比较常用的占位符,如下:

#include <stdio.h>
int main()
{
 printf("%5d\n", 123); // 输出为 " 123"
 return 0;
}

我们可以看到这里面所用到的占位符是%d,那么问题来了,为什么前面还要多一个数字5呢?这个数字5其实是位置,比如说我们现在输入123,那么它就会有五个格式来输入这个数,运行结果如下:

我们可以看到运行结果123的前面空出了两行,所以这个就是占位符前面加数字的作用!,那么这个时候问题又来了,现在的情况是右对齐,我们如果想左对齐怎么办呢?这个时候我们只需要在数字前面加一个负号(-)就行了,代码如下:

#include <stdio.h>
int main()
{
 printf("-%5d\n", 123); // 输出为 " 123"
 return 0;
}

我们看一下运行结果,如下:

我们可以看到,这个时候代码就已经左对齐了,其实后面还有2个空位,那么问题又来了,这个前面加数字的作用是什么呢?我们接下来说第二个占位符,%f,这个就是显示小数的,如果后面的格式不够,这个时候就会自动补上去,如下:

#include <stdio.h>
int main()
{
 printf("%12f\n", 123.8888857656564646);
 return 0;
}

这个输出的结果就是前十二位,运行结果就不在这里展示了

默认的情况下printf()不对+进行显示,而对-进行显示,所以如果想要输出负数,就要在d的前面加上负号。
#include <stdio.h>
int main()
{
 printf("%+d\n", 13); // 输出 +13
 printf("%+d\n", -13); // 输出 -13
 return 0;
}

 刚才我们说到的是将数字按照限制的位数进行输出,那么接下来我们说的就是限制小数点后的位数,如下:

#include <stdio.h>
int main()
{
 printf("Number is %.2f\n", 0.5);
 return 0;
}

这段代码的意思就是小数点后两位,当然我们举的这个例子里面不到两位。

以上我们学到了两种,一种是限制数字的长度,另一个是限制小数点后的位数,那么我们将他们两个结合起来怎么用呢,就是既限制它的长度,又限制它的宽度,如下:

// 输出为 " 0.50"
#include <stdio.h>
int main()
{
 printf("%6.2f\n", 0.5);
 return 0;
}

其中"%6.2f\n"的意思就是限制输出的数字长度是6个位,小数点后的位数是2个位。当然了,这两个限制长度的多少也可以用*来表示,如下:

#include <stdio.h>
int main()
{
 printf("%*.*f\n", 6, 2, 0.5);
 return 0;
}

它的结果等同于上一个代码的结果。

二丶scanf(输入)语句的用法

当我们定义了数值输出之后我们可以用printf函数给数值输出,这个时候我们就会想了,我给这个定义的数值变化一行,行不行?我先输入进去我想要输入的数值,然后再进行输出,这样该怎么办呢,这个时候出了一个心函数,就是我们要讲的,scanf函数,如下:

#include <stdio.h>
2
3 int main()
4 {
5 int score = 0;
6 printf("请输成绩:");
7 scanf("%d", &score);
8 printf("成绩是:%d\n", score);
9 return 0;
10 }

这个时候我们输入一个数字,运行后,电脑屏幕就输出来了。输出结果如下:

运行出来之后是这样,然后我们再继续输入数值回车,如下:

这个代码的结果就出来了,这个是什么原理呢,下面有一张结构图,我们再仔细理解一下:

对于scanf的基本原理现在已经掌握了,那么接下来就是对于scanf函数用法,scanf函数用来读取用的键盘输入,程序运行到这个语句的时候会停下来等待用户来输入,按下回车键后scanf函数就会处理刚才用户输入的内容,它的用法和printf相似,但是要注意,printf字符前没有&,如下:

1 scanf("%d", &i);

如果输入多个变量,如下:

scanf("%d%d%f%f", &i, &j, &x, &y);

scanf函数在处理数值占位符的时候,会自动过滤掉空白字符,包括空格,制表符,换行符等等,所以我们在输入的时候不影响解读scanf的数据,但是,scanf返回成功的话会出现变量数,如果失败了就会出现没有任何项的情况,或者匹配失败,返回0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值