1. 程式人生 > >PAT|中國大學MOOC-翁愷-C語言程式設計習題集09-12

PAT|中國大學MOOC-翁愷-C語言程式設計習題集09-12

編寫一個程式,要求使用者輸入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, min;
scanf("%d:%d", &hour, &min);
if (hour >= 13&&hour<24)
{
printf("%d:%d PM", hour-12, min);
}
else if (hour == 12)
{
printf("%d:%d PM", hour , min);
}
else
{
printf("%d:%d AM", hour, min);
}
return 0;
}

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 num;
scanf("%d", &num);
if (num >= 90)
{
printf("A");
}
else if (num >= 80 && num < 90)
{
printf("B");
}
else if (num >= 70 && num < 80)
{
printf("C");
}
else if (num >= 60 && num < 70)
{
printf("D");
}
else
{
printf("E");
}
return 0;
}

04-0. 求符合給定條件的整數集(15)

給定不超過6的正整數A,考慮從A開始的連續4個數字。請輸出所有由它們組成的無重複數字的3位數。

輸入格式:

輸入在一行中給出A。

輸出格式:

輸出滿足條件的的3位數,要求從小到大,每行6個整數。整數間以空格分隔,但行末不能有多餘空格。

輸入樣例:
2
輸出樣例:
234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543
#include <stdio.h>
int main()
{
int count, num, i, j, k;
scanf("%d", &num);
count = 0;
for (i = num; i <= num + 3; i++)
{
for (j = num; j <= num + 3; j++)
{
for (k = num; k <= num + 3; k++)
{
if (i != j&&j != k&&i != k)
{

printf("%d%d%d", i, j, k);
count++;
}
if (count >=6)
{
printf("\n");
count = 0;
}
}
}
}
return 0;
}

04-1. 水仙花數(20)

水仙花數是指一個N位正整數(N>=3),它的每個位上的數字的N次冪之和等於它本身。例 如:153 = 13 + 53+ 33。 本題要求編寫程式,計算所有N位水仙花數。

輸入格式:

輸入在一行中給出一個正整數N(3<=N<=7)。

輸出格式:

按遞增順序輸出所有N位水仙花數,每個數字佔一行。

輸入樣例:
3
輸出樣例:
153
370
371
407
#include <stdio.h>
int power(int x, int y);
int main()
{
int num, number, i,numbers,sum;
scanf("%d", &num);
for (i = power(10.0, num - 1); i < power(10.0, num); i++)
{
sum = 0;
number = i;
while (number>0)
{
sum = sum +power(number % 10,num);
number = number / 10;
}
if (sum == i)
{
printf("%d\n", i);
}
}
return 0;
}
int power(int x, int y)
{
int sum = 1;
int i;
for (i = 1; i <= y; i++)
{
sum = sum * x;
}
return sum;
}