02.C语言学习【零基础版】@CHX------scanf函数

b193bab75bdb4e10ba8dfa3d23fe5cfd.png


 一.Scanf函数

当创建一个变量时,给变量输入值可用Scanf函数,其作用为读取用户的键盘输入,输入数据后,按下回车,Scanf函数就回处理输入的数据,并将数据存入变量。

注:使用前仍需包括头文件stdio.h

代码:

#include <stdio.h>
int main()
{	
	int score;
	printf("小明的数学成绩是:");
	scanf("%d", &score);
	printf("数学成绩是:%d\n",score);
	return 0;
}

运行结果:

17b661ffecf14359887ab639533dc107.png

二.Scanf函数格式

 scanf("%d",&score)

第一个参数:格式字符串,用来放占位符,其里面有多少个占位符,就有多少个变量

%:占位符的标志

d:表示整数

score::将输入键盘的整数存入变量score中

注:①变量前面必须加上&【指针变量除外】

       ②scanf函数传递的不是值,而是地址,即将变量的地址指向输入的值

三.Scanf函数的使用

1.对比printf输出格式:

代码:

代码1
#include <stdio.h>
int main()
{	
	int a,b,c,d;
	scanf("%d%d%d%d", &a,&b,&c,&d);
	printf("%d%d%d%d\n",a,b,c,d);
	return 0;
}
代码2
#include <stdio.h>
int main()
{	
	int a,b,c,d;
	scanf("%d%d%d%d", &a,&b,&c,&d);
	printf("%d %d %d %d\n",a,b,c,d);
	return 0;
}

运行结果1

20d018d0095f4aee96bf7ce896ad15d0.png

 运行结果2:

8212af9824ff44729cd9bedaab4b5977.png

2.对比scanf函数输入格式

1389230fad7147daba40a8ed44f457c7.png 852e283a800d482d9c066429e505c7ee.png

5a94cb2e488c42aa844cc853588f2749.png 错误输入: 

此时只读取到一个整形数据212223,此时程序还在等待输入另外三个数据,所以不会输出

2987de78f5d24207a0601a2f96e202c8.png 总结 :

scanf函数在处理输入数据的占位符时,会自动过滤掉空白字符,如空格,制表符,换行符等

代码:

#include <stdio.h>
int main()
{	
	int a;
	float b;
	scanf("%d%f", &a,&b);
	printf("%d %f\n",a,b);
	return 0;
}

运行结果:

输入数据为45.2896,函数先读取第一个数据为整数,即45,接着从小数点开始读取浮点数类型数据

b47a042620144a05a0a2a9c4c02767dd.png

0bee5a41529c46acbca617d8ca4077ce.png-107374176.000000是一个未初始化的随机值  

0b4cb2ad2acf4347bfdf436cd5e6a756.png

71329701e807413587db5682e96ed47b.png

注:

scanf将字符串读入字符数组时,不会检测字符串是否超过数组长度

指定读入字符串的长度:%【数字】s,该数字表示读取字符串的最大长度,后面的将被丢弃

#include <stdio.h>
int main()
{	
	char a[11];
	scanf("%10s", a);
	printf("%s\n",a);
	return 0;
}

 运行结果:大家自己总结哦!

d932e5b479ca4b12a4f09d766d1dca1b.png

f81d1cea8cc045bf9918a0ac6f21a3f0.png1fe20c35b72642b6abd3f86ebff31674.png 

四.赋值忽略符

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d-%d--%d", &a,&b,&c);
	printf("%d %d %d\n", a,b,c);
	return 0;
}

运行结果:对比可发现我们必须按照固定格式输入才可以输出所有数据 

 

为了避免上述情况可以使用复制忽略符:*

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d%*c%d%*c%d", &a,&b,&c);
	printf("%d %d %d\n", a,b,c);
	return 0;
}

运行结果: 即便此时加上/也可以正确输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值