1002 寫出這個數 (20 分)
讀入一個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。
輸入格式:
每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裏保證 n 小於 10100。
輸出格式:
在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後一個拼音數字後沒有空格。
輸入樣例:
1234567890987654321123456789
輸出樣例:
yi san wu
https://blog.csdn.net/lzandlc/article/details/81872925
字符串指針數組詳解
#include <stdio.h>
#include<string.h>
int main()
{
int sum = 0;
char c, *pinyins[] = {"ling", "yi", "er", "san", "si",
"wu", "liu", "qi", "ba", "jiu"};
//*單獨拿出來,指的是數組裏的內容是*型的,str的類型是char *[]型
while((c = getchar()) != '\n')
sum += c - '0';//0對應十進制是48,0-9爲48-58,如輸入1,對應49-48=1
if(sum / 100) /* hundreds */
printf("%s ", pinyins[sum / 100]); //如 135 對應a[1] a[3] a[5]
if(sum / 10) /* tens */
printf("%s ", pinyins[sum / 10 % 10]);
printf("%s", pinyins[sum % 10]); /* units */
return 0;
}
1004 成績排名 (20 分)
讀入 n(>0)名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。
輸入格式:
每個測試輸入包含 1 個測試用例,格式爲
第 1 行:正整數 n
第 2 行:第 1 個學生的姓名 學號 成績
第 3 行:第 2 個學生的姓名 學號 成績
... ... ...
第 n+1 行:第 n 個學生的姓名 學號 成績
其中姓名
和學號
均爲不超過 10 個字符的字符串,成績爲 0 到 100 之間的一個整數,這裏保證在一組測試用例中沒有兩個學生的成績是相同的。
輸出格式:
對每個測試用例輸出 2 行,第 1 行是成績最高學生的姓名和學號,第 2 行是成績最低學生的姓名和學號,字符串間有 1 空格。
輸入樣例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
輸出樣例:
Mike CS991301
Joe Math990112
#include <stdio.h>
#include <string.h>
int main()
{
int N;
scanf("%d", &N);
char maxname[11], minname[11], curname[11],//cur現有數據
maxid[11], minid[11], curid[11];
int maxgrade = -1, mingrade = 101, curgrade;
for(int i = 0; i < N; i++)
{
scanf("%s %s %d", curname, curid, &curgrade);
if(curgrade > maxgrade)
{
strcpy(maxname, curname);//把curname的名字複製給maxname (名字)
strcpy(maxid, curid);//把curid的名字複製給maxname(學號)
maxgrade = curgrade;//把最大值賦值給maxname
}
if(curgrade < mingrade)
{
strcpy(minname, curname);
strcpy(minid, curid);
mingrade = curgrade;
}
}
printf("%s %s\n%s %s", maxname, maxid, minname, minid);
return 0;
}
1006 換個格式輸出整數 (15 分)
讓我們用字母 B
來表示“百”、字母 S
表示“十”,用 12...n
來表示不爲零的個位數字 n
(<10),換個格式來輸出任一個不超過 3 位的正整數。例如 234
應該被輸出爲 BBSSS1234
,因爲它有 2 個“百”、3 個“十”、以及個位的 4。
輸入格式:
每個測試輸入包含 1 個測試用例,給出正整數 n(<1000)。
輸出格式:
每個測試用例的輸出佔一行,用規定的格式輸出 n。
輸入樣例 1:
234
輸出樣例 1:
BBSSS1234
輸入樣例 2:
23
輸出樣例 2:
SS123
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
for(int i = 0; i < n / 100; i++) putchar('B');
for(int i = 0; i < n / 10 % 10; i++) putchar('S');
for(int i = 0; i < n % 10; i++) putchar('1' + i);
return 0;
}