现在的位置: 首页 > 综合 > 正文

2013-C++第10周OJ题目及参考答案

2013年02月12日 ⁄ 综合 ⁄ 共 2333字 ⁄ 字号 评论关闭

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759

1030 Problem  A 求奖金总数

Description

企业发放的奖金根据利润提成。利润低于或等于100000元的,奖金可提10%;

利润高于100000元,低于200000元(100000<I≤200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成 7.5%;

200000<I≤400000时,低于200000元部分仍按上述办法提成,(下同),高于200000元的部分按5%提成;

400000<I≤600000元时,高于400000元的部分按3%提成;600000<I≤1000000时,高于600000元的部分按1.5%提成;

I>1000000时,超过1000000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数。

Input

一个整数,当月利润。

Output

一个整数,奖金。

Sample Input

900

Sample Output

90

参考解答1:

#include<iostream>
using namespace std;
int main()
{
    double jj,rate;
    cin>>rate;
    if(rate<=100000)
        jj=rate*0.1;
    if(rate>100000&&rate<=200000)
        jj=100000*0.1+(rate-100000)*0.75;
    if(rate>200000&&rate<=400000)
        jj=100000*0.1+100000*0.75+(rate-200000)*0.05;
    if(rate>400000&&rate<=600000)
        jj=100000*0.1+100000*0.75+200000*0.05+(rate-400000)*0.03;
    if(rate>600000&&rate<=1000000)
        jj=100000*0.1+100000*0.75+200000*0.05+200000*0.03+(rate-600000)*0.015;
    if(rate>1000000)
        jj=100000*0.1+100000*0.75+200000*0.05+200000*0.03+400000*0.015+(rate-1000000)*0.01;
    cout<<jj;
    return 0;
}

参考解答2:

#include <iostream>
using namespace std;
int main()
{
    int l,salary;
    cin>>l;
    switch(l/100000)
    {
    case 0:
        salary=l*0.1;
        break;
    case 1:
        salary=100000*0.1+(l-100000)*0.075;
        break;
    case 2:
    case 3:
        salary=100000*0.1+100000*0.75+(l-200000)*0.05;
        break;
    case 4:
    case 5:
        salary=100000*0.1+100000*0.75+200000*0.05+(l-400000)*0.003;
        break;
    case 6:
    case 7:
    case 8:
    case 9:
        salary=100000*0.1+100000*0.75+200000*0.05+200000*0.003+(l-600000)*0.015;
        break;
    default:
        salary=100000*0.1+100000*0.75+200000*0.05+200000*0.003+400000*0.015+(l-1000000)*0.01;
        break;
    };
    cout<<salary;
    return 0;
}

2400 Problem  B 多个数的平均值【简单循环】

Description

输入nn个整数(n不超过20),输出这n个数的平均值

Input

整数nn个整数,各数用空格隔开

Output

n个整数的平均值(整数)

Sample Input

4 2 4 6 8

Sample Output

5

参考解答:

#include <iostream>
using namespace std;
int main()
{
    int n, i , a;
    int sum = 0;
    cin>>n;
    for (i=0; i<n; i++)
    {
        cin>>a;
        sum+=a;
    }
    cout<<sum/n;
    return 0;
}

2401 Problem  C 等比数列之和【简单循环】 

Description

已知qn,求等比数列之和: 1+q+q2+q3+q4+…+qn

Input

输入一对数据,含有一个整数n(1≤n≤20),一个小数q(0q2)

Output

对于每组数据nq,计算其等比数列的和,精确到小数点后5位。 

Sample Input

5 1.2

Sample Output

9.92992

HINT

C语言中,将printf("%.5f\n",x); 可以令x的值保留5位小数输出。

C++中,cout<<setiosflags(ios::fixed)<<setprecision(5)<<x<<endl;x的值保留5位小数输出,另外,需加头文件#include<iomanip>

参考解答:

#include<iostream> 
#include<iomanip> 
using namespace std; 
int main() 
{ 
    int n,i; 
    double sum=1,q,k=1; 
    cin>>n>>q; 
    for(i=1; i<=n; i++) 
    { 
        k=k*q; 
        sum=k+sum; 
    } 
    cout<<setiosflags(ios::fixed)<<setprecision(5)<<sum<<endl; 
    return 0; 
} 

   

 

抱歉!评论已关闭.