You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dev-C++编译if语句内代码失败,多类编译错误求助

网球计分器代码编译错误修复方案

核心错误分析与修复步骤

  • do-while循环语法缺失:你写的do语句没有配套的while()条件,且循环体未用大括号包裹,这直接导致编译器解析混乱,触发前两个编译错误。do-while的标准格式是do { 循环体 } while(循环条件);。
  • 赋值/比较运算符混淆:if(punto=1)是赋值操作,会把1强制赋值给punto,导致这个分支永远为真,逻辑完全错误。必须用==做相等性比较。
  • 拼写错误(ptintf):错误提示里的ptintf是printf的拼写错误,若后续需要输出比分,务必修正拼写并正确调用。
  • else匹配异常:因do-while的语法错误,编译器无法正确识别if语句的结构,进而抛出else without a previous if错误,修复do-while后该问题会自动消失。

修正后的完整代码

#include <stdio.h>

int main () {
    
    int giocatore1 = 0;
    int giocatore2 = 0;
    int punto;

    while(giocatore1 != 40 && giocatore2 != 40) {
        // 用do-while确保输入有效(仅接受1或2)
        do {
            scanf("%d", &punto);
        } while(punto != 1 && punto != 2);
        
        if(punto == 1) {
            if(giocatore1 < 30) {
                giocatore1 += 15;
            } else {
                giocatore1 += 10;
            }
        } else if(punto == 2) {
            if (giocatore2 < 30) {
                giocatore2 += 15;
            } else {
                giocatore2 += 10;
            }
        }
        // 可选:输出当前比分
        printf("玩家1: %d, 玩家2: %d\n", giocatore1, giocatore2);
    }
    
    return 0; // 符合C标准的main函数返回值
}

额外提示

原代码的while(giocatore1!=40 && giocatore2!=40)逻辑不符合真实网球规则(40平后需要占先才能获胜),不过你提到循环外的空if暂未完善,这里先聚焦解决编译问题。后续可以补充40平、占先、获胜的判断逻辑。

内容的提问来源于stack exchange,提问作者Matty0055_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:55:21