- 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次
#define _CRT_SECURE_NO_WARNINGS
#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++)
{
for (e = 1; e <= 5; e++)
{
if (((b == 2 && a != 3) || (b != 2 && a == 3))
&& ((b == 2 && e != 4) || (b != 2 && e == 4))
&& ((c == 1 && d != 2) || (c != 1 && d == 2))
&& ((c == 5 && d != 3) || (c != 5 && d == 3))
&& ((e == 4 && a != 1) || (e != 4 && a == 1)))
> 每一个人说的话,一般为真,一般为假,分两种情况讨论。
{
if ((a != b && a != c && a != d && a != e && b != c && b!=d && b != e && c != d &&c != e && d != e))
> 限定A,B ,C ,D ,E 的名次不相同。
{
printf("A=%d ,B=%d ,C=%d ,D=%d ,E=%d \n", a, b, c, d, e);
}
}
}
}
}
}
}
return 0;
}
- 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个
嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
#include <stdio.h>
int main ( )
{
int killer ='0';
for (killer =='A'; killer =='D';killer++)
{
if ( (killer!='A')+ (killer=='C') +(killer=='D') +(killer!='D')==3)
{
printf ("%c ",killer);
}
}
return 0;
}
逻辑上的真假用0和1表示,当进行逻辑上的判断时,可以直接进行数量上的加减。
- 在屏幕上打印杨辉三角。
#include <stdio.h>
#define N 9
int main( )
{
int i=0;
int j=0;
for (i=0;i<N;i++)
{
arr[i][0] =1;
arr[i][i] =1;
}
for (i=2;i<N;i++)
{
for (j=1;j<i;j++)
{
arr[i][j] =arr[i-1][j] +arr[i-1][j-1];
}
}
for (i=0; i<N;i++)
{
for (j=0; **j< 3*(N-i)/2** ; j++)
> 这里相当于一个尺度的限定,来调整三角形的形状,
N-i /2 就是每一行前面所需要的空格的数量,
3倍控制其宽度的大小。
{
printf (" ");
}
for (j=0;j<i;j++)
{
printf ("%**3**d ",arr[i][j]);
}
printf ("\n");
return 0;
}