那位高人可以帮我做这个C语言的题啊~~急!!!

来源:百度知道 编辑:UC知道 时间:2024/06/05 17:32:21
有五个人,手上系着红或白的丝带。五个人围成一圈坐着, A说他看见有三人是系白丝带,一人是系红丝带。 B说他看见其它人系的都是红丝带。 C说他看见其它人系的都是红丝带 D说他看见有三人是系红丝带,一人是系白丝带

写一个C 程序

在线等答案
谢谢了
求每个人 都带的什么丝带啊
题没有错
要怎么求的这个程序
有五个人,手上系着红或白的丝带。五个人围成一圈坐着, A说他看见有三人是系白丝带,一人是系红丝带。 B说他看见其它人系的都是红丝带。 C说他看见其它人系的都是红丝带 D说他看见有三人是系红丝带,一人是系白丝带。 E不说话。
系红丝带的人说的都是谎话,系白丝带的人说的都是实话。问谁是系白丝带,谁是系红丝带?

#include <stdio.h>

void cleararray(int *a);
void output(int *a);
void main()
{
int a[5];//存储五人信息,0代表红,1代表白
int b[4]={3,1,1,2}; //存储假设成立总白条的个数
int i,w,tw,j;//w代表假设成立的白条个数,tw存储推断过程中的白条个数
for (i=0;i<4;i++)
{
tw=5;
w=b[i];
cleararray(a);
for(j=0;j<4;j++)
{
if(i!=j)
{
if(b[j]!=b[i])
tw--;
}
}
if(tw==w)
{
a[i]=1;
a[4]=1;
output(a);
}
if(tw==(w+1))
{
a[i]=1;
a[4]=0;
output(a);
}
}

}
void cleararray(int *a)//数组清零
{
int i;
for(i=0;i<5;i++)
a[i]=0;
}
void output(int *a)
{
int i;
for(i=0;i<5;i++)
printf("%c:%s\n",i+'A',a[i]?"white":"red");
}

还是感觉你的题目有问题。。。。

按照B C说的话的话,全都是红丝带了。。

哦,这样还有的解。。

B说他看见其它人系的都是红丝带。 C说他看见其它人系的都是