PTA-2017實驗2.2 計算分段函數

7-1 計算攝氏溫度(10 分)
給定一個華氏溫度F,本題要求編寫程序,計算對應的攝氏溫度C。計算公式:C=5×(F?32)/9。題目保證輸入與輸出均在整型范圍內。

輸入格式:
輸入在一行中給出一個華氏溫度。

輸出格式:
在一行中按照格式“Celsius = C”輸出對應的攝氏溫度C的整數值。

輸入樣例:

150

輸出樣例:

Celsius = 65

源碼

    int Celsius,f;
    scanf("%d",&f);
    Celsius=5*(f-32)/9;
    printf("Celsius = %d",Celsius);
    return 0;

7-2 計算分段函數[1](10 分)
本題目要求計算下列分段函數f(x)的值:

公式
公式

輸入格式:
輸入在一行中給出實數x。
輸出格式:
在一行中按“f(x) = result”的格式輸出,其中x與result都保留一位小數。
輸入樣例1:

10

輸出樣例1:

f(10.0) = 0.1

輸入樣例2:

0

輸出樣例2:

f(0.0) = 0.0

源碼

    double x,y;
    scanf("%lf",&x);
    if(x!=0){
           y=1/x;
    }else{
        y=0;
    }
    printf("f(%.1lf) = %.1lf",x,y);
    return 0;

7-3 計算存款利息(10 分)
本題目要求計算存款利息,計算公式為interest=money×(1+rate)?year?? ?money,其中interest為存款到期時的利息(稅前),money是存款金額,year是存期,rate是年利率。

輸入格式:
輸入在一行中順序給出三個正實數money、year和rate,以空格分隔。

輸出格式:
在一行中按“interest = 利息”的格式輸出,其中利息保留兩位小數。

輸入樣例:

1000 3 0.025

輸出樣例:

interest = 76.89

源碼

#include <stdio.h>
#include <math.h>
//別忘了加math頭文件
int main() {
     double year,interest,rate,money;
     scanf("%lf %lf %lf",&money,&year,&rate);
     interest = money * pow(1 + rate,year) - money;
     printf("interest = %.2f",interest);
     return 0;
}

7-4 計算分段函數[2](10 分)
本題目要求計算下列分段函數f(x)的值:

f2-11
f2-11

注:可在頭文件中包含math.h,并調用sqrt函數求平方根,調用pow函數求冪。
輸入格式:
輸入在一行中給出實數x。
輸出格式:
在一行中按“f(x) = result”的格式輸出,其中x與result都保留兩位小數。
輸入樣例1:

10

輸出樣例1:

f(10.00) = 3.16

輸入樣例2:

-0.5

輸出樣例2:

f(-0.50) = -2.75

源碼

#include <stdio.h>
#include <math.h>
int main() {
    double x,y;
    scanf("%lf",&x);
    if(x>=0){
           y=pow(x,0.5);
    }else{
        y=pow(x+1,2)+2*x+1/x;
    }
     printf("f(%.2lf) = %.2lf",x,y);
     return 0;
}

7-5 求整數均值(10 分)
本題要求編寫程序,計算4個整數的和與平均值。題目保證輸入與輸出均在整型范圍內。

輸入格式:
輸入在一行中給出4個整數,其間以空格分隔。

輸出格式:
在一行中按照格式“Sum = 和; Average = 平均值”順序輸出和與平均值,其中平均值精確到小數點后一位。

輸入樣例:

1 2 3 4

輸出樣例:

Sum = 10; Average = 2.5

源碼

    int num1,num2,num3,num4,sum;
    double Average;
    scanf("%d %d %d %d",&num1,&num2,&num3,&num4);
    sum=num1+num2+num3+num4;
    Average=sum*1.0/4;
    printf("Sum = %d; Average = %.1lf",sum,Average);
    return 0;

7-6 階梯電價(15 分)
為了提倡居民節約用電,某省電力公司執行“階梯電價”,安裝一戶一表的居民用戶電價分為兩個“階梯”:月用電量50千瓦時(含50千瓦時)以內的,電價為0.53元/千瓦時;超過50千瓦時的,超出部分的用電量,電價上調0.05元/千瓦時。請編寫程序計算電費。

輸入格式:
輸入在一行中給出某用戶的月用電量(單位:千瓦時)。

輸出格式:
在一行中輸出該用戶應支付的電費(元),結果保留兩位小數,格式如:“cost = 應付電費值”;若用電量小于0,則輸出"Invalid Value!"。

輸入樣例1:

10

輸出樣例1:

cost = 5.30

輸入樣例2:

 100

輸出樣例2:

cost = 55.50

源碼

    int e;
    double m;
    scanf("%d",&e);
    if(e<0){
      printf("Invalid Value!");
    }
    else if(e<=50){
        m=0.53*e;
        printf("cost = %.2lf",m);
    }else{
        m=0.53*50+0.58*(e-50);
        printf("cost = %.2lf",m);
    }
    return 0;

7-7 計算火車運行時間(15 分)
本題要求根據火車的出發時間和達到時間,編寫程序計算整個旅途所用的時間。

輸入格式:
輸入在一行中給出2個4位正整數,其間以空格分隔,分別表示火車的出發時間和到達時間。每個時間的格式為2位小時數(00-23)和2位分鐘數(00-59),假設出發和到達在同一天內。

輸出格式:
在一行輸出該旅途所用的時間,格式為“hh:mm”,其中hh為2位小時數、mm為2位分鐘數。

輸入樣例:

1201 1530

輸出樣例:*

03:29

源碼

int main(void) {
    int num1,num2,hh,mm;
        scanf("%d %d",&num1,&num2);
        hh=num2/100-num1/100;
        mm=num2%100-num1%100;
        if(mm<0){
            mm+=60;
            hh-=1;
        }
        printf("%02d:%02d",hh,mm);
    return 0;
}

%f與%lf的區別

%f讀取8個字節,%lf也讀取8個字節。
%f 浮點數(包括float和double)
%lf為long double類型
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容