翁愷《C語言程序設計》例題


部分例題以及格式來自:中國大學MOOC-翁愷-C語言程序設計習題集(一) - Assassinの - 博客園 (cnblogs.com) ,代碼是自己寫的。


 

02-0. 整數四則運算(10)

本題要求編寫程序,計算2個正整數的和、差、積、商並輸出。題目保證輸入和輸出全部在整型范圍內。

輸入格式:

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

輸出格式:

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

輸入樣例:

  2 3

代碼:

#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;
}
02-0.c

 

02-1. 厘米換算英尺英寸(15)

 

 如果已知英制長度的英尺foot和英寸inch的值,那么對應的米是(foot+inch/12)*0.3048。現在,如果用戶輸入的是厘米數,那么對應英制長度的英尺和英寸是多少呢?別忘了1英尺等於12英寸。

輸入格式:

  輸入在一行中給出1個正整數,單位是厘米。

輸出格式:

  在一行中輸出這個厘米數對應英制長度的英尺和英寸的整數值,中間用空格分開。

輸入樣例:
  170
輸出樣例:
  5 6
代碼:

#include<stdio.h>

int main(){
    int centimeter, foot, inch;
    float meter;
    scanf("%d", &centimeter);
    
    meter = centimeter/100.0;
    foot = meter/0.3048;
    inch = (meter/0.3048 - foot)*12;
    
    printf("%d %d\n", foot, inch);
    
    return 0;
}
02-1.c

 

02-2. 然后是幾點(15)

有時候人們用四位數字表示一個時間,比如1106表示11點零6分。現在,你的程序要根據起始時間和流逝的時間計算出終止時間。 讀入兩個數字,第一個數字以這樣的四位數字表示當前時間,第二個數字表示分鍾數,計算當前時間經過那么多分鍾后是幾點,結果也表示為四位數字。當小時為個位數時,沒有前導的零,即5點30分表示為530。注意,第二個數字表示的分鍾數可能超過60,也可能是負數。

輸入格式:

  輸入在一行中給出2個整數,分別是四位數字表示的起始時間、以及流逝的分鍾數,其間以空格分隔。注意:在起始時間中,當小時為個位數時,沒有前導的零,即5點30分表示為530;流逝的分鍾數可能超過60,也可能是負數。

輸出格式:

  輸出四位數字表示的終止時間。題目保證起始時間和終止時間在同一天內。

輸入樣例:
  1120 110
輸出樣例:
  1310
代碼:

#include<stdio.h>

int main(){
    int time, hour, minute, passmin;
    
    scanf("%d %d", &time, &passmin);
    hour = time/100;
    minute = time - hour*100;
    hour = hour + passmin/60;
    minute = minute + passmin - passmin/60*60;
    hour = hour + minute/60;
    minute = minute - minute/60*60;
    time = hour*100 + minute;
    
    printf("%d\n", time);
    
    return 0;
}
02-2.c

 

02-3. 逆序的三位數(10)

程序每次讀入一個正3位數,然后輸出按位逆序的數字。注意:當輸入的數字含有結尾的0時,輸出不應帶有前導的0。比如輸入700,輸出應該是7。

輸入格式:

  每個測試是一個3位的正整數。

輸出格式:

  輸出按位逆序的數。

輸入樣例:

  123

輸出樣例:

  321

 代碼:

#include<stdio.h>

int main(){
    int n, t ,s=0;
    scanf("%d",&n);
    
    while(n>0){
        t = n % 10;
        s = s*10 + t;
        n/=10;
    }
    
    printf("%d\n",s);
    
    return 0;
}
02-3.c

 

02-4. BCD解密(10)

BCD數是用一個字節來表達兩位十進制的數,每四個比特表示一位。所以如果一個BCD數的十六進制是0x12,它表達的就是十進制的12。但是小明沒學過BCD,把所有的BCD數都當作二進制數轉換成十進制輸出了。於是BCD的0x12被輸出成了十進制的18了!

現在,你的程序要讀入這個錯誤的十進制數,然后輸出正確的十進制數。提示:你可以把18轉換回0x12,然后再轉換回12。

輸入格式:

  輸入在一行中給出一個[0, 153]范圍內的正整數,保證能轉換回有效的BCD數,也就是說這個整數轉換成十六進制時不會出現A-F的數字。

輸出格式:

  輸出對應的十進制數。

輸入樣例:
  18
輸出樣例:
  12
代碼:

#include<stdio.h>

int main(){
    int n, bcd, decimal;
    
    scanf("%d", &n);
    
    bcd = n/16%16*10 + n%16;
    /*題目說明了不會出現A-F
    因此表現形式上decimal等於bcd */
    decimal = bcd; 
    
    printf("%d\n", decimal);
    return 0;
}
02-4.c

 

03-1. 三天打魚兩天曬網(15)

中國有句俗語叫“三天打魚兩天曬網”。假設某人從某天起,開始“三天打魚兩天曬網”,問這個人在以后的第N天中是“打魚”還是“曬網”?

輸入格式:

  輸入在一行中給出1個不超過1000的正整數N。

輸出格式:

  在一行中輸出此人在第N天中是“Fishing”(即“打魚”)還是“Drying”(即“曬網”),並且輸出“in day N”。

輸入樣例1:
  103
輸出樣例1:
  Fishing in day 103
輸入樣例2:
  34
輸出樣例2:
  Drying in day 34
代碼:

#include<stdio.h>

int main(){
    int n;
    scanf("%d",&n);
    
    if(n%5==0||n%5==4){
        printf("Drying in day %d\n",n);
    } 
    else{
        printf("Fishing in day %d\n",n);
    }
    return 0;
}
03-1.c

 

03-4. 成績轉換(15)

本題要求編寫程序將一個百分制成績轉換為五分制成績。轉換規則:

  大於等於90分為A;小於90且大於等於80為B;小於80且大於等於70為C;小於70且大於等於60為D;小於60為E。
輸入格式:

  輸入在一行中給出1個整數的百分制成績。

輸出格式:

  在一行中輸出對應的五分制成績。

輸入樣例:
  90
輸出樣例:
  A
代碼:

#include<stdio.h>

int main(){
    int score;
    scanf("%d", &score);
    
    switch(score/10){
        case 10:
            printf("A");
            break;
        case 9:
            printf("A");
            break;
        case 8:
            printf("B");
            break;
        case 7:
            printf("C");
            break;
        case 6:
            printf("D");
            break;
        default:
            printf("E");
            break;
    }
    
    return 0;
}
03-4.c

 


免責聲明!

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



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