进制转换
题目要求:
编一程序,实现将输入的一个无符号整数转换为二进制和八进制表示,分别存入字符
(1)输入无符号整数;
(2)输出无符号整数;数组中并输出。(提示:算法采用模拟人工法。)
注:计算机模拟人工是编程中常用的方法,这种方法要求编程者首先分析在人工方式下解决问题的过程,从中找出步骤和规律,然后编写程序,按照人工解决问题的步骤和规律进行操作。
主要功能包括:
(3)输入输入要转换的进制;
(4)输出转换后的值;
(5)退出系统;
进制转换实现就很简单了,模拟人工用辗转相除法,代码如下:
1 #include<stdio.h> 2 #include<iostream> 3 using namespace std; 4 5 void num_chang(int x,int n) //进制转化函数 6 { 7 char a[20]; 8 int i=0,rem; 9 10 do //循环取每一位 11 { 12 rem=x%n; 13 x=x/n; 14 a[i]=rem+48; 15 i++; 16 }while(x!=0); //结束循环条件 17 18 printf("转化成%d进制结果为:",n); 19 while(i>0) {--i; printf("%c",a[i]);} //循环输出每一位 20 21 printf(" "); 22 } 23 24 int main() 25 { 26 unsigned int x,y; 27 m:cout<<"输入要转换的十进制数: "; 28 cin>>x; //输入要转换的十进制数 29 if(x<0) 30 {cout<<"输入格式有误重新输入 ";goto m;}//判断输入格式 31 32 n:cout<<"输入要转化成八进制还是二进制(用8或2表示): "; 33 cin>>y; //输入要转化成八进制还是二进制 34 if(y==2){num_chang(x,2);} //判断输入格式是否正确 35 if(y==8){num_chang(x,8);} 36 if(y!=2&&y!=8){cout<<"输入格式有误重新输入: ";goto n;} 37 38 cout<<"是否继续? “Y”继续 “N”退出 若输入格式错误将退出 "; 39 char r; 40 cin>>r; //判断是否继续 41 if(r=='Y'){goto m;} 42 43 system("pause"); //程序暂停 44 return 0; 45 }