Anh (Chị) hãy cho biết đoạn lệnh sau thực hiện công việc gì?
char * functionD (char *number,int n,int m) {
static char ketqua[17]
char chuso[] = “0123456789ABCDEF”;
int i = 0, giatri = 0, len;
len = strlen(number);
while (i < len) {
giatri = giatri * n + (strchr(chuso,number[i]) - chuso);
i++;
}
i = 16;
ketqua[17] = 0;
do {
ketqua[i] = chuso[giatri % m]
giatri /= m; i--;
} while (giatri > 0);
return (ketqua + i + 1);
}
int main() {
unsigned n = 10,m = 2;
char number[17] = 123”;
cout << functionD(number,n,m);
return 0;
}
Trả lời:
Đáp án đúng: D
Đoạn code trên thực hiện việc chuyển đổi một số từ hệ cơ số `n` sang hệ cơ số `m`. Hàm `functionD` nhận vào một chuỗi `number` biểu diễn số ở hệ cơ số `n`, và trả về một chuỗi biểu diễn số đó ở hệ cơ số `m`.
Cụ thể, code thực hiện các bước sau:
1. Tính giá trị thập phân của số ở hệ cơ số `n`.
2. Chuyển đổi giá trị thập phân này sang hệ cơ số `m`.
3. Trả về chuỗi biểu diễn số ở hệ cơ số `m`.
Ví dụ, nếu `number` là "123", `n` là 10 và `m` là 2, thì hàm sẽ chuyển đổi số 123 từ hệ thập phân sang hệ nhị phân.