请问这个这么解,求解,c语言

四位同学(编号为1,2,3,4)在晚上宿舍过生日聚会,突然停电了5分钟。来电后,发现生日蛋糕被一个同学偷吃了一口。

同学1说:“不是我”;

同学2说:“是3吃的”;

同学3说:“是4吃的”;

同学4说:“3胡说”。

已知这四位同学有三位同学说真话,一位同学说假话,请用列举法编程解决该问题,并写出运行结果。

#include <stdio.h>
int main() { 
    char arr[] = { 'A', 'B', 'C', 'D' };//分别是偷吃者的四种情况 int i = 0;      
    for (int i = 0; i < 4; i++)//把四种情况遍历

    {   
         if ((arr[i] != 'A') + (arr[i] == 'C') + (arr[i] == 'D') + (arr[i] != 'D') == 3)//如果三真一假

     printf("偷吃的是%c\n",arr[i]);   
    } 
     
    return 0;

}

img

有帮助望采纳~

#include <stdio.h>
int a(int x) { return x != 1; }
int b(int x) { return x == 3; }
int c(int x) { return x == 4; }
int d(int x) { return c(x) != 1; }
int main(int argc, char const *argv[])
{
    for (int i = 1; i <= 4; i++)
    {
        if (a(i) + b(i) + c(i) + d(i) == 3)
            printf("第%d名同学说了假话", a(i) == 0 ? 1 : b(i) == 0 ? 2
                                                     : c(i) == 0   ? 3
                                                     : d(i) == 0  ? 4
                                                                   : 5);
    }
};

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632