c语言 中的一道经典面试题
2016-04-06 21:43
429 查看
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
这道题我在网上也看到过很多版本的解法,但都不太满意,下面自己写出一种解法,希望大家参考指正:
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
这道题我在网上也看到过很多版本的解法,但都不太满意,下面自己写出一种解法,希望大家参考指正:
#include <stdio.h> int main() { int a = 0; int b = 0; int c = 0; int d = 0; int e = 0; int n = 0; int flag = 0; for(a = 1; a<=5; a++) { for(b = 1; b<=5; b++) { for(c = 1; c<=5; c++) { for(d = 1; d<=5; d++) { for(e = 1; e<=5; e++) { if(((b==1)+(a==3)==1) &&((b==2)+(e==4)==1) &&((c==1)+(d==2)==1) &&((c==5)+(d==3)==1) &&((e==4)+(a==1)==1)) { flag = 0; n |= (1<<(a-1)); n |= (1<<(b-1)); n |= (1<<(c-1)); n |= (1<<(d-1)); n |= (1<<(e-1)); while(n) { if(n % 2 == 0) { flag = 1; } n/=2; } if(flag == 0) printf("a = %d b = %d c = %d d = %d e = %d\n",a,b,c,d,e); } } } } } } return 0; }
相关文章推荐
- C语言中自己写几个简单的库函数
- 修炼成C++高手必看的C++书单
- c++ lesson 一(命名空间输入输出)
- C++顺序性容器、关联性容器与容器适配器
- C++第3次实验-项目一
- C++ 二维动态数组创建及越界问题
- 鬼话连篇(二)——简单工厂模式(C++/C#)
- C++_智能指针
- C++生成DLL导出函数的小demo
- 一个简单的C语言的汇编程序
- C++走向远洋——32(项目一内全部成员函数)
- C语言问卷
- C++走向远洋——31(六周,项目一,1.1)
- 基于C++11的事件驱动框架
- c++primer(第五版) 第十四章 重载运算与类型转换习题答案
- C++走向远洋——30(六周,项目一1.0)
- power(x,n)
- C语言问卷调查
- C语言学习008:标准错误
- C语言的知识与能力的自评