#include <stdio.h>
#define s1 0.15
#define s2 0.2
#define s3 0.25
int main(void)
{
double t=0.0;
double g = 0.0;
double s=0.0;
printf("请输入工作时长");
t = getchar();
if (t < 40.0)
g = 1000.0 * t;
else
g = 40000.0 + (t - 40.0) * 4000.0 * 1.5;
if (g <= 300.0)
s = g * s1;
else if (g > 300.0 && g <= 450.0)
s = 300.0 * s1 + (g - 300.0) * s2;
else
s = 300.0 * s1 + 150.0 * s2 + (g - 450.0) * s3;
printf("%f %f %f %f",t, g, s, g - s);
return 0;
}
t 用 getchar() 是读取一个字符,你输入0获取的是字符'0',不是数值0
48是字符'0'的ascii编码,49是字符'1'的ascii编码,
你要读取double类型数值应该改成
scanf("%lf", &t);
你题目的解答代码如下:
#include <stdio.h>
#define s1 0.15
#define s2 0.2
#define s3 0.25
int main(void)
{
double t = 0.0;
double g = 0.0;
double s = 0.0;
printf("请输入工作时长");
// t = getchar();
scanf("%lf", &t);
if (t < 40.0)
g = 1000.0 * t;
else
g = 40000.0 + (t - 40.0) * 4000.0 * 1.5;
if (g <= 300.0)
s = g * s1;
else if (g > 300.0 && g <= 450.0)
s = 300.0 * s1 + (g - 300.0) * s2;
else
s = 300.0 * s1 + 150.0 * s2 + (g - 450.0) * s3;
printf("%lf %lf %lf %lf", t, g, s, g - s);
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
getchar是获取键盘输入的字符,你输入’0‘转换成ASCII码是48,’1‘的ASCII码对应的是49
读取int型数据要用scanf("%d", &t);
把getchar换成scanf,getchar读入的是字符,返回的是一个整数,把零转化成了ascii码值
将t = getchar();改为scanf("%lf",&t);如图: