多组输入常用方法
(一)没有明确指出输入什么时候结束如果是这种情况,我们默认是以“文件结束”(EOF)为结束标。ACM默认规矩。 c语言中有一个标准输入函数,即:scanf函数,它可以读取输入的任意格式类型的数据。scanf函数也有返回值,返回类型为int类型,它返回成功读入的项目的个数。如果它没有读取任何项目(当它期望一个数字而您却键入了一个非数字字符串时就会发生这种情况,scanf()会返回0。当它检测到“文件``结尾”(end of file)时,它返回EOF(EOF是在文件stdio.h中定义的特殊值,一般#define指令把EOF的值定义为-1,我们可以理解为:#define EOF -1)。 c语言中,所有的输入函数都共用同一个输入缓冲区,我们从键盘键入数据时,其实是将输入写入缓冲区中,当我们按下回车键时,scanf()函数从缓冲区中读取输入,刷新缓冲区。 例 题目HD1000 参考代码
#include
int main(void)
{
int a, b;
while ((scanf("%d %d", &a, &b) != EOF))//EOF文件结束标着符,实际值为-1
printf("%d\n", a + b);
return 0;
}
(二)指定数据量 有时会在数据的第一行提供数据量大小 例 题目HD1090 参考代码
#include
int main(void)
{
int a, b, n;
scanf("%d", &n);
while (n--)//n自减直到n=0时结束
{
scanf("%d %d", &a, &b);
printf("%d\n", a + b);
}
return 0;
}
(三)以特定元素作结束符这种输入和第一种类似。 常用特殊符号结束或者0与-1来当作结束标志 例 题目HD1091 参考代码
#include
int main(void)
{
int a, b, n;
while (1)
{
scanf("%d %d", &a, &b);
if (a == 0 && b == 0)//a与b同时0时结束
break;
printf("%d\n", a + b);
}
return 0;
}
|