楼主的代码存在两个明显问题:
南岔网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联公司于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司。
1、数值类型掌握不好
计算工资时很可能出现小数,而楼主声明变量时完全采用了int型,先不说是否逻辑正确。int型的变量直接与后面代码冲突。
有两个问题:
1.1:
scanf()中楼主在括号内写的是%ld,%ld等待的输入类型是long int,而楼主声明的是
int。
1.2:
iCommission=(iSales*1.5);
iSales为整形,1.5为浮点型,iSales*1.5的结果会隐式转换为浮点型,而iCommission为
整型int。在赋值时会产生错误。
需要补充知识点:参数类型的定义和转换。请查阅任何一本C语言教材。
2、scanf()函数掌握不好
这也是楼主最关心的问题,scanf()中\n、空格和制表符都是是空白符。空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。只有输入一个非空白符的时候才能终止scanf的输入。另外在上一点提出的参数类型也需要格外注意。
需要补充知识点:scanf()函数的使用方法。请查阅相关文档。
再啰嗦几句:puts()函数用来向标准输出设备(屏幕)写字符串并换行,其调用方式为,puts(s);其中s为字符串字符(字符串数组名或字符串指针)。虽然楼主的使用方式也正确,但是最好也查阅一下更标准的使用方法。
下面贴出我修改后的代码:
#include stdio.h
int main()
{
double iSalary,iBasic,iCommission,iSales;
printf("Please enter the basic payment:");
scanf("%lf",iBasic);
printf("Please enter the sales:");
scanf("%lf",iSales);
iCommission=(iSales*1.5);
printf("提成工资为:%lf\n",iCommission);
iSalary=(iBasic+iCommission);
printf("月工资数量:");
printf("%lf",iSalary);
return 0;
}
请楼主注意其中变量类型的变化以及输入输出中%后面的变化。
小提示:编程过程中细节真的很重要啊,还有,以后遇到问题,试着分解成一个个小问题分析,再查找相关的解决办法,学会善用搜索引擎。比如楼主在输入时遇到了问题,就要想是不是scanf出问题了呀,进而去搜索它的正确用法。这才是真正的解决问题。
用C语言编写计算工人工资怎么编写?
某工厂按工人的工时计算工人工资,规则如下:工资按每小时84元计发。若总工时120小时,超过120小时的部分每小时加发15%;若总工时60小时,则总工资扣发700元。编写程序,从键盘录入某工人的工时,程序能计算并输出该工人的工资。(画出程序流程图)
用C语言编写计算工人工资怎么编写?
某工厂按工人的工时计算工人工资,规则如下:工资按每小时84元计发。若总工时120小时,超过120小时的部分每小时加发15%;若总工时60小时,则总工资扣发700元。编写程序,从键盘录入某工人的工时,程序能计算并输出该工人的工资。(画出程序流程图)
判断语句出错 应该拿上一次的high出来对比。你的判断漏洞在于如果k大于i。i小于m的时候不成立