2013北大《计算概论A》期中试题
【描述】
我国有4大淡水湖。
A说:洞庭湖最大,洪泽湖最小,鄱阳湖第三。
B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。
C说:洪泽湖最小,洞庭湖第三。
D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
已知这4个湖的大小均不相等,4个人每人仅答对一个,请编程按照鄱阳湖、洞庭湖、太湖、洪泽湖的顺序给出他们的大小排名。
【输入】
无
【输出】
输出为4行,第1行为鄱阳湖的大小名次,从大到小名次分别表示为1、2、3、4;第2、3、4行分别为洞庭湖、太湖、洪泽湖的大小名次。
【输入示例】
无
【输出示例】
3
2
1
4
【提示】
输出示例仅供格式参考,此题只有一个解。
【C代码】
---------------
#include<stdio.h>
#include<stdlib.h>
intmain(void) {
/* 代表A、B、C、D四人说的话 */
int a, b, c, d;
/* 代表鄱阳湖、洞庭湖、太湖、洪泽湖的大小名次。1最大,4最小 */
int i, j, k, m;
for(i = 1; i <= 4; ++i) { /* 鄱阳湖 */
for(j = 1; j <= 4; ++j){ /* 洞庭湖 */
if(i != j) { /* 大小名次不相等 */
for(k = 1; k <= 4; ++k) { /* 太湖 */
if(k != i && k != j){ /* 大小名次不相等 */
m = 10 - i - j - k; /* 洪泽湖 */
/* A说:洞庭湖最大,洪泽湖最小,鄱阳湖第三 */
a = (j == 1) + (m == 4) + (i == 3);
/* B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三 */
b = (m == 1) + (j == 4) + (i == 2) + (k == 3);
/* C说:洪泽湖最小,洞庭湖第三 */
c = (m == 4) + (j == 3);
/* D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三 */
d = (i == 1) + (k == 4) + (m == 2) + (j == 3);
if(a * b * c * d == 1) {
printf("%d\n%d\n%d\n%d\n", i, j, k, m);
exit(EXIT_SUCCESS);
}
}
}
}
}
}
return 0;
}