目录:
一、多组输入数据一定是循环
二、scanf函数的返回值是什么?
三、循环与scanf结合
详细:
一、多组输入数据一定是循环
先上例题:
从键盘输入的两个数的大小关系,请编程实现。
输入描述:
题目有多组输入数据,每一行输入两个整数(范围-231~231-1),用空格分隔。
输出描述:
针对每行输入,输出两个整数及其大小关系,数字和关系运算符之间没有空格,详见输入输出样例。
示例1:输入:1 1
输出:1=1
示例2:输入:1 0
输出:1>0
示例3:输入:0 1
输出:0<1
那有的同学就会想我直接:
int main() {
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
{
if (a > b)
printf("%d>%d\n", a, b);
else if (a < b)
printf("%d<%d\n", a, b);
else
printf("%d=%d\n", a, b);
}
return 0;
}
但真的对吗?
我只输入了一组数字就返回结果退出来了!!
题目可是多组输入数据
那我就必定需要运用到循环语句
二、scanf函数的返回值是什么?
在我们写此代码前,我们一定要知道是scanf函数返回的值是什么?scanf的返回值是实际读到的数据的个数 至于什么意思?老样子,上例子!
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("%d %d", a, b);
}
输入5 4 就能打印出5 4
输入5 4 0 也只能打印出5 4,
因为只能打印两个数,所以0是读取失败的当scanf读取失败的时候返回的是EOF
EOF的意思是 End of file 文件结束标志
这就是scanf的返回值是实际读到的数据的个数
三、循环与scanf结合
那我们就需要把scanf函数放在循环中例如while
while (scanf(“%d %d”, &a, &b==2)),因为我们要输入两个int值,所以 ==2
int main()
{
int a = 0;
int b = 0;
while (scanf("%d %d", &a, &b) == 2)
{
if (a > b)
printf("%d>%d\n", a, b);
else if (a < b)
printf("%d<%d\n", a, b);
else
printf("%d=%d\n", a, b);
}
return 0;
}
大家想退出的时候按ctrl+z 三次!!!
接下来我们在巩固一题:
据说智商140以上者称为天才,KiKi想知道他自己是不是天才,请帮他编程判断。输入一个整数表示一个人的智商,如果大于等于140,则表明他是一个天才,输出“Genius”。
输入描述:
多组输入,每行输入包括一个整数表示的智商。
输出描述:
针对每行输入,输出“Genius”。
示例1
输入:160
输出:Genius
while (scanf(“%d”, &iq) == 1),因为我们要输入1个int值,所以 ==1
int main()
{
int iq = 0;
while (scanf("%d", &iq) == 1)
{
if (iq >= 140)
printf("Genius\n");
}
return 0;
}