#include <stdio.h>
#include <windows.h>
void meum(void);
double xuanze(char ch);
int main(void)
{
const int jbsj = 40;
const double jb = 1.5;
const double shui15 = 0.15;
const double shui20 = 0.20;
const double shui25 = 0.25;
const int jd1 = 300;
const int jd2 = 450;
double sj, base, gz, shui, jgz;
char ch;
meum();
while((ch = getchar()) != 'q')
base = xuanze(ch);
printf("请输入您工作的时间: \n");
// while ((scanf_s("%lf", &sj)) == 1.00) {
while ((sj = getchar()) != 'q'){
if (sj > jbsj)
sj = 40 + (sj - 40)*1.5;
gz = sj * base;
if (gz <= 300) {
shui = gz * shui15;
jgz = gz - shui;
}
else if (gz <= 450) {
shui = jd1 * shui15 + (gz - jd1) * shui20;
jgz = gz - shui;
}
else {
shui = jd1 * shui15 + (jd2 - jd1) * shui20 + (gz - jd1) * shui25;
jgz = gz - shui;
}
printf("您的工资为%.2f,税金为%.2f,净工资为%.2f.\n\n\n", gz, shui, jgz);
fflush(stdin);
meum();
}
system("pause");
return 0;
}
void meum(void)
{
printf("*************************************************************************\n");
printf("a)$8.75/hr b)$9.33/hr\n");
printf("c)$10.00/hr d)$11.20/hr\n");
printf("q)quit \n");
printf("*************************************************************************\n");
printf("请根据以上选项输入您的每小时的基本工资(q to quit): ");
}
double xuanze(char ch)
{
double base;
switch (ch) {
case 'a': base = 8.75; break;
case 'b': base = 9.33; break;
case 'c': base = 10.00; break;
case 'd': base = 11.20; break;
default: printf("请输入a、b、c、d,q to quit.\n"); break;
}
printf("您的基本工资为%.2f/H.\n", base);
return base;
}
以上写之后有不少问题存在,因此修正为以下代码:
感谢论坛qq423399099及ghx287524027指教。
#include <stdio.h>
#include <windows.h>
void meum(void);
double xuanze(char ch);
void jisuan(double base);
int main(void)
{
double base = 0.00;
char ch;
meum();
while((ch = getchar()) != 'q'){
base = xuanze(ch);
jisuan(base);
fflush(stdin);
meum();
}
system("pause");
return 0;
}
void meum(void)
{
printf("*************************************************************************\n");
printf("a)$8.75/hr b)$9.33/hr\n");
printf("c)$10.00/hr d)$11.20/hr\n");
printf("q)quit \n");
printf("*************************************************************************\n");
printf("请根据以上选项输入您的每小时的基本工资(q to quit): ");
}
double xuanze(char ch)
{
double base;
int flag = 1;
while(1)
{
flag = 1;
switch (ch) {
case 'a':
case 'A': base = 8.75; break;
case 'b':
case 'B': base = 9.33; break;
case 'c':
case 'C': base = 10.00; break;
case 'd':
case 'D': base = 11.20; break;
default:
{
printf("请输入a、b、c、d,q to quit.\n"); flag = 0; fflush(stdin); ch = getchar();break;
}
}
if(flag)
break;
}
printf("您的基本工资为%.2f/H.\n", base);
return base;
}
void jisuan(double base)
{
const int jbsj = 40;
const double shui15 = 0.15;
const double shui20 = 0.20;
const double shui25 = 0.25;
const int jd1 = 300;
const int jd2 = 450;
double gz, sj, shui, jgz;
gz = sj = shui = jgz = 0.00;
printf("请输入您工作的时间: \n");
scanf_s("%lf", &sj);
if (sj > jbsj)
sj = 40 + (sj - 40)*1.5;
gz = sj * base;
if (gz <= 300)
shui = gz * shui15;
else if (gz <= 450)
shui = jd1 * shui15 + (gz - jd1) * shui20;
else
shui = jd1 * shui15 + (jd2 - jd1) * shui20 + (gz - jd1) * shui25;
jgz = gz -shui;
printf("您的工资为%.2f,税金为%.2f,净工资为%.2f.\n\n\n", gz, shui, jgz);
}
本文介绍了一个改进的薪资计算程序,包括用户输入小时基本工资、工作时间、税率等信息,并根据不同的工作时间区间进行税率计算,最后输出总工资、税金和净工资。

被折叠的 条评论
为什么被折叠?



