今天我来介绍一个有关scanf函数知识点
一、scanf的返回值
对于很多c语言初学者来说,对于scanf的返回值是比较陌生的。
事实上,scanf函数是有返回值的。
返回的是scanf函数实际读取到的数据的个数!!!!!
让我们通过代码来理解。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
int get = scanf("%d%d", &a, &b);
printf("%d\n", get);
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
编译结果:
分析:我们定义了“get”来存储scanf函数的返回值。在编译过程中,我分别对a和b输入了100和200这两个数据,接着就打印get,a,b的值
当程序运行结束,我们看到get的值为2,而我们是输入了两个有效数据,二者是对应起来的。
让我们在看一组结果:
分析:程序在这次的运行 ,我分别对a和b输入了100和a,而我们在输入的数据要求是整形,a是字符型。所以“a”不是此次输入数据的有效值,从结果的get=1和b=20可以佐证这一点。
结论:scanf函数是有返回值的,返回值是代表scanf函数读取的有效数据的个数。读取失败返回的是EOF。
二、scanf返回值的用途
既然返回值是一个数值,那么我们可以利用这个返回值的特点做一个判断,用于这些程序的多次输入判断
以这个题为例:
描述:
据说智商140以上者称为天才,KiKi想知道他自己是不是天才,
请帮他编程判断。输入一个整数表示一个人的智商,如果大于等于140,则表明他是一个天才,输出“Genius”。
输入描述:
多组输入,每行输入包括一个整数表示的智商。
输出描述:
针对每行输入,输出“Genius”。
程序:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int iq = 0;
while (scanf("%d", &iq) != EOF) //多次输入,每一次都可以利用返回值的特点进行条件判断
{
if (iq >= 140)
{
printf("Genius");
}
}
return 0;
}
运行结果
分析:此程序用scanf的返回值是否有效作为whlie循环的判定条件,从而实现多次输入,多次判断。
这个题的解法有很多种,scanf函数的返回值用途也有很多,欢迎大神来开发与交流。
今日的分享就到这里,c语言小白一枚,博客有不足之外,还望各位斧正,感谢浏览!de