2-16进制的随意转换,输入一个整数可以直接输出他的八进制或者十六进制
2014-02-19 20:35
309 查看
Problem D
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 3 Accepted Submission(s) : 3
Problem Description
The Really Neato Calculator Company, Inc. has recently hired your team to help design their Super Neato Model I calculator. As a computer scientist you suggested to the company that it would be neato if this new calculator could convert among number bases.
The company thought this was a stupendous idea and has asked your team to come up with the prototype program for doing base conversion. The project manager of the Super Neato Model I calculator has informed you that the calculator will have the following neato
features: It will have a 7-digit display.
Its buttons will include the capital letters A through F in addition to the digits 0 through 9.
It will support bases 2 through 16.
Input
The input for your prototype program will consist of one base conversion per line. There will be three numbers per line. The first number will be the number in the base you are converting from. The second number is the base you are converting from. The third
number is the base you are converting to. There will be one or more blanks surrounding (on either side of) the numbers. There are several lines of input and your program should continue to read until the end of file is reached.
Output
The output will only be the converted number as it would appear on the display of the calculator. The number should be right justified in the 7-digit display. If the number is to large to appear on the display, then print ``ERROR'' (without the quotes) right
justified in the display.
Sample Input
1111000 2 10 1111000 2 16 2102101 3 10 2102101 3 15 12312 4 2 1A 15 2 1234567 10 16 ABCD 16 15
Sample Output
120 78 1765 7CA ERROR 11001 12D687 D071
代码:
#include<iostream>
using namespace std;
#include<stdio.h>
#include<string.h>
int main()
{
char a[69],d[69],f[69];
int b,c,s,n,i,j,b1,e,m,z;
while(cin>>a>>b>>c)
{
n=strlen(a);
if(a[n-1]>=65)s=a[n-1]-55;
else s=a[n-1]-48;
for(i=n-2,b1=1;i>=0;i--)//现将n进制的转换w为10进制
{
if(a[i]==' ')break;
b1*=b;
if(a[i]>=65&&a[i]<=70)
a[i]-=55;
else a[i]=a[i]-48;
s+=a[i]*b1;
}
// cout<<"PPPPPPPPPPPPPPP"<<s<<endl;
for(i=0;s!=0;i++) //再将10进制转换为m进制
{
e=s%c;
if(e>=10&&e<=15)
e+=55;
else e+=48;
d[i]=e;
// cout<<d[i];
s/=c;
}
m=i;
//for(j=0;j<i/2;j++)
//d[j]=d[i-j-1];
for(i=m-1,j=0;i>=0;i--,j++)
f[j]=d[i];
if(m>7)cout<<" ERROR"<<endl; //输出
else
{
for(i=0;i<7-m;i++)
cout<<' ';
for(i=0;i<m;i++)
cout<<f[i];
cout<<endl;
}
}
return
}
输入一个整数可以直接输出他的八进制或者十六进制,输出的时候只需把%d换为%o或者%x就可以了。
例如:
#include<iostream>
using namespace std;
#include<stdio.h>
int main()
{
int a,n;
cin>>n;
while(n--)
{
cin>>a;
printf("十进制是%d\n",a);
printf("八进制是%o\n",a);
printf("十六进制是%x\n",a);
}
return 0;
}
相关文章推荐
- 输入一个整数,把该整数分别按照八进制、十进制、十六进制形式输出
- 题目1194:八进制 输入一个整数,将其转换成八进制数输出
- 八进制 输入一个整数,将其转换成八进制数输出
- 习题 7.17 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。
- 输入一个整数,把该整数分别按照八进制、十进制、十六进制形式输出
- 输入一个表示十六进制的字符串,转换为十进制的整数输出。
- 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。
- 输入一个整数,把该整数分别按照八进制、十进制、十六进制形式输出
- 用递归法将一个整数n转换成字符串,例如输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。
- 0901假设存在一个可以从标准输入读入字母并且将其从小写转换为大写输出的可执行程序upcase
- 20、输入一个表示整数的字符串,把该字符串转换成整数并输出
- 输入一个表示整数的字符串,把该字符串转换成整数并输出。
- 【剑指offer】C语言:实现函数可以将一个字符串转换为对应的整数,如+1234输出1234
- 输入一个0~6的整数,转换成星期输出。
- 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式 输入一个正整数N。 输出格式 输出一个整数,表示你找到的最小公倍数。 样例输入 9 样例输出 5
- 每天学习一算法系列(20)(输入一个表示整数的字符串,把该字符串转换成整数并输出)
- <仅是自己做笔记。。。系列-12>输入一个表示整数的字符串,把该字符串转换成整数并输出。
- 【剑指offer】C语言:实现函数可以将一个字符串转换为对应的整数,如+1234输出1234
- 从键盘上输入一个字符,如果它是小写字母,则把它转换成大写字母输出;否则,直接输出。
- 第20题: 题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。 例如输入字符串"345",则输出整数345。