首页 > 其他分享 >进制转换(m 进制 x 转换为 n 进制的数)

进制转换(m 进制 x 转换为 n 进制的数)

时间:2023-02-08 10:31:42浏览次数:28  
标签:10 转换 进制 sum else printf s1


摘要:以前写的进制转换一般不会考虑大数问题,举个例子就是如果16进制的FFFFFFFFF就是16^9是一个非常大的数,这个时候就需要用数组来存。

题目:
将M进制的数X转换为N进制的数输出。

输入

输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。

输出

输出X的N进制表示的数。

样例输入

10 2
11

样例输出

1011

提示

注意输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。

**解题思路:**这个题主要是模拟进制转换的过程写的,运行一遍代码就可以看懂。。

程序代码:

#include<stdio.h>
#include<math.h>
#include<string.h>
char s1[1000],c[1000];
int a[1000],b[1000];
int main()
{
int i,j,k,m,n,x,t,s,sum,v,w;
scanf("%d%d",&m,&n);
scanf("%s",s1);
t=strlen(s1);
//先转换为十进制
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
k=1;
for(i=0;i<t;i++)
{
for(j=0;j<k;j++)
a[j]=a[j]*m;
if(s1[i]>='0'&&s1[i]<='9')
a[0]=a[0]+s1[i]-'0';
else if(s1[i]>='A'&&s1[i]<='Z')
a[0]=a[0]+s1[i]-'A'+10;
v=0;
for(j=0;j<k;j++)
{
a[j]=a[j]+v;
if(a[j]>=10)
{
v=a[j]/10;
a[j]=a[j]%10;
}
else
v=0;
}
while(v)
{
a[k++]=v%10;
v=v/10;
}
}
j=0;
//把十进制的数顺序掉一下
for(i=k-1;i>=0;i--)
b[j++]=a[i];
/* for(i=0;i<j;i++)
printf("%d",b[i]);
printf("\n");
printf("%d\n",k);*/
//*************************************//
sum=1;s=0;
//十进制转换n进制
while(sum)
{
sum=0;
for(i=0;i<k;i++)
{
v=b[i]/n;
// printf("******%d\n",v);
sum+=v;
if(i==k-1)
{
t=b[i]%n;
// printf("&&&&&&&%d\n",t);
if(t<=9)
c[s++]=t+'0';
else
c[s++]=t-10+'a';
}
else
{
b[i+1]=b[i+1]+b[i]%n*10;
//printf("+++++%d %d\n",i,b[i+1]);
}
b[i]=v;
}
}
for(i=s-1;i>=0;i--)
printf("%c",c[i]);
printf("\n");
return 0;
}


标签:10,转换,进制,sum,else,printf,s1
From: https://blog.51cto.com/u_14935708/6043615

相关文章

  • 前端 js 将字符串类型转换成其他类型
    方法一eval(argStr)函数,一般传入任何参数都能强转成对应类型。如果想把参数先转成字符串再使用eval转成真实类型,可以使用String()函数进行强转,String(argObj)方法二......
  • JS数据类型转换,转数值,转字符串,转布尔(转)
    转自:JS数据类型转换,转数值,转字符串,转布尔1.转数值numberparseInt(‘内容‘/变量名)可以强制把字符串转整数数值,隐式转换Parsefloat(‘内容‘/变量名)可以强制把有......
  • C语言填空:进制转换输出
    /*输出任意一个十进制数对应的八进制数和十六进制数*/#include<stdio.h>main(){【1】;printf("请输入一个整数:");scanf("%d",【2】);printf("%d(1......
  • 3.2 用二进制数表示小数
    由于计算机内部所有的信息都是以二进制数的形式来处理的,因此在这一点上,整数和小数并无差别。不过,使用二进制数来表示整数和小数的方法却有很大的不同。 把1011.0011这个......
  • sql查询中的行列转换
    这是长表的样子这是宽表的样子--创建长表(用多行来描述一个学生的所有课程成绩)--createtablescore_long(--uidVARCHAR(10),--coursevarchar(20),--score......
  • [转]java dd-m 月 - yy 日期转换成 yyyy-MM-dd
    原文地址:javadd-m月-yy日期转换成yyyy-MM-dd-qlc的个人空间-OSCHINA-中文开源技术交流社区SimpleDateFormatsf=newSimpleDateFormat("dd-MM月-yy",Local......
  • 将时间转换为时间戳
    某平台url中的时间格式为时间戳,将时间变量传入url前,需要将固定格式的时间转换为时间戳。使用python中的time模块,对时间的几种格式进行转换。strptime(),将时间字符串转换......
  • UTC时间转换北京时间yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
    publicstaticvoidmain(Stringargs[])throwsParseException{castUTC("2023-02-07T12:16:03.944Z","yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");}publicstaticvoidcastU......
  • (笔试题)输出这段代码的结果(关于进制位的代码)
    #include<stdio.h>intmain(){chara=-1;signedcharb=-1;unsignedcharc=-1;printf("a=%d,b=%d,c=%d",a,b,c);return0;}解析:#include<stdio.h>intmain(){/......
  • 使用VMware Converter Standalone P2V(物理机转换虚拟机)
    使用VMwareConverterStandaloneP2V(物理机转换虚拟机)环境说明:1、P2V软件:VMware-converter-en-6.3.0-20575345  下载地址:vCenterConverter:P2VVirtualMachineCon......