Data_Structure/作業/test/double_pointer.cpp

66 lines
1.4 KiB
C++
Raw Permalink Normal View History

2025-01-20 21:30:53 +08:00
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void convert(int n, int b, char **result, int *size) {
// <20>p<EFBFBD><70><EFBFBD>ݭn<DDAD><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int temp = n;
*size = 0;
while (temp > 0) {
temp /= b;
(*size)++;
}
// <20>t<EFBFBD>m<EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD>
*result = (char*)malloc((*size + 1) * sizeof(char));
if (*result == NULL) {
printf("<EFBFBD>O<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>m<EFBFBD><EFBFBD><EFBFBD>ѡI\n");
return;
}
// <20>i<EFBFBD><69><EFBFBD>
int i = *size - 1;
while (n > 0) {
int remainder = n % b;
if (remainder < 10) {
(*result)[i] = remainder + '0';
} else {
(*result)[i] = (remainder - 10) + 'A';
}
n /= b;
i--;
}
(*result)[*size] = '\0'; // <20>K<EFBFBD>[<5B>r<EFBFBD><EFBFBD><EAB5B2>
}
int main() {
int n, b;
char *result; // <20>ΨӦs<D3A6><73><EFBFBD><EFBFBD><E0B4AB><EFBFBD>G<EFBFBD><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int size; // <20><><EFBFBD>G<EFBFBD><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while(1) {
printf("\n<EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD>i<EFBFBD>쥿<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ==> ");
scanf("%d", &n);
if(n == -1) break;
printf("\n<EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ==> ");
scanf("%d", &b);
convert(n, b, &result, &size); // <20>ǤJ<C7A4><4A><EFBFBD>Ъ<EFBFBD><D0AA><EFBFBD><EFBFBD>}
printf("(%d)_10 = (", n);
for(int i = 0; i < size; i++) {
printf("%c", result[i]);
}
printf(")_%d\n", b);
free(result); // <20><><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>m<EFBFBD><6D><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD>
}
printf("<EFBFBD>{<7B><><EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD>...<2E><><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><4E><EFBFBD>~<7E><>\n");
system("pause");
return 0;
}