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; 
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM