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
相关产品推荐
相关产品推荐

