中國大學MOOC-翁愷-C語言程序設計習題集(一)


練習

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

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

輸入格式:

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

輸出格式:

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

輸入樣例:
  3 2

代碼:

#include <stdio.h>


int main()
{
    
    int A = 0;
    int B = 0;
    printf("請輸入正整數 "); 
    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 1;
} 
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,intinch,foot;
    float meter,inch;
    scanf("%d",&centimeter);
    
    meter = centimeter / 100.0;
    intinch = meter / 0.3048;
    inch = meter / 0.3048;
    
    foot = (inch - intinch) * 12;
    printf("%d %d",intinch,foot);
    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 start,lost_minute,end,hour,minute,lost_hour;

    scanf("%d %d",&start,&lost_minute);
    
    hour = start / 100;
    
    minute = start - hour * 100;
    
    lost_hour = (lost_minute + minute) / 60;
    
    hour += lost_hour;
    
    minute = (lost_minute + minute) - lost_hour * 60;
    
    if (minute < 0 ){
        hour --;
        minute += 60; 
    }
    
    printf("%d",hour*100+minute);
    
}
02-2.c
#include <stdio.h>


int main()
{
    int start,lost_minute,hour,minute,all_minute;

    scanf("%d %d",&start,&lost_minute);
    
    hour = start / 100;
    
    all_minute = start % 100 + hour * 60 + lost_minute ;
    
    hour = all_minute / 60;
    
    minute = all_minute % 60;
    
    printf("%d",hour*100+minute);
    
    return 0;
}
02-2.c

 

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

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

輸入格式:

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

輸出格式:

  輸出按位逆序的數。

輸入樣例:

  123

輸出樣例:

  321

 代碼:

#include <stdio.h>


int main()
{
    int num,a,b,c;
    scanf("%d",&num);
    
    a = num / 100 ;
    b = (num - a*100) / 10;
    c = num % 10;
    
    printf("%d",c*100+b*10+a);
    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 num, hex, a, b, c;
    scanf("%d", &num);
    
    if (num >= 0 && num <=15){
        hex = num;
    }
    else{
        a = hex / 16;
        b = hex % 16 ;
        hex = a *10 +b;
    }
    
    printf("%d",hex);
    return 1;
}
02-4.c

 

03-0. 超速判斷(10)
模擬交通警察的雷達測速儀。輸入汽車速度,如果速度超出60 mph,則顯示“Speeding”,否則顯示“OK”。

輸入格式:

  輸入在一行中給出1個不超過500的非負整數,即雷達測到的車速。

輸出格式:

  在一行中輸出測速儀顯示結果,格式為:“Speed: V - S”,其中V是車速,S或者是Speeding、或者是OK。

輸入樣例1:
  40
輸出樣例1:
  Speed: 40 - OK
輸入樣例2:
  75
輸出樣例2:
  Speed: 75 - Speeding

代碼:

#include <stdio.h>

int main()
{
    int speed;
    scanf("%d",&speed);
    
    if (speed < 60){
        printf("Speed: %d - OK",speed);
    }
    else{
        printf("Speed: %d - Speeding",speed);
    }
}
03-0.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 day,n;
    
    scanf("%d",&day);
    
    n = day % 5;
    if (n <=3 && n >0){
        printf("Fishing in day %d",day);
    }
    else {
        printf("Drying in day %d",day);
    }
}
03-1.c

 

03-2. 用天平找小球(10)

三個球A、B、C,大小形狀相同且其中有一個球與其他球重量不同。要求找出這個不一樣的球。

輸入格式:

  輸入在一行中給出3個正整數,順序對應球A、B、C的重量。

輸出格式:

  在一行中輸出唯一的那個不一樣的球。

輸入樣例:
  1 1 2
輸出樣例:
  C
#include <stdio.h>


int main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    if (a = b){
        printf("C");
    }
    if (b = c){
        printf("A");
    }
    if (a = c){
        printf("B");
    }
}
03-2.c

 

03-3. 12-24小時制(15)
編寫一個程序,要求用戶輸入24小時制的時間,然后顯示12小時制的時間。

輸入格式:

  輸入在一行中給出帶有中間的“:”符號(半角的冒號)的24小時制的時間,如12:34表示12點34分。當小時或分鍾數小於10時,均沒有前導的零,如5:6表示5點零6分。

  提示:在scanf的格式字符串中加入“:”,讓scanf來處理這個冒號。

輸出格式:

  在一行中輸出這個時間對應的12小時制的時間,數字部分格式與輸入的相同,然后跟上空格,再跟上表示上午的字符串“AM”或表示下午的字符串“PM”。如“5:6 PM”表示下午5點零6分。注意,在英文的習慣中,中午12點被認為是下午,所以24小時制的12:00就是12小時制的12:0 PM;而0點被認為是第二天的時間,所以是0:0 AM。

輸入樣例:
  21:11
輸出樣例:
  9:11 PM
代碼:

#include <stdio.h>

int main()
{
    int hour,minute;
    scanf("%d:%d",&hour,&minute);
    
    hour = hour % 12;
    if (hour == 0){
        hour = 12;
    }
    if (hour < 12){
        printf("%d:%d AM",hour,minute);
    }
    else {
        printf("%d:%d PM",hour,minute);
    }
    
}
03-3.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);
    
    if (score >= 90){
        printf("A");
    }
    else if (score >= 80){
        printf("B");
    } 
    else if (score >= 70){
        printf("C");
    }
    else if (score >= 60){
        printf("D");
    }
    else {
        printf("F");
    }
}
03-4.c

 


免責聲明!

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



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