编程应用实现
来源:互联网 发布:淘宝卖家怎么用返利网 编辑:程序博客网 时间:2024/05/17 08:44
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
看到题我们确定总共有多少种可能,利用for循环。然后根据已知条件,每位选手都说对了一半,假设每个人说对了一半,把所有可能都用if语句罗列出来。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 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 (((a == 3) && (b != 1)) || ((a != 3) && (b == 1)))
{
if (((b == 2) && (e != 4)) || ((b != 2) && (e == 4)))
{
if (((c == 1) && (d != 2)) || ((c != 1) && (d == 2)))
{
if (((c == 5) && (d != 3)) || ((c != 5) && (d == 3)))
{
if (((a == 1) && (e != 4)) || ((a != 1) && (e == 4)))
{
printf("a=%d\tb=%d\tc=%d\td=%d\te=%d\n", a, b, c, d, e);
}
}
}
}
}
}
}
}
}
}
system("pause");
return 0;
}
运行结果:
从运行结果中可看出一些组合虽符合条件,但是跳过了一些名次,例如21524缺少名次3,进行优化,代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 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 (((a == 3) && (b != 1)) || ((a != 3) && (b == 1)))
{
if (((b == 2) && (e != 4)) || ((b != 2) && (e == 4)))
{
if (((c == 1) && (d != 2)) || ((c != 1) && (d == 2)))
{
if (((c == 5) && (d != 3)) || ((c != 5) && (d == 3)))
{
if (((a == 1) && (e != 4)) || ((a != 1) && (e == 4)))
{
int ret = 0;//下面是用来判断输出的名次是否按照顺序,而不是没有那个比如11134缺少2
ret = ret | (1 << (a - 1));
ret = ret | (1 << (b - 1));
ret = ret | (1 << (c - 1));
ret = ret | (1 << (d - 1));
ret = ret | (1 << (e - 1));
if (ret == 1 || ret == 3 || ret == 7 || ret == 15 || ret == 31)
{
printf("a=%d\tb=%d\tc=%d\td=%d\te=%d\n", a, b, c, d, e);
}
}
}
}
}
}
}
}
}
}
}
system("pause");
return 0;
}
运行结果如下:
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说。
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
char killer = ' ';
for (killer = 'A'; killer <= 'D'; killer++)
{
if (((killer != 'A') + (killer != 'C') + (killer == 'D') + (killer != 'D')) == 3)//表示三人说话为真
{
printf("凶手是%c\n", killer);
break;
}
}
system("pause");
return 0;
}
运行结果:
- 编程应用实现
- android编程实现卸载应用
- 应用MapX编程实现地图数据查询
- WPF应用开机自启动编程实现
- 编程实现基于UDP的socket应用
- VB编程中钩子的实现及应用
- 用Fortran来实现DLL的编程和应用(1)
- 用Fortran来实现DLL的编程和应用(2)
- 用Fortran来实现DLL的编程和应用(3)
- VB编程中钩子的实现及应用
- FineReport应用 - 编程实现普通分组报表 | #报表
- M8系统编程应用之数字时钟的实现
- STM32F10x在应用中编程的实现方法
- 【Android应用开发】-Android 串口编程原理和实现方式
- android 应用编程实现为系统默认程序
- WCF REST简单应用 编程初始化 help页面实现
- Linux应用编程之图片浏览APP实现
- 网络编程应用:基于TCP协议【实现一个聊天程序】
- No module named 'Tkinter'
- OpenCV图像中的数据类型
- 'F:\SDK\android-studio-sdk\build-tools\23.0.3\aapt.exe'' finished withnon-zero exit value 1
- PHP 分页获取数据 三个参数 ( 第一个参数获取页数,第二个条件 ,第三个数据为id降序desc或者升序asc)
- 正则-笔记
- 编程应用实现
- 2-13redhat启动过程
- 公众号微信支付直播室送礼物
- 浅谈Java的Fork/Join并发框架
- C语言版:仿射加密
- 全排列应用
- HTML&CSS进阶
- String s = new String("xyz");创建了几个String Object? 二者之间有什么区别?
- DHCP服务器