九0后浪漫Bu弃 发表于 2014-3-9 19:10:25

新手,求助大神!!!

问题是这样的。
民警小张在某个案件中带回4个嫌疑人A,B,C,D,其中有一位是小偷,现在小张分别对4
个嫌疑人进行询问:
A 说:我不是罪犯;
B 说:C是罪犯
C 说:D是罪犯
D 说:我不是罪犯而且B也不是罪犯。
已知其中3 人说的是真话,1人说的是假话,请根据以上信息帮助小张找出罪犯。
#include "stdio.h"
#include "stdlib.h"
main()
{int i;
char who='A';
int isFound=0;
for(i=0;______;i++)
{ int sum=0;
who=_______;
if(who!='A') sum++;
if(who=='C') sum++;
if(who=='D') sum++;
if(_______) sum++;
if(_______)
printf("罪犯是 %c",who);
isFound=1;

}
if(!isFound)
printf("no");
}
这题我想破脑袋都搞不明白,请大神指导。下划线的就是要填的内容,万分感谢。

谭斌谭斌 发表于 2014-3-9 21:41:47

代码:#include<stdio.h>
#include<stdlib.h>

/*
A 说:我不是罪犯
B 说:C是罪犯
C 说:D是罪犯
D 说:我不是罪犯而且B也不是罪犯
*/

int main()
{
        int i;
        char who='A';
        int isFound=0;
       
        for( i = 0 ; i < 4 ; i++ )           //这个不用说吧
        {
        //其实每个if就是一个人的描述,然后假设凶手是谁来走一遍,如果某个人描述是对的,
        //那么sum+1,如果走完一遍有且仅有三个人的描述成立,那么另外一个人是说谎,这个时候who就是凶手
        //结合上面的思路看代码,懂了?
                int sum=0;
                who = 'A' + i;
                if( who != 'A' )        
                        sum++;   
                if( who == 'C' )
                        sum++;   
                if( who == 'D' )
                        sum++;
                if( who != 'D' && who != 'B' )
                        sum++;
                if( sum == 3 )
                {
                        printf("罪犯是 %c",who);
                        isFound=1;
                }
        }
       
        if(!isFound)
                printf("no");
               
        return 0;
}

枫界易城 发表于 2014-3-10 13:34:00

学习了,,,,
页: [1]
查看完整版本: 新手,求助大神!!!