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

C++燃油计算器程序报错:'a'/'b'/'c'未在此作用域声明

解决C++燃油计算器中'a'、'b'、'c'未声明的错误及代码优化

错误原因分析

你代码里的a、b、c是凭空写的,根本没在任何地方声明过,编译器自然找不到它们。除此之外,代码还有两个关键问题:

  • 五个燃油计算函数逻辑完全重复,完全没必要写五个
  • main函数里的wyborPaliwa初始值是0,输出提示后没读取用户输入就进入switch,导致所有case都不会执行

分步修复方案

1. 修复未声明变量的错误

你的benzyna、diesel等函数原本用指针参数完全没必要,直接传值更简单。同时函数里的第四个参数kosztPaliwa完全没用,直接计算返回值即可。比如把重复的函数合并成一个通用计算函数:

double obliczKoszt(double dystans, double avgSpalanie, double cenaPaliwa) {
    return (dystans / 100) * avgSpalanie * cenaPaliwa;
}

2. 修复switch不执行的问题

在输出燃油类型选择提示后,必须读取用户输入的数值到wyborPaliwa里:

cout << "Podaj rodzaj paliwa, na ktorym jezdzi Twoj samochod (1 - benzyna, 2 - olej napedowy, 3 - LPG, 4 - CNG, 5 - wodór): " << endl;
cin >> wyborPaliwa; // 新增:读取用户选择

3. 修正函数调用

调用通用计算函数时,直接传已经输入的变量即可,比如case 1里的输出改成:

cout << "Koszty przejechania trasy wynoszą: " << obliczKoszt(dystans, avgSpalanie, cenaPaliwa) << "zl" << endl;

修改后的完整代码

#include <iostream>

using namespace std;

// 通用燃油成本计算函数
double obliczKoszt(double dystans, double avgSpalanie, double cenaPaliwa) {
    return (dystans / 100) * avgSpalanie * cenaPaliwa;
}

int main(int argc, char** argv) {
    
    int wyborPaliwa = 0;
    double dystans, avgSpalanie, cenaPaliwa;
    
    cout << "Podaj rodzaj paliwa, na ktorym jezdzi Twoj samochod (1 - benzyna, 2 - olej napedowy, 3 - LPG, 4 - CNG, 5 - wodór): " << endl;
    cin >> wyborPaliwa;
    
    switch(wyborPaliwa) {
        case 1:
            cout << "Podaj dystans do przejechania: ";
            cin >> dystans;
            cout << "Podaj srednie spalanie twojego samochodu: ";
            cin >> avgSpalanie;
            cout << "Podaj cene benzyny za litr na Twojej stacji: ";
            cin >> cenaPaliwa;
            cout << "Koszty przejechania trasy wynoszą: " << obliczKoszt(dystans, avgSpalanie, cenaPaliwa) << "zl" << endl;
        break;
            
        case 2:
            cout << "Podaj dystans do przejechania: ";
            cin >> dystans;
            cout << "Podaj srednie spalanie twojego samochodu: ";
            cin >> avgSpalanie;
            cout << "Podaj cene oleju napedowego za litr na Twojej stacji: ";
            cin >> cenaPaliwa;
            cout << "Koszty przejechania trasy wynoszą: " << obliczKoszt(dystans, avgSpalanie, cenaPaliwa) << "zl" << endl;
        break;
            
        case 3:
            cout << "Podaj dystans do przejechania: ";
            cin >> dystans;
            cout << "Podaj srednie spalanie twojego samochodu (LPG): ";
            cin >> avgSpalanie;
            cout << "Podaj cene LPG za litr na Twojej stacji: ";
            cin >> cenaPaliwa;
            cout << "Koszty przejechania trasy wynoszą: " << obliczKoszt(dystans, avgSpalanie, cenaPaliwa) << "zl" << endl;
        break;
        
        case 4:
            cout << "Podaj dystans do przejechania: ";
            cin >> dystans;
            cout << "Podaj srednie spalanie twojego samochodu (CNG): ";
            cin >> avgSpalanie;
            cout << "Podaj cene CNG za litr na Twojej stacji: ";
            cin >> cenaPaliwa;
            cout << "Koszty przejechania trasy wynoszą: " << obliczKoszt(dystans, avgSpalanie, cenaPaliwa) << "zl" << endl;
        break;
        
        case 5:
            cout << "Podaj dystans do przejechania: ";
            cin >> dystans;
            cout << "Podaj srednie spalanie twojego samochodu (wodór): ";
            cin >> avgSpalanie;
            cout << "Podaj cene wodoru za litr na Twojej stacji: ";
            cin >> cenaPaliwa;
            cout << "Koszty przejechania trasy wynoszą: " << obliczKoszt(dystans, avgSpalanie, cenaPaliwa) << "zl" << endl;
        break;
        
        default:
            cout << "Nieprawidlowy wybor paliwa!" << endl;
        break;
    } 
    
    return 0;
}

额外优化点

  • 增加default分支处理用户输入错误的情况
  • 修改每个case的提示文本,对应不同燃油类型,更准确
  • 删除没用的math.h头文件,计算逻辑不需要它

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:51:03