1. 先输入n,代表有n组数据。e.g. 1264-(2007新生赛) 不倒翁闹钟 scanf("%d", &n); for (i=0; i<n; i++) { // 根据题目进行处理 } 2. 以一个整数(例如0)表示结束。e.g. 1058-(BNU2006新生邀请赛) 连连看游戏 while (1) { scanf("%d", &n); if (n == 0) { break; } // 根据题目进行处理 } 另一种方法: scanf("%d", &n); while (n != 0) { // 根据题目进行处理 scanf("%d", &n); } 3. 以两个整数(例如0 0)表示结束。e.g. 1057-(BNU2006新生邀请赛) 魔方 while (1) { scanf("%d%d", &n, &m); if (n==0 && m==0) { break; } // 根据题目进行处理 } 另一种方法: scanf("%d%d", &n, &m); while (n!=0 || m!=0) { // 根据题目进行处理 scanf("%d%d", &n, &m); } 4. 以某种字符串(例如"END")表示结束。e.g. 1263-(2007新生赛) 疯狂英语 char c[101]; // 这个字符数组的长度视题目描述而定,特别要注意给 '\0' 留出存储空间。 while (1) { gets(c); if ( strcmp(c,"END") == 0 ) { break; } // 根据题目进行处理 } 另一种写法: gets(c); while (strcmp(c,"END") != 0) { // 根据题目进行处理 gets(c); } 5. 以EOF表示结束。e.g. 1059-(BNU2006新生邀请赛) 星际争霸之单挑 while ( scanf("%d",&n) != EOF ) { // 根据题目进行处理 } |