c语言for循环,薪资计算
本帖最后由 Jesp 于 2020-3-18 12:00 编辑新手学习c语言,自制一个小工具——薪资计算器
定义了存储器(int sanm;//用户输入的数字,用作用户输入了数字几,然后当作有几个月的提成)
还有一个月固定的收入(double yiyue;//一月)
提成(double ticheng;)
上次调试前double的都是float,结尾保留数字用了%0.2f。
现在就是我需要输入几个月的提成,然后for循环那边老出错,比如我输入要统计6个月的提成,他就只显示几个月,然后直接跳出循环了。后来我加上了一个判断的,但还是不行
#include<stdio.h>
#include<stdlib.h>
int main(void) {
int sanm; //用户输入的数字
double yiyue;//一月
double ticheng;
ticheng = 0;
//开始计算
printf("\n\n\t\t\t\t\t您的月薪是:"
);
scanf_s("\n\n%lf", &yiyue
);
printf("\n\t\t\t\t\t你要统计几个月的薪资(按月统计)"
);
scanf_s("\n\n%d", &sanm
);
printf("\n\t\t\t\t\t您的这"
);
printf("%d", sanm
);
printf("个月提成分别是:"
);
for (int i = 1; sanm >= i; i++) {
double p;
scanf_s("\n\t\t\t\t\t%lf\n", &p);
ticheng = ticheng + p;
if (i = sanm)
{
break;
}
}
printf("\n\n\n\n\t\t\t\t\t您这"
);
printf("%d", sanm
);
printf("个月的薪资是:%.2g$", yiyue * sanm + ticheng
);
printf("\n\n\t\t\t\t\t您的年薪是:%.2g$(不算提成)", yiyue * 12
);
printf("\a\n\n\t\t\t\t\t您"
);
printf("%d", sanm
);
printf("个月总计:%.2g$\n\n\n\n\n", yiyue * sanm + ticheng
);
//计算结束!!!!
return 0;
}
经过模仿大佬的步伐后:
#include<stdio.h>
#include<stdlib.h>
int main(void) {
int sanm; //用户输入的数字
float yiyue;//一月
float ticheng;
ticheng = 0.0;
//开始计算
printf("\n\n\t\t\t\t\t您的月薪是:");
scanf_s("%f", &yiyue);
printf("\n\t\t\t\t\t你要统计几个月的薪资(按月统计)");
scanf_s("%d", &sanm);
printf("\n\t\t\t\t\t您的这");
printf("%d", sanm);
printf("个月提成分别是:");
for (int i = 1; i <= sanm; i++)
{
float p;
printf("\n\t\t\t\t\t请输入第%d个月的提成:", i);
scanf_s("%f", &p);
printf("\n\t\t\t\t\t你输入了第%d个月的提成:%.2f\n", i, p);
printf("\t\t\t\t\t");
ticheng = ticheng + p;
}
printf("\n\t\t\t\t\t您这");
printf("%d", sanm);
printf("个月的薪资是:%.2f$", yiyue * sanm + ticheng);
printf("\n\t\t\t\t\t您的年薪是:%.2f$(不算提成)", yiyue * 12);
printf("\a\n\t\t\t\t\t您");
printf("%d", sanm);
printf("个月总计:%.2f$\n\n\n", yiyue * sanm + ticheng);
//计算结束!!!!
system("Pause");
return 0;
} 本帖最后由 luanshils 于 2020-3-17 09:58 编辑
我记得等于是双等吧?
你这:if (i = sanm)
是不是有问题。。。
单个等号是复制,双个等号是判断 scanf是格式输入,你别加那么多换行 #include<stdio.h>
#include<stdlib.h>
int main(void) {
int sanm; //用户输入的数字
double yiyue;//一月
double ticheng;
ticheng = 0.0;
//开始计算
printf("\n\n\t\t\t\t\t您的月薪是:");
scanf_s("%lf", &yiyue);
printf("\n\t\t\t\t\t你要统计几个月的薪资(按月统计)");
scanf_s("%d", &sanm);
printf("\n\t\t\t\t\t您的这");
printf("%d", sanm);
printf("个月提成分别是:");
for (int i = 1; i<=sanm; i++)
{
double p;
printf("\n\t\t\t\t\t请输入第%d个月的提成:",i);
scanf_s("%lf", &p);
printf("\n\t\t\t\t\t你输入了第%d个月的提成:%lf\n",i,p);
printf("\t\t\t\t\t");
ticheng = ticheng + p;
}
printf("\n\t\t\t\t\t您这");
printf("%d", sanm);
printf("个月的薪资是:%.2g$", yiyue * sanm + ticheng);
printf("\n\t\t\t\t\t您的年薪是:%.2g$(不算提成)", yiyue * 12);
printf("\a\n\t\t\t\t\t您");
printf("%d", sanm);
printf("个月总计:%.2g$\n", yiyue * sanm + ticheng);
//计算结束!!!!
system("Pause");
return 0;
} 这问题用EXCEL更好吧{:301_1001:} 涉及到小数求值尽量用int和除法实现
另外 if (i == sanm)
{
break;
}
你再试一下 尽量不要用double类型的 浮点型永远是近似等于而且会出现小数位丢弃问题 这也能水一贴? for循环条件错了应该是for (int i = 1; sanm <= i; i++) 。。。还需要好好看看书,for循环条件、if判断条件都错了 乌巢禅师 发表于 2020-3-17 09:57
#include
#include
非常感谢,学习了{:301_997:}
页:
[1]
2