一、题目内容:
从键盘上输入一下十进制的正整数与n,将其转变为n进制(1<n<10)。
例:
(1)输入:100 2 输出:1100100
(2)输入:100 9 输出:121
注:转化成的n进制数可用字符数组处理。
#include<stdio.h>
#include<string.h>
/*
(1)除n取余法:算法
(2)m unsigned long long
n进制数 用字符数组表示 (数据结构)
(m/n)(m%n)
*/
int i=0;
int main()
{
void MToB(unsigned long long m,int n,char s[]);
unsigned long long m;//64
char s[80]={0};
int n;
scanf("%llu %d",&m,&n);
MToB(m,n,s);
puts(s);
return 0;
}
void MToB(unsigned long long m,int n,char s[])
{
if(m/n==0){
s[i++]=m%n+'0';
return ;
}
MToB(m/n,n,s);
s[i++]=m%n+'0';
}
二、题目内容:
从键盘上输入一下正整数与n,将其转变为n进制(1<n<37)。
某一数码大于10时,用大写字母 A B C D ... 分别表示 10 11 12 13 ...
例:
(1)输入:100 36 输出:2S
(2)输入:100 11 输出:91
注:转化成的n进制数可用字符数组处理。
只需改一下printf,代码如下:
#include<stdio.h>
#include<string.h>
/*
(1)除n取余法:算法
(2)m unsigned long long
n进制数 用字符数组表示 (数据结构)
(m/n)(m%n)
*/
int i=0;
int main()
{
void MToB(unsigned long long m,int n,char s[]);
unsigned long long m;//64
char s[80]={0};
int n;
scanf("%llu %d",&m,&n);
MToB(m,n,s);
puts(s);
return 0;
}
void MToB(unsigned long long m,int n,char s[])
{
int ys=m%n;
if(m/n==0){
if(ys<10) s[i++]=m%n+'0';
else s[i++]=m%n+'A'-10;
return ;
}
MToB(m/n,n,s);
if(ys<10) s[i++]=m%n+'0';
else s[i++]=m%n+'A'-10;
}