C语言经典问题乒乓球比赛

img


我想问一下除了用for循环和if语句实现这个程序还有没有别的方法
谢谢

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7712268
  • 你也可以参考下这篇文章:C语言经典题:用if语句实现:左右括号是否匹配;
  • 除此之外, 这篇博客: 如何求两集合的交集中的 用两个for循环和if语句来判断两个数组有没有一样的元素。如果有,进行赋值。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
     for(i=0;i<10;i++)
     {
     for(a=0;a<10;a++)
     {
     if(x[i]==y[a])
     {
     z[b]=x[i];
     b+=1;
     }
     }
     }
  • 您还可以看一下 贺利坚老师的C语言及程序设计初步课程中的 用if语句实现分支结构小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    我认为,除了使用for循环和if语句,还可以使用switch语句来实现经典乒乓球比赛程序。具体步骤如下:

    1.定义两个整型变量scoreA和scoreB,表示两个选手的分数,初始化为0。

    2.使用while循环表示比赛进行中,当任意一个选手分数达到11且比另一个选手多2分,比赛结束。

    3.在循环体中,使用switch语句来模拟比赛的过程:

    • case 1:选手A得分,并将scoreA加1。

    • case 2:选手B得分,并将scoreB加1。

    • default:什么都不做。

    4.每次循环结束后,判断是否有选手获胜,如果有,输出获胜选手,并结束循环。

    以下是代码示例:

    #include <stdio.h>
    
    int main(){
        int scoreA = 0, scoreB = 0;
        int flag = 0; //标志比赛是否结束
        while (!flag) {
            printf("请选手A或B输入得分(1 or 2):\n");
            int input;
            scanf("%d", &input);
            switch (input) {
                case 1:
                    scoreA++;
                    break;
                case 2:
                    scoreB++;
                    break;
                default:
                    break;
            }
            printf("当前比分: A-%d : B-%d\n", scoreA, scoreB);
            if(scoreA >= 11 || scoreB >= 11){
                if(scoreA >= scoreB+2){
                    printf("选手A获胜!\n");
                    flag = 1;
                }else if(scoreB >= scoreA+2){
                    printf("选手B获胜!\n");
                    flag = 1;
                }
            }
        }
        return 0;
    }
    

    该代码使用了while循环、switch语句等控制语句实现,相对于使用大量的for循环和if语句,代码更为简洁明了。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^