输入一个十进制数,将其化成N进制数输出(2≤N≤16)。 输出结果时,大于等于10的数字用字母代替,A代表10,B代表11以此类推
代码:
#include<iostream>
#include<iomanip>
#include<cmath>
#include <stdio.h>
#include<string>
#include <string.h>
#include <bits/stdc++.h>
using namespace std;
/*
①多组输入m,N
②转化进制
③输出结果
*/
int main()
{
int m,N,a[40],i,n=0;//题目中有提示变成二进制可能有31位,是个小细节
char ch;
while(cin>>m>>N)
{
n=0;
if(m==0)cout<<0<<endl;//别忘了0需要单独考虑
else
{
while(m!=0)//这里是最关键的地方,需要了解10进制向其他进制转化过程,就是不断取余留商,直到0
{
a[n++]=m%N;
m/=N;
}
for(i=n-1;i>=0;i--)//输出以10为分界线输出数字和字符
{
if(a[i]>=10)
{
ch=a[i]+55;
cout<<ch;
}
else cout<<a[i];
}
cout<<'\n';
}
}
return 0;
}
反思:需要了解一下进制的转化,有一些细节需要注意