一.程序运运行截图。
二.函数介绍。
1.
1 void twotoeightandten(int x) { 2 int c,y,s10=0,s8=0,i,l; 3 y=x; 4 i=0; 5 l=0; 6 //二进制转为十进制 7 while(y!=0){ 8 c=y%10; 9 //判断输入是否为二进制 10 if(c>=2) 11 l++; 12 y/=10; 13 s10=s10+c*pow(2,i); 14 i++; 15 } 16 y=s10; 17 i=0; 18 //十进制转为八进制 19 while(y!=0){ 20 c=y%8; 21 y/=8; 22 s8=s8+c*pow(10,i); 23 i++; 24 } 25 if(l==0){ 26 printf("二进制转为 "); 27 printf("八进制:%d 十进制:%d ",s8,s10); 28 } 29 else 30 //若输入数不为二进制 31 printf("这个输入是错的鸭"); 32 }
将二进制转化为十进制,再将十进制转化为二进制达到效果。
2.
void eighttotwoandten(int x) { //将八进制转化为二进制和十进制 int c,y,s10=0,s2=0,i,l; y=x; i=0; l=0; //将八进制转化为十进制 while(y!=0){ c=y%10; if(c>=8) l++; y/=10; s10=s10+c*pow(8,i); i++; } y=s10; i=0; //将十进制转化为二进制 while(y!=0){ c=y%2; y/=2; s2=s2+c*pow(10,i); i++; } if(l==0){ printf("八进制转为 "); printf("二进制:%d 十进制:%d ",s2,s10); } else //若输入数不为八进制 printf("这个是错的鸭"); }
将八进制转化为十进制,再将十进制转化为二进制达到效果。
3.
void tentotwoandeight(int x) { //将十进制转化为二进制和八进制 int c,y,s2=0,s8=0,i; y=x; i=0; //将十进制转化为二进制 while(y!=0){ c=y%2; y/=2; s2=s2+c*pow(10,i); i++; } y=x; i=0; //将十进制转化为八进制 while(y!=0){ c=y%8; y/=8; s8=s8+c*pow(10,i); i++; } printf("十进制转为 "); printf("二进制:%d 八进制:%d ",s2,s8); }
将十进制转化为二进制和八进制,此代码不需要判断是否为十进制
三.main函数
#include<stdio.h> #include<math.h> void twotoeightandten(int x) ;//二进制转化为八进制和十进制函数 void eighttotwoandten(int x) ;//八进制转化为二进制和十进制函数 void tentotwoandeight(int x) ;//十进制转化为二进制和八进制函数 int main() { int jzs, x; printf("输入'2'为二进制;输入'8'为八进制;输入'10'为十进制 输入进制数;"); //输入进制数 scanf("%d", &jzs); printf("输入一个数:"); //输入被转化的数 scanf("%d", &x); //判断进制数 if (jzs == 2) { twotoeightandten(x); } else if (jzs == 8) { eighttotwoandten(x); } else if (jzs == 10) { tentotwoandeight(x); } return 0; }
四.思维导图
五.碰到的问题:
如何判断二进制,八进制,十进制;
解决方案:
通过取余判断每一位数是否小于进制数。是,则输出;出现一位以上不符合条件,则提示输入错误。
进制如何转换
解决方案:
思路:先将二进制或八进制转化为十进制,再将十进制转化为二进制和八进制。
六.代码互评。
void change(int n,char a[],int m,int count)//将用户输入的数先转化成十进制数,在转化成想要转化成的进制数 { int i,j,k=0,num,sum=0,c; char b[1001]; for(i=0;a[i]!='