1. 程式人生 > 其它 ><PAT>浙大版《C語言程式設計(第3版)》題目集 (練習2-1到練習2-18)

<PAT>浙大版《C語言程式設計(第3版)》題目集 (練習2-1到練習2-18)

技術標籤:PAT每日刷題c語言

浙大版《C語言程式設計(第3版)》題目集

練習2-1 Programming in C is fun!
本題要求編寫程式,輸出一個短句“Programming in C is fun!”。
輸入格式:

本題目沒有輸入。
輸出格式:

在一行中輸出短句“Programming in C is fun!”。

#include <stdio.h>
int main()
{
    printf("Programming in C is fun!");
    return 0;
}

**練習2-3 輸出倒三角圖案 **
本題要求編寫程式,輸出指定的由“*”組成的倒三角圖案。

輸入格式:

本題目沒有輸入。
輸出格式:

按照下列格式輸出由“*”組成的倒三角圖案。

* * * * 
 * * *
  * *
   *
#include <stdio.h>
int main()
{
    printf("* * * *\n");
    printf(" * * *\n");
    printf("  * *\n");
    printf("   *\n");
    return 0;
}

練習2-4 溫度轉換
本題要求編寫程式,計算華氏溫度150°F對應的攝氏溫度。計算公式:C=5×(F−32)/9,式中:C表示攝氏溫度,F表示華氏溫度,輸出資料要求為整型。

輸入格式:

本題目沒有輸入。
輸出格式:

按照下列格式輸出

fahr = 150, celsius = 計算所得攝氏溫度的整數值

#include <stdio.h>
int main()
{
    int fahr=150;
    int celsius;
    celsius = 5 * (fahr - 32)/9;
    printf("fahr = 150, celsius = %d",celsius);
    return 0;
}

練習2-6 計算物體自由下落的距離
一個物體從100米的高空自由落下。編寫程式,求它在前3秒內下落的垂直距離。設重力加速度為10米/秒​2​​。

輸入格式:

本題目沒有輸入。
輸出格式:

按照下列格式輸出

height = 垂直距離值

結果保留2位小數。

#include <stdio.h>
int main()
{
    float height;
    int t = 3;
    height = 5 * t * t;
    printf("height = %.2f",height);
    return 0;
}

練習2-8 計算攝氏溫度
給定一個華氏溫度F,本題要求編寫程式,計算對應的攝氏溫度C。計算公式:C=5×(F−32)/9。題目保證輸入與輸出均在整型範圍內。
輸入格式:

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

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

150

輸出樣例:

Celsius = 65

#include <stdio.h>
int main()
{
    int F,C;
    scanf("%d",&F);
    C = 5*(F-32)/9;
    printf("Celsius = %d",C);
    return 0;
}

練習2-9 整數四則運算
本題要求編寫程式,計算2個正整數的和、差、積、商並輸出。題目保證輸入和輸出全部在整型範圍內。
輸入格式:

輸入在一行中給出2個正整數A和B。
輸出格式:

在4行中按照格式“A 運算子 B = 結果”順序輸出和、差、積、商。
輸入樣例:

3 2

輸出樣例:

3 + 2 = 5
3 - 2 = 1
3 * 2 = 6
3 / 2 = 1

#include <stdio.h>
int main()
{
    int A,B;
    scanf("%d %d",&A,&B);
    printf("%d + %d = %d\n",A,B,A+B);
    printf("%d - %d = %d\n",A,B,A-B);
    printf("%d * %d = %d\n",A,B,A*B);
    printf("%d / %d = %d\n",A,B,A/B);
    return 0;
}

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

輸入格式:

輸入在一行中給出實數x。
輸出格式:

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

10

輸出樣例1:

f(10.0) = 0.1

輸入樣例2:

0

輸出樣例2:

f(0.0) = 0.0

#include <stdio.h>
int main()
{
    float x;
    scanf("%f",&x);
    float result;
    if (x != 0)
    {
        result = 1/x;
    }
    else 
    {
        result = 0;
    }
    printf("f(%.1f) = %.1f",x,result);
    return 0;
}

練習2-11 計算分段函式[2]

本題目要求計算下列分段函式f(x)的值:

公式

注:可在標頭檔案中包含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,result;
    scanf("%lf",&x);
    if (x >= 0 )
    {
        result = sqrt(x);
    }
    else if(x<= 0)
    {
        result = pow(x+1,2) + 2 *x+ 1/x;
    }
    printf("f(%.2f) = %.2f",x,result);
    return 0;
}

pow函式在C語言中的應用:
1.標頭檔案有#include <math.h>
2.pow(x,y),其中x,y為double型別。
3.x為底數,y為指數。

**練習2-12 輸出華氏-攝氏溫度轉換表 **

輸入2個正整數lower和upper(lower≤upper≤100),請輸出一張取值範圍為[lower,upper]、且每次增加2華氏度的華氏-攝氏溫度轉換表。

溫度轉換的計算公式:C=5×(F−32)/9,其中:C表示攝氏溫度,F表示華氏溫度。
輸入格式:

在一行中輸入2個整數,分別表示lower和upper的值,中間用空格分開。
輸出格式:

第一行輸出:“fahr celsius”

接著每行輸出一個華氏溫度fahr(整型)與一個攝氏溫度celsius(佔據6個字元寬度,靠右對齊,保留1位小數)。

若輸入的範圍不合法,則輸出"Invalid."。
輸入樣例1:

32 35

輸出樣例1:

fahr celsius
32 0.0
34 1.1

輸入樣例2:

40 30

輸出樣例2:

Invalid.

#include <stdio.h>
int main()
{
    int lower,upper;
    scanf("%d %d",&lower,&upper);
    int fahr;
    double celsius;
    if (lower > upper)
    {
        printf("Invalid.");
    }
    else
    {
        printf("fahr celsius\n");
        for(lower;lower<=upper;lower+=2)
        {
            fahr = lower;
            celsius = 5 * (1.0*fahr-32)/9;  //int 變double 記得變精度,前面乘1.0
            printf("%d%6.1f\n",fahr,celsius);
        }
    }
    return 0;
}

練習2-13 求N分之一序列前N項和

本題要求編寫程式,計算序列 1 + 1/2 + 1/3 + … 的前N項之和。
輸入格式:

輸入在一行中給出一個正整數N。
輸出格式:

在一行中按照“sum = S”的格式輸出部分和的值S,精確到小數點後6位。題目保證計算結果不超過雙精度範圍。
輸入樣例:

6

輸出樣例:

sum = 2.450000

#include <stdio.h>
int main()
{
    double sum=0;
    int n;
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
    {
        sum += 1.0/i;
    }
    printf("sum = %.6f",sum);
    return  0;
    
}

練習2-14 求奇數分之一序列前N項和

本題要求編寫程式,計算序列 1 + 1/3 + 1/5 + … 的前N項之和。
輸入格式:

輸入在一行中給出一個正整數N。
輸出格式:

在一行中按照“sum = S”的格式輸出部分和的值S,精確到小數點後6位。題目保證計算結果不超過雙精度範圍。
輸入樣例:

23

輸出樣例:

sum = 2.549541

#include<stdio.h>
int main()
{
    int n,i;
    double sum=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        sum += 1.0/(2*i-1);
    }
    printf("sum = %.6f",sum);
    return 0;
}

練習2-15 求簡單交錯序列前N項和

本題要求編寫程式,計算序列 1 - 1/4 + 1/7 - 1/10 + … 的前N項之和。
輸入格式:

輸入在一行中給出一個正整數N。
輸出格式:

在一行中按照“sum = S”的格式輸出部分和的值S,精確到小數點後三位。題目保證計算結果不超過雙精度範圍。
輸入樣例:

10

輸出樣例:

sum = 0.819

#include <stdio.h>
int main(void)
{
    //-2n與2n+1分開
    int n,space=1;//第二個是間隔
    double sum=0;
    double result;//存放每一個項
    int sign = 1;//標記正負號用的
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        result = 1.0*sign / space;
        sum += result;
        sign = -sign;
        space += 3;
    }
    printf("sum = %.3f",sum);
    return 0;
}

**練習2-17 生成3的乘方表 **

輸入一個非負整數n,生成一張3的乘方表,輸出3​0​​~3​n​​的值。可呼叫冪函式計算3的乘方。
輸入格式:

輸入在一行中給出一個非負整數n。
輸出格式:

按照冪的遞增順序輸出n+1行,每行格式為“pow(3,i) = 3的i次冪的值”。題目保證輸出資料不超過長整型整數的範圍。
輸入樣例:

3

輸出樣例:

pow(3,0) = 1
pow(3,1) = 3
pow(3,2) = 9
pow(3,3) = 27

#include <stdio.h>
#include <math.h>
int main()
{
    double n;
    int result;
    scanf("%lf",&n);
    for(double i=0;i<=n;i++)
    {
        result = pow(3,i);
        printf("pow(3,%.f) = %d\n",i,result);
    }
    return 0;
}

練習2-18 求組合數

本題要求編寫程式,根據公式C​n​m​​=​m!(n−m)!​​n!​​算出從n個不同元素中取出m個元素(m≤n)的組合數。

建議定義和呼叫函式fact(n)計算n!,其中n的型別是int,函式型別是double。
輸入格式:

輸入在一行中給出兩個正整數m和n(m≤n),以空格分隔。
輸出格式:

按照格式“result = 組合數計算結果”輸出。題目保證結果在double類型範圍內。
輸入樣例:

2 7

輸出樣例:

result = 21

#include <stdio.h>
//用一個fact函式作階乘
double fact(int n)
{
    double temp = 1;//0!=1
    for(int i=n;i>0;i--)
    {
        temp = temp *i;
    }
    return temp;
}
int main()
{
    int m,n;
    double result=0;
    scanf("%d %d",&m,&n);
    result = fact(n)/(fact(m)*fact(n-m));
    printf("result = %.0f\n",result);
    return 0;
}