1. 程式人生 > >PAT 乙級 外星人的語言 1017

PAT 乙級 外星人的語言 1017

________________________________________________題目描述

nowcoder費了很大勁,終於和地外文明聯絡上。我們地球人通常有10根手指,因此我們習慣用10進位制的數,而外星人的手指有16跟、8根等不等的數目,因此他們使用與我們不同的進位制。為了方便溝通,需要你開發一款工具,把地球人的10進位制轉換成外星人的R進位制形式。
輸入描述:
輸入有多行。

每行包括兩個正整數n和R,其中2≤R≤16。

輸入直到檔案結束為止。

輸出描述:

對於每個用例,輸出n對應的R進位制形式。

超過10進位制的數,10用A表示、11用B表示,依次類推。

輸入例子:

1989 2
1119 16

輸出例子:

11111000101
45F
——————————————————————————程式碼如下

#include"stdio.h"
int main() {
    int n, r;
    int num[100];
    char tempt[100];
    while (scanf("%d%d", &n, &r) != EOF) {
        int i;
        for (i = 0; n != 0; i++) {
            if (n%r < 10) {
                num[i] = n%r;
                tempt[i] = 0;
            }
            else tempt[i] = 'A' + (n%r - 10);            n /= r;
        }
        if (n%r < 10) {
            num[i] = n%r;
            tempt[i] = 0;
        }
        else {
            tempt[i] = 'A' + (n%r - 10);
        }
        i = i - 1;
        for (i; i >= 0; i--) {
            if (tempt[i] == 0)
                printf("%d",num[i]) ;
            else printf("%c",tempt[i]);
        }
        printf("\n");
    }
}
/*此處也可以新建一個字元型陣列,比如num0[100],然後用num[j]='\0';結尾,
只使用一個printf("%s",num0);即可輸出結果。*/

————————————————小總結

#1

數字型別的陣列與字元陣列的輸入、輸出需要注意