練習
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-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",¢imeter); meter = centimeter / 100.0; intinch = meter / 0.3048; inch = meter / 0.3048; foot = (inch - intinch) * 12; printf("%d %d",intinch,foot); return 0; }
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); }

#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-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-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; }
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-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-2. 用天平找小球(10)
三個球A、B、C,大小形狀相同且其中有一個球與其他球重量不同。要求找出這個不一樣的球。
輸入格式:
輸入在一行中給出3個正整數,順序對應球A、B、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-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-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"); } }