C语言经典题目“数制转换”代码.doc
(2页)
本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!
14.90 积分
数制转换(选作)这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如 12 和 5 ,在十进制下它们是不等的,但若 12 使用 3 进制而 5 使用六进制或十进制时,它们的值就是相等的。因此只要选择合适的进制, 12 和 5 就可以是相等的。 程序的输入是两个数字 M 和 N( 其十进制的值不超过 1000000000) ,它们的进制在 2~36 之间。对于十以下的数字,用 0~9 表示,而十以上的数字,则使用大写的 A~Z 表示。 求出分别在 2~36 哪种进制下 M 和 N 相等。若相等则输出相应的进制,若不等则输出错误信息。当然了,对于多种可能成立的情况,找出符合要求的进制最小的一组就行了。信息的格式见测试用例。程序: #includeint main(){ long int pm=0,pn=0,s=0,t=0,w=1,e=1,p=0,q=0; int a[30],b[30]; char m[30],n[30]; int i,j,g,k,max1=0,max2=0,flag=0; scanf("%s%s",m,n); for(i=0;m[i]!='\0';i++) { if(m[i]>='A'&&m[i]='0'&&m[i]<='9') a[i]=m[i]-48; max1=max1=0;k--) { q+=b[k]*e; e=e*j; } if(pq) j++; else { flag=1; printf("%s (base %d) = %s (base %d)\n",m,i,n,j); break; } } if(flag==0) printf("%s is not equal to %s in any base 2..36\n",m,n); return 0;} 关 键 词: c语言 题目 代码 经典 转换
天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。