实验二 信息数据化

文章讨论了三个问题:利用逻辑推理确定小偷身份,预测竞赛成绩,以及判断整数能否被特定整数整除。每个问题涉及编程解题技巧和逻辑分析。
摘要由CSDN通过智能技术生成

第一关 谁是小偷​​

任务描述

本关任务:判断谁是小偷。

警察局抓了 a,b,c,d 四名偷窃嫌疑犯,其中只有一人是小偷。审问中:

  • a 说:“我不是小偷。”

  • b 说:“ c 是小偷。”

  • c 说:“小偷肯定是 d。”

  • d 说:“ c 在冤枉人。”

现在已经知道四个人中三人说的是真话,一人说的是假话,问到底谁是小偷?

编程要求

请在右侧编辑器Begin-End处补充代码,完成本关任务,结果只需输出小偷是谁即可,例如:a is a thief

测试说明

平台会对你编写的代码进行测试,输出结果为正确答案时则通关。

代码文件
#include <stdio.h>

int main()
{
    /**********  Begin  **********/
	int a,b,c,d;
    for(a=1;a>=0;a--) //穷举每个人是否是小偷的所有情况
        for(b=1;b>=0;b--) //1:是小偷 0:不是
            for(c=1;c>=0;c--)
                for(d=1;d>=0;d--)
                    if((a==0)+(c==1)+(d==1)+(d==0)==3&&a+b+c+d==1) //4人的说法中有3个真的,且只有一个小偷
                    {
                    	if(a){
                    		printf("a is a thief");
						}else if(b){
							printf("b is a thief");
						}else if(c){
							printf("c is a thief");
						}else if(d){
							printf("d is a thief");
						}
                    }
    return 0;
    /**********  End  **********/
}

第二关 预测竞赛成绩​​​​

任务描述

本关任务:输出学生预测的竞赛成绩。

三位老师对某次数学竞赛进行了预测。他们的预测如下:

  • 甲说:学生 A 得第一名,学生 B 得第三名。

  • 乙说:学生 C 得第一名,学生 D 得第四名。

  • 丙说:学生 D 得第二名,学生 A 得第三名。

竞赛结果表明,他们都说对了一半,说错了一半,并且无并列名次,试编程输出 A、B、C、D 各自的名次。

编程要求

请在右侧编辑器Begin-End处补充代码,完成本关任务,输出格式为:A是第X名,B是第X名,C是第X名,D是第X名。,其中 x 表示他们各自的名次,用阿拉伯数字替换即可。

测试说明

平台会对你编写的代码进行测试,输出结果为正确答案时则通关。

代码文件
#include <stdio.h>
#include <stdlib.h>

void main()
{
    /**********  Begin  **********/
    int a,b,c,d;
    for(a=1;a<=4;a++){
        for(b=1;b<=4;b++){
            if(a!=b){
                for(c=1;c<=4;c++){
                    d=10-a-b-c;
                    if((c!=a)&&(c!=b)){
                        if((d!=a)&&(d!=b)&&(d!=c)){
                            if(((a==1)+(b==3)==1)&&((c==1)+(d==4)==1)&&((d==2)+(a==3)==1))
                            printf("A是第%d名,B是第%d名,C是第%d名,D是第%d名。",a,b,c,d);
                        }
                    }
                }
            }
        }
    }
    /**********  End  **********/
}

第三关 判断一个整数能否被3,5,7整除

任务描述

本关任务,编写算法对输入的一个整数,判断它能否被 3,5,7 整除,并输出以下信息之一:

  • 能同时被 3,5,7 整除;

  • 能被其中两数(要指出哪两个)整除;

  • 能被其中一个数(要指出哪一个)整除;

  • 不能被 3,5,7 任一个整除。

编程要求

请在右侧编辑器Begin-End处补充代码,完成本关任务。

测试说明

平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:

测试输入:210

预期输出:能被3、5、7同时整除

代码文件
#include <stdio.h>

void main()
{
    /**********  Begin  **********/
	long n;
    int k;
    scanf("%ld",&n);
    k=(n%3==0)*1+(n%5==0)*2+(n%7==0)*4;
    switch(k){
        case 7:printf("能被3、5、7同时整除");
            break;
        case 6:printf("能被5、7整除");
            break;
        case 5:printf("能被3和7整除");
            break;
        case 4:printf("能被7整除");
            break;
        case 3:printf("能被3和5整除");
            break;
        case 2:printf("能被5整除");
            break;
        case 1:printf("能被3整除");
            break;
        case 0:printf("不能被3、5、7中的任何一个整除");
            break;
    } 
    /**********  End  **********/
}
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值