noip第4课作业

1.    计算邮资

【问题描述】

根据邮件的重量和用户是否选择加急计算邮费。计算规则:重量在1000克以内 (包含1000克),基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。

输入:输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。

输出:一行,包含一个整数,表示邮费。

【样例输入】

1200 y

【样例输出】

17

#include <iostream>
using namespace std;
int main(){
    int m, money;
    char n;
    cin >> m >> n;
    if(m<=1000){
        money = 8;
    }else{
        if(m%500==0){
            money = 8 + (m-1000)/500*4;
        }else{
            money = 8 + (m-1000)/500*4+4;
        }
    }
    if(n=='y'){
        money += 5;
    }
    cout << money <<endl;
    return 0;
}

2.    判断能否被3,5,7整除

【问题描述】

给定一个整数,判断它能否被3,5,7整除,并输出以下信息:

1、能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格);

2、只能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者 3 7或者5 7,中间用空格分隔);

3、只能被其中一个数整除(输出这个除数);

4、不能被任何数整除,输出小写字符‘n’,不包括单引号。

输入:输入一行,包括一个整数。

输出:输出一行,按照描述要求给出整数被3,5,7整除的情况。

【样例输入】

105

【样例输出】

3 5 7

#include <iostream>
using namespace std;
int main(){
    int n, i=0;
    cin >> n;
    if(n%3==0){
        cout << 3 << " ";
        i++;
    }
    if(n%5==0){
        cout << 5 << " ";
        i++;
    }
    if(n%7==0){
        cout << 7 << endl;
        i++;
    }
    if(i==0){
        cout << "n" << endl; 
    } 
    return 0;
}

1.    分段函数

【问题描述】

编写程序,计算下列分段函数y=f(x)的值。

y=-x+2.5; 0 <= x < 5

y=2-1.5(x-3)(x-3); 5 <= x < 10

y=x/2-1.5; 10 <= x < 20

输入:一个浮点数N,0 <= N < 20

输出:输出N对应的分段函数值:f(N)。结果保留到小数点后三位。

【样例输入】

1.0

【样例输出】

1.500

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
    double x, y;
    cin >> x;
    if(x>=0&&x<5){
        y = -x + 2.5;
    }else if(x<10){
        y = 2-1.5*(x-3)*(x-3);
    }else if(x<20){
        y = x/2-1.5;
    }
    cout << fixed << setprecision(3) << y << endl;
    return 0;
}

2.    小玉家的电费

【问题描述】

夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了。小玉家今天收到了一份电费通知单。小玉看到上面写:据闽价电[2006]27号规定,月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行,月用电量在151~400千瓦时的部分按每千瓦时0.4663元执行,月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行;小玉想自己验证一下,电费通知单上应交电费的数目到底是否正确呢。请编写一个程序,已知用电总计,根据电价规定,计算出应交的电费应该是多少。

输入:一个整数,表示用电总计(单位以千瓦时计),不超过10000

输出:输出一个数,保留到小数点后1位(单位以元计,保留到小数点后1位)。

【样例输入】

267

【样例输出】

121.5

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
    int n;
    double money;
    cin >> n;
    if(n<=150){
        money = n*0.4463;
    }else if(n<=400){
        money = 150*0.4463+(n-150)*0.4663;
    }else{
        money = 150*0.4463+250*0.4663+(n-400)*0.5663;
    }
    cout << fixed << setprecision(1) << money << endl;
    return 0;
}

3.    求一元二次方程的根

【问题描述】

利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2+ bx + c =0的根,其中a不等于0。

输入:一行,包含三个浮点数a, b, c(它们之间以一个空格分开),分别表示方程ax2 + bx + c =0的系数。

输出:输出一行,表示方程的解。
若b2 = 4 * a * c,则两个实根相等,则输出形式为:x1=x2=...。
若b2 > 4 * a * c,则两个实根不等,则输出形式为:x1=...;x2 = ...,其中x1>x2。
若b2 < 4 * a * c,则有两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i,即x1的虚部系数大于等于x2的虚部系数,实部为0时不可省略。实部 = -b / (2*a), 虚部 = sqrt(4*a*c-b*b) / (2*a)

所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。

【样例输入】

1.0 2.0 8.0

【样例输出】

x1=-1.00000+2.64575i; x2=-1.00000-2.64575i

#include <cstdio>
#include <cmath>
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main(){
    double a,b,c,x1,x2;
    cin >> a >> b >> c;
    if(b*b==4*a*c){
        x1=x2=-b/(2*a);
        cout<<fixed<<setprecision(5)<<"x1=x2="<<x1<<endl;
    }else if(b*b>4*a*c){
        x1 = (-b + sqrt(b*b-4*a*c))/(2*a);
        x2 = (-b - sqrt(b*b-4*a*c))/(2*a);
        cout<<fixed<<setprecision(5)<<"x1="<<x1<<";"<<"x2="<<x2<<endl;
    }else{
        if(-b/(2*a)==0){
            x1=-b/(2*a)+sqrt(4*a*c-b*b)/(2*a);
            x2=-b/(2*a)-sqrt(4*a*c-b*b)/(2*a);
            cout<<fixed<<setprecision(5)<<"x1="<<b/(2*a)<<"+"<<sqrt(4*a*c-b*b)/(2*a)<<"i"<<";";
            cout<<fixed<<setprecision(5)<<"x2="<<b/(2*a)<<"-"<<sqrt(4*a*c-b*b)/(2*a)<<"i"<<endl;            
        }else{
            x1=-b/(2*a)+sqrt(4*a*c-b*b)/(2*a);
            x2=-b/(2*a)-sqrt(4*a*c-b*b)/(2*a);
            cout<<fixed<<setprecision(5)<<"x1="<<-b/(2*a)<<"+"<<sqrt(4*a*c-b*b)/(2*a)<<"i"<<";";
            cout<<fixed<<setprecision(5)<<"x2="<<-b/(2*a)<<"-"<<sqrt(4*a*c-b*b)/(2*a)<<"i"<<endl;
        }
    }
    return 0; 
}

猜你喜欢

转载自www.cnblogs.com/zhplovelnn/p/10371488.html