欢迎来到天天文库
浏览记录
ID:48359463
大小:23.76 KB
页数:2页
时间:2019-11-26
《C语言经典题目“数制转换”代码.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数制转换(选作)这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如12和5,在十进制下它们是不等的,但若12使用3进制而5使用六进制或十进制时,它们的值就是相等的。因此只要选择合适的进制,12和5就可以是相等的。程序的输入是两个数字M和N(其十进制的值不超过1000000000),它们的进制在2~36之间。对于十以下的数字,用0~9表示,而十以上的数字,则使用大写的A~Z表示。求出分别在2~36哪种进制下M和N相等。若相等则输出相应的进制,若不等则输出错误信息
2、。当然了,对于多种可能成立的情况,找出符合要求的进制最小的一组就行了。信息的格式见测试用例。程序:#includeintmain(){longintpm=0,pn=0,s=0,t=0,w=1,e=1,p=0,q=0;inta[30],b[30];charm[30],n[30];inti,j,g,k,max1=0,max2=0,flag=0;scanf("%s%s",m,n);for(i=0;m[i]!=' ';i++){if(m[i]>='A'&&m[i]<='Z')a[i]=m[i]-55;if(
3、m[i]>='0'&&m[i]<='9')a[i]=m[i]-48;max1=max1<(a[i]+1)?(a[i]+1):max1;max1=max1<2?2:max1;}pm=i;for(j=0;n[j]!=0;j++){if(n[j]>='A'&&n[j]<='Z')b[j]=n[j]-55;if(n[j]>='0'&&n[j]<='9')b[j]=n[j]-48;max2=max2<(b[j]+1)?(b[j]+1):max2;max2=max2<2?2:max2;}pn=j;for(i=max1,j=max2
4、;i<=36&&j<=36;){p=0;q=0;w=1;e=1;for(g=pm-1;g>=0;g--){p+=a[g]*w;w=w*i;}for(k=pn-1;k>=0;k--){q+=b[k]*e;e=e*j;}if(pq)j++;else{flag=1;printf("%s(base%d)=%s(base%d)",m,i,n,j);break;}}if(flag==0)printf("%sisnotequalto%sinanybase2..36",m,n);return0;
q)j++;else{flag=1;printf("%s(base%d)=%s(base%d)",m,i,n,j);break;}}if(flag==0)printf("%sisnotequalto%sinanybase2..36",m,n);return0;
5、}
此文档下载收益归作者所有