南邮OJ 1012进制转换

题目描述:   进制转换问题

题目链接:  http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1012

#include <iostream>
using namespace std;
int main()
{
<span style="white-space:pre">	</span>int n;
	int b[1000];
	cin >> n;
	int a[1000][2] = {};
	for (int i = 0; i < n; i++)
	{
		cin >> a[i][0] >> a[i][1];
	}
	int A,B;
	for (int j = 0; j < n; j++)
	{
	    int y =0;
	    A = abs(a[j][0]);
	    while (A >= a[j][1])
	    {	
		B = A % a[j][1];  
		switch (B)
		{
		 case 10: B = 'A';break;
		 case 11: B = 'B';break;
<span style="white-space:pre">		</span> case 12: B = 'C';break;
		 case 13: B = 'D';break;
		 case 14: B = 'E';break;
		 case 15: B = 'F';break;
		 default: break;
		}
		b[y] = B;
		A = A / a[j][1];
		y++;
	    }
	    if (a[j][0] < 0)
	    {
		b[y] = A;
		b[y+1] = '-';
		for (int k = y+1; k >= 0; k--)
	        {
		    if (b[k]<= 70 && b[k]>=65 || b[k] == 45)
	               {
		       cout << (char)b[k];
		       continue;
		     }
			cout << b[k];
		   }
		}
		else
		{
		     b[y] = A;
<span style="white-space:pre">		</span>for (int k = y; k >= 0; k--)
		     {
			 if (b[k]<= 70 && b[k]>=65)
			{
		          cout << (char)b[k];
			  continue;
		      }
		       cout << b[k];
		   }
		}	
	    cout << endl;
	}
	return 0;
}
本题几个点:

1,由于基础不够扎实,搞得二维数组的声明都模糊了,之前也是调试了一会儿, a[n][m] 即为表示n行m列数组。

2,本题主要思想,短除法的应用。

3,对于A,B,C,D,E,F这几个输出得要好好考虑,怎么产生以及怎么输出,数组中只能储存同一类型的元素,故在输出时要做出判断并进行类型转换。

4,对于负数,再次另外考虑,尤其是负号的输出!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值