二、編寫一個程式(使用 Python, Java, C#, C 和 C++五種程式語言任一種),用於計算某家公司的月薪分布。該程式需要將員工月薪等級分為三類,並計算每個等級的員工數量分布。月薪的三個等級定義如下:A 等級:低於 35000(包含 35000)B 等級:35000~100000(包含 100000)C 等級:100000 以上使用者將輸入一系列員工月薪的收入,程式需要驗證輸入格式的正確性。完成輸入後,應顯示各等級月薪員工的分布情況。(25 分)
詳解 (共 2 筆)
詳解
C++
有錯請幫忙指正
#include<iostream>
using namespace std;
int main(){
int la=0;
int lb=0;
int lc=0;
while (true) {
long sal;
cout << "請輸入薪資(結束請輸入-1): ";
cin >> sal;
if (sal == -1) {
break;
}
if (sal < 0) {
cout << "輸入錯誤" << endl;
} else if (sal > 100000) {
lc += 1;
} else if (sal > 35000 && sal <= 100000) {
lb += 1;
} else {
la += 1;
}
}
cout<<"A等級有"<<la<<"人"<<endl;
cout<<"B等級有"<<lb<<"人"<<endl;
cout<<"C等級有"<<lc<<"人"<<endl;
return 0;
}
輸出:

詳解
PYTHON
def classify_salaries(salaries):
a_count = b_count = c_count = 0
for salary in salaries:
if salary <= 35000:
a_count += 1
elif 35000 < salary <= 100000:
b_count += 1
else:
c_count += 1
return a_count, b_count, c_count
a_count = b_count = c_count = 0
for salary in salaries:
if salary <= 35000:
a_count += 1
elif 35000 < salary <= 100000:
b_count += 1
else:
c_count += 1
return a_count, b_count, c_count
def main():
salaries = []
while True:
user_input = input("Enter an employee's monthly salary (or type 'done' to finish): ")
if user_input.lower() == 'done':
break
try:
salary = int(user_input)
if salary < 0:
print("Invalid input. Salary must be a non-negative integer.")
else:
salaries.append(salary)
except ValueError:
print("Invalid input. Please enter a valid integer.")
salaries = []
while True:
user_input = input("Enter an employee's monthly salary (or type 'done' to finish): ")
if user_input.lower() == 'done':
break
try:
salary = int(user_input)
if salary < 0:
print("Invalid input. Salary must be a non-negative integer.")
else:
salaries.append(salary)
except ValueError:
print("Invalid input. Please enter a valid integer.")
if salaries:
a_count, b_count, c_count = classify_salaries(salaries)
print(f"A level (<= 35000): {a_count} employees")
print(f"B level (35000 - 100000): {b_count} employees")
print(f"C level (> 100000): {c_count} employees")
else:
print("No valid salaries were entered.")
a_count, b_count, c_count = classify_salaries(salaries)
print(f"A level (<= 35000): {a_count} employees")
print(f"B level (35000 - 100000): {b_count} employees")
print(f"C level (> 100000): {c_count} employees")
else:
print("No valid salaries were entered.")
if __name__ == "__main__":
main()
main()
C++
#include <iostream>
#include <vector>
#include <string>
#include <vector>
#include <string>
using namespace std;
void classifySalaries(const vector<int>& salaries, int& a_count, int& b_count, int& c_count) {
a_count = b_count = c_count = 0;
for (int salary : salaries) {
if (salary <= 35000) {
a_count++;
} else if (salary <= 100000) {
b_count++;
} else {
c_count++;
}
}
}
a_count = b_count = c_count = 0;
for (int salary : salaries) {
if (salary <= 35000) {
a_count++;
} else if (salary <= 100000) {
b_count++;
} else {
c_count++;
}
}
}
int main() {
vector<int> salaries;
string user_input;
vector<int> salaries;
string user_input;
while (true) {
cout << "Enter an employee's monthly salary (or type 'done' to finish): ";
cin >> user_input;
cout << "Enter an employee's monthly salary (or type 'done' to finish): ";
cin >> user_input;
if (user_input == "done") {
break;
}
break;
}
try {
int salary = stoi(user_input);
if (salary < 0) {
cout << "Invalid input. Salary must be a non-negative integer." << endl;
} else {
salaries.push_back(salary);
}
} catch (invalid_argument&) {
cout << "Invalid input. Please enter a valid integer." << endl;
}
}
int salary = stoi(user_input);
if (salary < 0) {
cout << "Invalid input. Salary must be a non-negative integer." << endl;
} else {
salaries.push_back(salary);
}
} catch (invalid_argument&) {
cout << "Invalid input. Please enter a valid integer." << endl;
}
}
if (!salaries.empty()) {
int a_count, b_count, c_count;
classifySalaries(salaries, a_count, b_count, c_count);
cout << "A level (<= 35000): " << a_count << " employees" << endl;
cout << "B level (35000 - 100000): " << b_count << " employees" << endl;
cout << "C level (> 100000): " << c_count << " employees" << endl;
} else {
cout << "No valid salaries were entered." << endl;
}
int a_count, b_count, c_count;
classifySalaries(salaries, a_count, b_count, c_count);
cout << "A level (<= 35000): " << a_count << " employees" << endl;
cout << "B level (35000 - 100000): " << b_count << " employees" << endl;
cout << "C level (> 100000): " << c_count << " employees" << endl;
} else {
cout << "No valid salaries were entered." << endl;
}
return 0;
}
}