有两个值得注意的地方:1、变长数组(VLA)的使用,没想到PAT上的OJ竟然支持C99,一开始不知道就没用,看了看别人的,既然,还是用吧, 它有一点我不太喜欢,它不能像一般数组那样在声明时通过赋一个0让全部元素初始化为零,等等,有点理解了。2、long long长整型的格式化输入输出,都要在"%d"中间插入"ll",所以,算了吧,还是定义一个临时变量更方便。题设要求及代码实现如下
/* Name: Copyright: Author: Date: 01/04/15 15:16 Description: 给定区间[-231, 231]内的3个整数A、B和C,请判断A+B是否大于C。 输入格式: 输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。 输出格式: 对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。 输入样例: 4 1 2 3 2 3 4 2147483647 0 2147483646 0 -2147483648 -2147483647 输出样例: Case #1: false Case #2: true Case #3: true Case #4: false */ #include <stdio.h> int main() { // freopen("in.txt", "r", stdin); // for test // printf("%d %d %d ", sizeof(int), sizeof(long), sizeof(long long)); // for check int i, T, A, B, C; long long tmp; scanf("%d", &T); int result[T]; // for(i = 0; i < T; i++) // for check // printf("%d ", result[T]); for(i = 0; i < T; i++) { scanf("%d%d%d", &A, &B, &C); tmp = (long long)A + B; if(tmp > C) result[i] = 1; else result[i] = 0; } for(i = 0; i < T; i++) { printf("Case #%d: ", i + 1); if(result[i]) printf("true "); else printf("false "); } // fclose(stdin); // for test return 0; }