进制转换是要思考一下怎么写,小练习就没有贯彻防御性编程思想了
#include <cmath>
#include <iostream>
using namespace std;
void PrintSeparationLine();
int ConvertToDecimalNumber(int octalNumber);
int ConvertToOctalNumber(int decimalNumber);
int main()
{
int inputOption;
int inputNumber;
int convertResult;
char isContinue;
while (true)
{
PrintSeparationLine();
cout << " 进制转换系统" << endl;
cout << "1、八进制转换为十进制" << endl;
cout << "2、十进制转换为八进制" << endl;
PrintSeparationLine();
cout << "请选择序号1或2:";
cin >> inputOption;
cout << "请输入欲转换的数据:";
cin >> inputNumber;
convertResult = inputOption == 1 ? ConvertToDecimalNumber(inputNumber) : ConvertToOctalNumber(inputNumber);
cout << "转换为:" << convertResult << endl;
cout << "是否继续转换?y/n:";
cin >> isContinue;
if (isContinue == 'n')
{
cout << "谢谢使用!再见!" << endl;
break;
}
}
return 0;
}
void PrintSeparationLine()
{
for (int i = 0; i < 21; i++)
{
cout << "*";
}
cout << endl;
}
int ConvertToDecimalNumber(int octalNumber)
{
int index = 0;
int result = 0;
while (true)
{
result += octalNumber % 10 * (int)pow(8, index);
index++;
octalNumber /= 10;
if (octalNumber == 0) break;
}
return result;
}
int ConvertToOctalNumber(int decimalNumber)
{
int temp = 0;
int result = 0;
while (true)
{
temp = temp * 10 + decimalNumber % 8;
decimalNumber /= 8;
if (decimalNumber == 0) break;
}
while (true)
{
result = result * 10 + temp % 10;
temp /= 10;
if (temp == 0) break;
}
return result;
}
#include<cstdio>
#include<iostream>
int pows(int x,int y)
{
int ans = 1;
for(int i = 1;i <= y;i ++)
ans *= x;
return ans;
}
int main()
{
while(1)
{
puts("*********************");
puts("进制转换系统");
puts("1、八进制转换为十进制");
puts("2、十进制转换为八进制");
puts("*********************");
printf("请选择序号1或2: ");
int n,m;
scanf("%d",&n);
printf("请输入欲转换的数据: ");
scanf("%d",&m);
if(n == 1)
{
int ans = 0,cnt = 0;
while(m)
{
ans = ans + pows(8,cnt++) * (m % 10);
m /= 10;
}
printf("转换为: %d\n",ans);
}
if(n == 2)
{
int ans = 0,cnt = 0;
while(m)
{
ans = ans + pows(12,cnt++) * (m % 10);
m /= 10;
}
printf("转换为: %d\n",ans);
}
char s;
printf("是否继续转换? y/n: ");
std::cin>>s;
if(s == 'n') break;
}
puts("谢谢使用!再见!");
}