PAT乙級

1002 寫出這個數 (20 分)

讀入一個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。

輸入格式:

每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裏保證 n 小於 10​100​​。

輸出格式:

在一行內輸出 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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章