算法设计与分析(edu实训)实验二 信息数字化

算法设计与分析

实验二 信息数字化

第1关:谁是小偷?

任务描述

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

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

  • a 说:“我不是小偷。”
  • b 说:“ c 是小偷。”
  • c 说:“小偷肯定是 d。”
  • d 说:“ c 在冤枉人。”

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

编程要求

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

测试说明

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

#include <stdio.h>

void main()
{
    /**********  Begin  **********/
int x;
for(x=1;x<=4;x++){
    if((x!=1)+(x==3)+(x==4)+(x!=4)==3){
        printf("%c is a thief",96+x);
    }
}
    /**********  End  **********/
}

第2关:预测竞赛成绩

任务描述

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

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

  • 甲说:学生 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关:判断一个整数能否被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  **********/
}

在这里插入代码片

版权声明:本文为weixin_46959185原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。