多组输入

多组输入要求你处理到文件的结尾(EOF,end of file)。

也就是说,输入完一组数据以后,你的程序不能结束,而应该等待下一组输入。

对于每一组输入,应当在循环体内完成对这一组数据的处理,并按照格式要求输出答案。

比如HDU1000

图片说明

它要求你处理到文件的结尾,并且对于每一组输入,在一行中输出答案,所以程序应该这样写:

#include <stdio.h>
int main() {
    int a, b;
    while (scanf("%d%d", &a, &b) != EOF) {
    //在这两个大括号之间,处理数据并输出答案
        printf("%d\n", a + b);
    }
    return 0;
}

这样的题目也是用多组输入的:

图片说明

只要题目中说了多组输入,或者说了要求处理到文件的结尾,都应该使用这样的格式。

如果暂时不明白也没关系,先用上再说。

T组输入

T组输入是指,输入数据会指定输入的组数,你的程序应当读入T后,执行T次对数据的读入,处理和输出。

比如HDU1090

图片说明

所以下面的代码可以满足要求:

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

如果这样写你看不懂的话,这个循环也可以这样表示:

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

比如这题,就是比较典型的T组输入

图片说明