吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1718|回复: 12
收起左侧

[讨论] c语言for循环,薪资计算

[复制链接]
Jesp 发表于 2020-3-17 09:20
本帖最后由 Jesp 于 2020-3-18 12:00 编辑

                                                            新手学习c语言,自制一个小工具——薪资计算器

定义了存储器(int sanm;//用户输入的数字,用作用户输入了数字几,然后当作有几个月的提成)
还有一个月固定的收入(double yiyue;//  一月)
提成(double ticheng;)

上次调试前double的都是float,结尾保留数字用了%0.2f。
现在就是我需要输入几个月的提成,然后for循环那边老出错,比如我输入要统计6个月的提成,他就只显示几个月,然后直接跳出循环了。后来我加上了一个判断的,但还是不行


                                                                                                                                                                14732322125726560.png



[C] 纯文本查看 复制代码
#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;

}



                                                                               经过模仿大佬的步伐后:

[C] 纯文本查看 复制代码
#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:39
本帖最后由 luanshils 于 2020-3-17 09:58 编辑

我记得等于是双等吧?
你这:
[Asm] 纯文本查看 复制代码
if (i = sanm)

是不是有问题。。。

单个等号是复制,双个等号是判断
乌巢禅师 发表于 2020-3-17 09:42
乌巢禅师 发表于 2020-3-17 09:57
[C] 纯文本查看 复制代码
#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;

}

免费评分

参与人数 1吾爱币 +1 收起 理由
Jesp + 1 非常感谢,学习了

查看全部评分

挑灯看花 发表于 2020-3-17 10:01
这问题用EXCEL更好吧
cjhk 发表于 2020-3-17 10:17
涉及到小数求值  尽量用int  和除法实现  
另外 if (i == sanm)
                {
                        break;
                }
你再试一下   尽量不要用double类型的   浮点型永远是近似等于  而且会出现小数位丢弃问题
scy_修文 发表于 2020-3-17 10:22
这也能水一贴?
曦阳520 发表于 2020-3-17 10:33
for循环条件错了应该是for (int i = 1; sanm <= i; i++)
然并卵zh 发表于 2020-3-17 11:06
。。。还需要好好看看书,for循环条件、if判断条件都错了
 楼主| Jesp 发表于 2020-3-18 11:53
乌巢禅师 发表于 2020-3-17 09:57
[mw_shl_code=c,true]#include
#include

非常感谢,学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 19:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表