C/C++基础题 | 找出三对赛手的名单

根据题目所给的条件和限制,我们可以编写以下的C语言程序来找出符合要求的3对赛手的名单:

#include <stdio.h>

int main() {
    char teamA[3] = {'A', 'B', 'C'};
    char teamB[3] = {'X', 'Y', 'Z'};
    char match[3][2];

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (teamA[i] == 'A' && teamB[j] == 'X')
                continue;
            else if (teamA[i] == 'C' && (teamB[j] == 'X' || teamB[j] == 'Z'))
                continue;
            else {
                match[i][0] = teamA[i];
                match[i][1] = teamB[j];
                break;
            }
        }
    }

    printf("比赛名单如下:\n");
    for (int i = 0; i < 3; i++) {
        printf("%c vs %c\n", match[i][0], match[i][1]);
    }

    return 0;
}

该程序通过嵌套循环遍历甲队和乙队的队员,排除不符合要求的对手后,将符合要求的赛手名单存储在二维数组match中,并最后输出比赛名单。

运行该程序将得到符合要求的三对赛手名单,例如:

比赛名单如下:
A vs Y
B vs Z
C vs Y

以上结果满足题目中的条件,A不和X比赛,C不和X、Z比赛。


附之前未使用GPT的法


常驻开头:如果你已经有编程经验,请忽略这个贴,基础题对你起不了太多帮助,直接刷力扣就好啦。

这些题以大学生最常用的一本书谭浩强《C语言程序设计》为主,如果你是应付期末考试、专升本,符合你的需求,因为这本书就是很多考试的标准。

例75:两个乒乓球队进行比赛,各出3个人。甲队为A,B,C,3人,乙对为X,Y,Z,3人,已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比赛,C说他不和X,Z比赛,C语言编程程序找出3对赛手的名单。

解题思路:整个执行部分只有一个语句,所以只在语句的最后有一个分号。请读者弄清楚循环和选择结构的嵌套关系,题目给的是A,B,C,X,Y,Z,而程序中用了加撇号的字符常量‘X’,'Y','Z',这是为什么?这是为了在运行时能直接输出字符A,B,C,X,Y,Z,以表示3组对抗的情况。

C语言源码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  char i,j,k;//定义字符变量
  for(i='x';i<='z';i++)//i是a的对手;j是b的对手;k是c的对手
  {
    for(j='x';j<='z';j++)
    {
      if(i!=j)
      {
        for(k='x';k<='z';k++)
        {
          if(i!=k&&j!=k)
          {
            if(i!='x'&&k!='x'&&k!='z')
            {
              printf("A--%c\nB--%c\nC--%c\n",i,j,k);//输出结果
            }
          }
        }
      }
    }
  }
  return 0;//主函数返回值为0
}

编译运行结果如下:

A--z
B--x
C--y

--------------------------------
Process exited after 0.08659 seconds with return value 0
请按任意键继续. . .

上述代码,学长用了最基础的方法去实现了,读者看着会很容易看明白,但也造成了嵌套了好几层循环,感兴趣的读者可以自己试着优化一下。

C++源码演示:

#include <iostream>
#include<cstdio>
using namespace std;

int main()//主函数
{
  char i,j,k;//定义字符变量
  for(i='x';i<='z';i++)//i是a的对手;j是b的对手;k是c的对手
  {
    for(j='x';j<='z';j++)
    {
      if(i!=j)
      {
        for(k='x';k<='z';k++)
        {
          if(i!=k&&j!=k)
          {
            if(i!='x'&&k!='x'&&k!='z')
            {
			  cout<<"A--"<<i<<endl;//输出结果
			  cout<<"B--"<<j<<endl;
			  cout<<"C--"<<k<<endl;
            }
          }
        }
      }
    }
  }
  return 0;//主函数返回值为0
}

编译运行结果:

A--z
B--x
C--y

--------------------------------
Process exited after 0.06169 seconds with return value 0
请按任意键继续. . .

猜你喜欢

转载自blog.csdn.net/qq_39154376/article/details/131929421