1.scanf 的格式化输入
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m,n,q;
scanf("m=%dn=%dq=%d",&m,&n,&q);
printf("%d %d %d",m,n,q);
}
对于本程序,要想得到 1 2 3
则应该输入的内容是
A : m=1n=2q=3
B : m=1 n=2 q=3
C : m=1,n=2,q=3
D : 1 2 3
正确答案是 A
当没有空格的时候要严格按格式输入,不能多东西
2.对问题一的变式理解
当程序改为
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m,n,q;
scanf("m=%d n=%d q=%d",&m,&n,&q);
printf("%d %d %d",m,n,q);
}
当这样改之后 A,B 就都是正确答案了,要注意sacnf内的格式
总结1,2就是,只能少空格,不能多符号和空格
3.对scanf返回值的理解
scanf 返回值是一个很神奇的东西,它可以返回输入正确的类型的个数
例如
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m,n,q;
cout<<scanf("%d %d %d",&m,&n,&q);
}
当输入1 2 3
输出值是 3
当输入1 2 c
输出值是 2
当输入1 c d
输出值是 1
当输入b c d
输出值是 0
可以用这个性质来判断输入的类型是否合法
scanf 返回值还可以用来多组输入
while(scanf("%d",&a)!=EOF)
{
}
这里EOF是 -1 ,只要有数据输入不管类型是否合法都返回非负数,故可以多组输入
当有多组输入时,以 Ctrl+z 结束输入
2022.5.26 Ashy