进制转换
7-12 进制转换 (25 分)输入十进制整数N和待转换的进制x(2、8、16),分别代表十进制N转换成二进制、八进制和十六进制,输出对应的结果。十六进制中A~F用大写字母表示。
输入格式:
输入两个整数N(十进制整数N)和x(x进制),中间用空格隔开。
输出格式:
输出对应的结果。
输入样例:
在这里给出一组输入。例如:
123 2
结尾无空行
输出样例:
在这里给出相应的输出。例如:
1111011
结尾无空行
输入样例:
在这里给出一组输入。例如:
123 16
结尾无空行
输出样例:
在这里给出相应的输出。例如:
7B
结尾无空行
有大佬教一下吗
#include <iostream>
#include <string>
#include <stack>
const std::string convert(size_t n, size_t x) {
const std::string table = "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ";
if(x > table.size()) return "";
std::stack<char> s;
do {
s.push(table);
n /= x;
} while(n);
std::string result;
while(!s.empty()) {
result += s.top();
s.pop();
}
return result;
}
int main() {
std::cout << convert(123, 2) << std::endl;
std::cout << convert(123, 16) << std::endl;
return 0;
}
#include <stdio.h>
char * foo(char s[] , int x , int n)
{
const char b[] = {'0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F'} ;
int d , e , i ;
s = '\0' ;
if(n >= 1 && n <= 16) {
for(d = x , e = 1 ; x / e > n - 1 ; e *= n) ;
for(i = 0 ; e ; d %= e , e /= n , i ++) s = b ;
s = '\0' ;
}
return s ;
}
int main(void)
{
char s ;
int d , n ;
scanf("%d%d" , & d , & n) ;
printf("%s\n" , foo(s , d , n)) ;
}
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
255 16
FF
D:\00.Excise\C>x
255 2
11111111
D:\00.Excise\C>x
255 8
377
D:\00.Excise\C>x
256 16
100
D:\00.Excise\C>x
256 2
100000000
D:\00.Excise\C>x
256 8
400
D:\00.Excise\C> 人造人 发表于 2021-10-24 20:03
a.c:2:20: fatal error: iostream: No such file or directory
#include <iostream>
^
compilation terminated. kpsc1 发表于 2021-10-24 20:07
a.c:2:20: fatal error: iostream: No such file or directory
#include
^
c++ 人造人 发表于 2021-10-24 20:10
c++
对
kpsc1 发表于 2021-10-24 20:12
对
a.c:2:20: fatal error: iostream: No such file or directory
kpsc1 发表于 2021-10-24 20:12
对
c++ ? 人造人 发表于 2021-10-24 20:14
c++ ?
vc++6.0 kpsc1 发表于 2021-10-24 20:16
vc++6.0
后缀 .c 是 C++ 吗?
把后缀改成 .cpp
页:
[1]