c语言:2种方法:5位运动员参加跳水比赛,每位选手都说对一半,请确定比赛名次

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果

A选手说:B第一,我第三。

B选手说:我第二,E第四。

C选手说:我第一,D第二。

D选手说:C最后,我第三。

E选手说:我第四,A第一。

比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

程序一:

#include<stdio.h>

int main()

{

int a = 1, b = 1,c = 1,d=1,e=1;

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)

{

printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%d\n",a,b,c,d,e);

return 0;

}

}

}

}

}

}

return 1;

}

程序二:

#include<stdio.h>

int main()

{

int a = 1, b = 1, c = 1, d = 1, e = 1;

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)

{

int num = 0;

num |= (1 << (a - 1));//二进制连续置为1,11111分别表示1,2,3,4,5之间的数可以连续存放

num |= (1 << (b - 1));

num |= (1 << (c - 1));

num |= (1 << (d - 1));

num |= (1 << (e - 1));

while (num)

{

if (num % 2 == 0)//二进制中的1是连续的,不能被2整除,如果能整除,说明二进制中有0

{

break;

}

num = num / 2;

}

if (num == 0)

{

printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%d\n", a, b, c, d, e);

}

}

}

}

}

}

}

return 0;

}

结果:

a=2

b=1

c=1

d=3

e=4

请按任意键继续. . .

时间: 2024-10-11 05:46:28

c语言:2种方法:5位运动员参加跳水比赛,每位选手都说对一半,请确定比赛名次的相关文章

5位运动员参加了10米台跳水比赛,每位选手都说对了一半,请编程确定比赛的名次

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三.B选手说:我第二,E第四.C选手说:我第一,D第二.D选手说:C最后,我第三.E选手说:我第四,A第一. 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次. #include <stdio.h> int main(){  int a,b,c,d,e;  for(a=1;a<=5;a++)       for(b=1;b<=5;b++)            for(c=1;c<=5;c++

5位选手说两个猜测,都说对一半,预测比赛名次问题

#include <stdio.h>   int main()   {   int A,B,C,D,E;     for( A=1; A<=5; A++)          {          for( B=1; B<=5; B++)              {              for( C=1; C<=5; C++)                  {                  for( D=1; D<=5; D++)             

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三.B选手说:我第二,E第四.C选手说:我第一,D第二.D选手说:C最后,我第三.E选手说:我第四,A第一.比赛结束后,每位选手都说对了一半,请编程确定比赛的名次. 初次见到这种题,感觉很难将其抽象出来 用编程来解决它,通过查阅相关文档,终于灵光乍现!现总结思路如下: 通过排列组合知识,可以这样来理解  A B C D E五个人,每个人分别可以有五个位置去 即第一 第二...到第五 5个位置 ,于是这样下来就有25种情

PHP数字补零的两种方法

在php中有两个函数——至少有两个是否有其他的我还不知道,能够实现数字补零,str_pad(),sprintf()详细如下 str_pad 顾名思义这个函数是针对字符串来说的这个可以对指定的字符串填补任何其它的字符串 例如:str_pad(带填补的字符串,填补后的长度,填补字符串,填补位置) 其中填补后的长度必须是个正整数,填补位置有三个选项, 左边:STR_PAD_LEFT, 右边:STR_PAD_RIGHT, 两端:STR_PAD_BOTH 例如: echo str_pad(1,8,”0″,

JAVA之线程同步的三种方法

最近接触到一个图片加载的项目,其中有声明到的线程池等资源需要在系统中线程共享,所以就去研究了一下线程同步的知识,总结了三种常用的线程同步的方法,特来与大家分享一下.这三种方法分别是:synchronized代码段.synchronized修饰方法/类.ThreadLocal本地线程变量. 我们通过一个例子来表现这三种方法:一张银行卡里面有300块钱,15个线程从这张银行卡中取钱,每个线程取一次且每次取20块钱:当当前余额不足100元时,则向账户中汇款20元.三种方法每种方法都有5个线程.我们预期

程序只启动一个实例的几种方法

我们在使用<金山词霸>时发现,在<金山词霸>已经运行了的情况下,再次点击<金山词霸>的图标,那么它不会再运行另外一个<金山词霸>,而是将已有的<金山词霸>给激活,始终只能运行一个<金山词霸>的实例. 在我们的程序当中如果要实现类似<金山词霸>的功能,就要解决两个问题,首先是要判断该程序已有一个实例在运行,其次是要将已运行的应用程序实例激活,同时退出第二个应用程序实例.  对于第一个问题,我们可以通过设置命名互斥对象或命名信

EasyUI 之 DataGrid分页组件中文显示的两种方法

        在过去的这一段时间参与了高校云平台的评教系统,在系统的前端要求用MVC+Easyui,从今天开始就来给大家讲讲MVC+EasyUI的前端应用. JQueryEasyUI:一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面.开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签. 在系统中经常会使用到EasyUI-DataGrid(数据

HTML中button标签点击实现页面跳转的三种方法

方法1:使用onclick事件12<input type="button" value="按钮"onclick="javascrtpt:window.location.href='http://www.9252.com/'" /> 或者直接使用button标签1<button onclick="window.location.href = 'https://www.9252.com/'">儿童</

五个运动员参加比赛根据他们说的话判断结果

#define _CRT_SECURE_NO_WARNINGS 1//题目要求:5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 //A选手说:B第二,我第三://B选手说:我第二,E第四://C选手说:我第一,D第二://D选手说:C最后,我第三://E选手说:我第四,A第一://比赛结束后,每位选手都说对了一半,请编程确定比赛的名次.#include <stdio.h>#include<stdio.h> int main(){int a = 0, b = 0, c =