实在不会
实验内容
三个问题:已知A,B,C,三人是小学,各教两门课,互不重复,共有如下六门课。语文(Chinese)、数学(Math)、政治(Politics)、地理(Geography)、音乐(Music)和美术(Art),已经知道:
– 政治和数学是邻居 – 地理比语文年龄大 – B最年轻 – A 经常给地理和数学讲他看过的文学作品 – B 经常和音乐、语文一起游泳 要求:编程判断A,B,C各教哪门课。
实验原理和方法
(1)变量的存储:
总的有六门课程(可定义char course[6][10] = {"Chinese","Math","Politics","Geography","Music","Art"},设置六个char元素的数组表示教这六门课程的,如,如果x[2]='A'表示A教政治。
(2)表达式:
可以根据题目给出的条件写出条件表达式,例如其中的两个条件表示如下:政治和数学是邻居: A经常给地理和数学讲他看过的文学作品:(x[3]!='A')&&(x[1]!='A') 另外,还有一个暗含的条件:每个只能教2门课。
输入格式:
输入教师的名称字符,如
A
输出格式:
输出该教师所上的课程,如A教师上语文和政治,则输出:
A is Chinese
A is Politics
输入样例:
在这里给出一组输入。例如:
A
输出样例:
在这里给出相应的输出。例如:
A is Chinese
A is Politics
程序实例
#include <iostream>
using namespace std;
int main()
{
char course[6][10] = { "Chinese","Math","Politics","Geography","Music","Art" };
char x[6], y[6];
char tc[3] = { 'A','B','C' };
//在下面的begin-end之间填入代码,完成程序的功能
//*************begin***********************************//
//**************end***********************************//
return 0;
}
#include <iostream>
#include <string>
using namespace std;
const int MAXN = 6;
int n, m;
char course[MAXN][10];
bool check(int x, int y) {
return x >= 0 && x < n && y >= 0 && y < m && course[x][y] != '\0';
}
bool check_neighbor(int x, int y) {
return check(x, y + 1) && check(x, y - 1) && check(x, y);
}
bool check_age(int age) {
return age >= 0 && age < m;
}
bool check_interest(int interest) {
return interest >= 0 && interest < m;
}
bool check_occupation(int occupation) {
return occupation >= 0 && occupation < m;
}
bool check_relation(int relation) {
return relation >= 0 && relation < m;
}
bool check_room(int room) {
return room >= 0 && room < m;
}
bool check_courses() {
bool flag = true;
for (int i = 0; i < n; i++) {
if (check_neighbor(i, 0) && check_neighbor(i, 1) && check_neighbor(i, 2)) {
flag = false;
break;
}
}
return flag;
}
bool check_exam() {
bool flag = true;
for (int i = 0; i < n; i++) {
if (check_neighbor(i, 0) && check_neighbor(i, 1) && check_neighbor(i, 2) && check_age(i)) {
flag = false;
break;