黑马程序员技术交流社区

标题: 1109_练习_swith语句_ 代码简化 [打印本页]

作者: donkey2    时间: 2014-11-9 15:03
标题: 1109_练习_swith语句_ 代码简化
本帖最后由 donkey2 于 2014-11-11 12:10 编辑

/*
已知某公司员工的工资底薪为500,员工销售的软件金额与提成方式如下:
销售额 ≤2000            没有提成
2000 < 销售额 ≤ 5000    提成8%
5000 < 销售额 ≤ 10000   提成10%
销售额 ≥ 10000          提成12%
利用switch求该员工的工资。
*/

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
//        NSLog(@"Hello, World!");


        int sall;
        scanf("%i",&sall);
        int income;
        int a = sall/1000;
        switch (a) {
            case 0:
                income = 500;
                NSLog(@"收入为%i",income);
                break;
            case 1:
                income = 500;
                 NSLog(@"收入为%i",income);
                break;
            case 2:
                income = sall * 0.08 + 500;
                 NSLog(@"收入为%i",income);
                break;
            case 3:
                income = sall * 0.08 + 500;
                 NSLog(@"收入为%i",income);
                break;
            case 4:
                income = sall * 0.08 + 500;
                 NSLog(@"收入为%i",income);
                break;
            case 5:
                income = sall * 0.08 + 500;
                 NSLog(@"收入为%i",income);
                break;

            default:
                income = sall * 0.12 + 500;
                 NSLog(@"收入为%i",income);
                break;
        }
    }
    return 0;
}

遇到的问题:
1. 刚开始0.08 写成了 8% ,计算出收入总是为 0。
未解决的问题:
2. 目前代码看起来有重复,请各位前辈指点一下怎么简化一下代码。
辛苦了!:handshake
//15:00


作者: donkey2    时间: 2014-11-9 15:16

刚才看了标准答案,又发现如下问题:1. 收入应该初始化为浮点类型,因为乘以百分数后可能又小数部分。
2.代码简化相关
  2.1 打印语句太多了,应该修改为只写一个打印语句。
2.2 switch 语句中,相同的处理可以方式的可以只写一个语句,只有一个break,
       对应几个处理方式相同的case。
目前想到的就这些,请各位指点。:)





作者: donkey2    时间: 2014-11-9 15:24
简化后的代码:
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
//        NSLog(@"Hello, World!");
        
        
        int sall;
        scanf("%i",&sall);
        int income;
        int a = sall/1000;
        switch (a) {
            case 0:
            case 1:
                income = 500;
                break;
            case 2:
            case 3:
            case 4:
            case 5:
                income = sall * 0.08 + 500;
                break;
               
            default:
                income = sall * 0.12 + 500;
                break;
        }
         NSLog(@"收入为%i",income);
    }
    return 0;
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2