标题:各位大佬们,在线错误求解如何改正,先谢谢你们哦
只看楼主
啦啦啦帆帆
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2019-10-8
 问题点数:0 回复次数:6 
各位大佬们,在线错误求解如何改正,先谢谢你们哦
某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。
输入格式:
输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。
输出格式:
在一行输出该员工的周薪,精确到小数点后2位。

#include<stdio.h>

int main(){
    int x,y;
    float z;
    scanf("%d%d\n",&x,&y);
    if(x<=5&&y<=40);  //新员工
        {
        z=30*y;
        printf("%.2f\n",z);
        }
    else if(x<=5&&y>40)  //新40上
       {
       z=1200+1.5*30*(y-40);
       printf("%.2f\n",z);
       }  
    else if(x>5&&y<=40)   //老员工
        {
        z=50*y;
        printf("%.2f\n",z);
        }
    else(x>5&&y>40);    //老40以上
        {
        z=2000+1.5*50*(y-40);
        printf("%.2f\n",z);
        }
 return 0;      
}

编译错误;
a.c: In function ‘main’:
a.c:7:2: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
  if(x<=5&&y<=40);  //新员工
  ^~
a.c:8:3: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘if’
   {
   ^
a.c:12:5: error: ‘else’ without a previous ‘if’
     else if(x<=5&&y>40)  //新40上
     ^~~~
a.c:22:10: warning: statement with no effect [-Wunused-value]
  else(x>5&&y>40);    //老40以上
      ~~~~^~~~~~~
a.c:6:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d\n",&x,&y);
     ^~~~~~~~~~~~~~~~~~~~~
搜索更多相关主题的帖子: 员工 时间 if 工作 printf 
2019-10-08 20:15
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
得分:0 
1,编译错误提示到if,应该查看一下if()与else语句后面是否有直接加分号的,一般是没有配套使用:即一个else必须对应一个if,如果找不到与else相对应的if则会报错。
if(x<=5&&y<=40);  //新员工
这个if语句后直接加一个分号,表示循环为一个空语句。后面else无法配对,提示报错。
2,我修改了一下程序运行时发现输入
2 41

运行结果为两个输出。
1245.00
2075.00

应该是if嵌套没有做好,产生了错误。

[此贴子已经被作者于2019-10-8 21:50编辑过]

2019-10-08 21:39
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:0 
程序代码:
#include<stdio.h>
int main(){
    int x,y;
    float z;
    scanf("%d %d\n",&x,&y);
    if(x<=5&&y<=40)  //新员工 
        {
          z=30*y;
          printf("%.2f\n",z);
        }
        else 
           if(x<=5&&y>40)  //新40上 
              {
                 z=1200+1.5*30*(y-40);
                 printf("%.2f\n",z);
              }  
                  else
                     if(x>5&&y<=40)   //老员工 
                        {
                          z=50*y;
                          printf("%.2f\n",z);
                        }
                          else if(x>5&&y>40)   //老40以上 
                               {
                                 z=2000+1.5*50*(y-40);
                                 printf("%.2f\n",z);
                                } 

 return 0;      
} 
2019-10-09 18:38
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
题意是“不少于5年的为老职工”,所以老职工的判断条件应为x>=5,下述两行代码应该可满足题目要求:
z=x<4?30:50;
printf("%.2f\n",y*z+(y-40)*z*(y>40?0.5:0));  //0.5出自1.5-1
收到的鲜花
  • bcbbcclbbc2019-10-10 05:49 送鲜花  5朵   附言:简洁明了,不含糊

能编个毛线衣吗?
2019-10-09 21:58
啦啦啦帆帆
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2019-10-8
得分:0 
回复 2楼 bcbbcclbbc
好的,谢谢你呀
2019-10-12 14:12
啦啦啦帆帆
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2019-10-8
得分:0 
回复 3楼 自学的数学
真心谢谢你呀
2019-10-12 14:14
啦啦啦帆帆
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2019-10-8
得分:0 
回复 4楼 wmf2014
哈哈哈谢谢你
2019-10-12 14:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497144-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018563 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved