2.日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个
嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
根据已知信息不难推测凶手是C
程序实现如下
#include<stdio.h>
#include<stdlib.h>
int main()
{
//四个人都有可能说假话,但只有一个人说了假话,其余全为真话
//用四个循环把四个人的各种情况概括进去,然后根据他们的证词
//来排除不满足的情况
//假设0假话,1为真话
//A 为A说假话或没说假话 a == 1||a != 1
//B 为B说假话或没说假话 c == 1||c != 1
//C 为C说假话或没说假话 d == 1||d != 1
//D 为D没说假话或说假话 d != 1||d ==1
int a, b, c, d;
for (a = 0; a <= 1;a++)
{
for (b = 0; b <= 1;b++)
{
for (c = 0; c <= 1;c++)
{
for (d = 0; d <= 1;d++)
{
if (a == 0 && b != 0 && c != 0 && d != 0 ||
b == 0 && a != 0 && c != 0 && d != 0 ||
c == 0 && a != 0 && b != 0 && d != 0 ||
d == 0 && a != 0 && c != 0 && b != 0)
{
if ((a == 1 || a != 1) && (c == 1 || c != 1) &&
(b == 1 || b != 1) && (d != 1 || d == 1) &&
(c != d) && ((b && c ) != 1))
{
printf(" a = %d\n b = %d\n c = %d\n d = %d\n"
,a,b,c,d);
if (a == 0)
printf("凶手是A\n");
if (b == 0)
printf("凶手是D\n");
if (c == 0)
printf("凶手是C\n");
if (d == 0)
printf("凶手是D\n");
}
}
}
}
}
}
system("pause");
}
3.在屏幕上打印杨辉三角。
1
1 1
1 2 1
1 3 3 1
#include<stdio.h>
main()
{
int i, j, a[11][11]; /*定义i,j,a[11][11]为基本整型*/
for (i = 1; i < 11; i++) /*for循环i的范围从1到10*/
{
a[i][i] = 1; /*对角线元素全为1*/
a[i][1] = 1; /*每行第一列元素全为1*/
}
for (i = 3; i < 11; i++) /*for循环范围从第3行开始到第10行*/
for (j = 2; j <= i - 1; j++) /*for循环范围从第2列开始到该行行数减一列为止*/
a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; /*第i行j列等于第i-1行j-1列的值加上第i-1行j列的值*/
for (i = 1; i < 11; i++)
{
for (j = 1; j <= i; j++)
printf("%4d", a[i][j]); /*通过上面两次for循环将二维数组a中元素输出*/
printf("\n"); /*每输出完一行进行一次换行*/
}
}