一、某公司欲對薪資低於5萬元的員工調增薪資3%,但調薪後薪資上限5萬元,原薪資已達5萬元的員工不調薪。請用C/C++、C#或Java: (一)寫一程式片段,可供不斷輸入一位員工的薪資,計算其調薪後薪資。所有員工處理完後輸入A~Z之任一字元結束。(10分) (二)寫一程式片段,可供不斷輸入一位員工的薪資,所有員工處理完後輸入A~Z之任一字元結束。計算調薪後公司總薪資之增幅。(10分)
詳解 (共 3 筆)
詳解
/*本程式已測試過,可在Dev C++ 4.9.9.2執行 */
#include
using namespace std;
main()
{
float old_t,new_t;
float old_m,new_m,final;
old_t=0;
new_t=0;
char key_in;
key_in = 'a';
new_t=0;
old_t=0;
cout << "press any key" << endl;
cout << "請按A~Z鍵結束,或按任何鍵繼續:" << endl;
cin >> key_in;
while( (key_in < 'A') || (key_in > 'Z') )
{
old_m = 0;
new_m = 0;
cout << "請輸入員工薪資" << endl;
cin >> old_m;
old_t = old_t + old_m;
if (old_m >= 50000)
{
cout << "薪資已大於或等於50000,不調薪" << endl;
new_t = new_t + old_m ;
}
else
{
new_m = old_m * 1.03;
if(new_m >= 50000)
{
new_m = 50000;
cout << "調薪後薪資已大於或等於50000以50000計" << endl;
new_t = new_t + new_m;
}
else
{
printf("調薪後薪資是 %.1f\n",new_m);
new_t = new_t + new_m;
}
cout << "請按A~Z鍵結束,或按任何鍵繼續:"
<< endl;
cin >> key_in;
}
}
final = ((new_t - old_t)/old_t) * 100 ;
printf( "員工薪資總調幅為:%.0f %%\n ",final );
system("PAUSE");
return 0;
}
#include
using namespace std;
main()
{
float old_t,new_t;
float old_m,new_m,final;
old_t=0;
new_t=0;
char key_in;
key_in = 'a';
new_t=0;
old_t=0;
cout << "press any key" << endl;
cout << "請按A~Z鍵結束,或按任何鍵繼續:" << endl;
cin >> key_in;
while( (key_in < 'A') || (key_in > 'Z') )
{
old_m = 0;
new_m = 0;
cout << "請輸入員工薪資" << endl;
cin >> old_m;
old_t = old_t + old_m;
if (old_m >= 50000)
{
cout << "薪資已大於或等於50000,不調薪" << endl;
new_t = new_t + old_m ;
}
else
{
new_m = old_m * 1.03;
if(new_m >= 50000)
{
new_m = 50000;
cout << "調薪後薪資已大於或等於50000以50000計" << endl;
new_t = new_t + new_m;
}
else
{
printf("調薪後薪資是 %.1f\n",new_m);
new_t = new_t + new_m;
}
cout << "請按A~Z鍵結束,或按任何鍵繼續:"
<< endl;
cin >> key_in;
}
}
final = ((new_t - old_t)/old_t) * 100 ;
printf( "員工薪資總調幅為:%.0f %%\n ",final );
system("PAUSE");
return 0;
}
詳解
#include #define Upbound 50000 using namespace std; int main() { float Salary; while(cin>>Salary) { if(Salary >= Upbound) { cout<<"薪資無須調整"<= Upbound) Salary = Upbound; cout<<"調整後薪資為 "<
詳解
這個程式允許不斷輸入一位員工的薪資,計算其調薪後的薪資。當輸入非數字(A~Z之任一字元)時,程式結束。
csharp
Copy code
using System;
Copy code
using System;
class Program {
static void Main(string[] args) {
while (true) {
Console.WriteLine("請輸入員工的薪資(輸入A~Z之任一字元結束):");
string input = Console.ReadLine();
static void Main(string[] args) {
while (true) {
Console.WriteLine("請輸入員工的薪資(輸入A~Z之任一字元結束):");
string input = Console.ReadLine();
// 檢查輸入是否為結束條件的字母
if (input.Length == 1 && char.IsLetter(input[0])) {
Console.WriteLine("程式結束。");
break;
}
if (input.Length == 1 && char.IsLetter(input[0])) {
Console.WriteLine("程式結束。");
break;
}
// 嘗試將輸入轉換為薪資數值
if (double.TryParse(input, out double salary)) {
if (salary < 50000) {
// 計算調薪後的薪資,但不超過5萬元
double adjustedSalary = Math.Min(salary * 1.03, 50000);
Console.WriteLine($"調薪後的薪資為:{adjustedSalary}");
} else {
// 薪資已達或超過5萬元,不調薪
Console.WriteLine("薪資已達或超過5萬元,不調薪。");
}
} else {
Console.WriteLine("輸入的不是有效的薪資數值,請重新輸入。");
}
}
}
}
這段程式碼使用了 while (true) 迴圈來實現不斷的輸入。當輸入的是數字時,它會判斷薪資是否低於50000元,如果是,則按照要求調整薪資並輸出;如果薪資已達或超過50000元,則輸出不調薪的訊息。當輸入的是字母時,程式將結束。使用 double.TryParse 來安全地將輸入的字串轉換成薪資數值,如果轉換失敗(表示輸入的不是數字),則提示用戶重新輸入。
if (double.TryParse(input, out double salary)) {
if (salary < 50000) {
// 計算調薪後的薪資,但不超過5萬元
double adjustedSalary = Math.Min(salary * 1.03, 50000);
Console.WriteLine($"調薪後的薪資為:{adjustedSalary}");
} else {
// 薪資已達或超過5萬元,不調薪
Console.WriteLine("薪資已達或超過5萬元,不調薪。");
}
} else {
Console.WriteLine("輸入的不是有效的薪資數值,請重新輸入。");
}
}
}
}
這段程式碼使用了 while (true) 迴圈來實現不斷的輸入。當輸入的是數字時,它會判斷薪資是否低於50000元,如果是,則按照要求調整薪資並輸出;如果薪資已達或超過50000元,則輸出不調薪的訊息。當輸入的是字母時,程式將結束。使用 double.TryParse 來安全地將輸入的字串轉換成薪資數值,如果轉換失敗(表示輸入的不是數字),則提示用戶重新輸入。