寒假用C写了个“万能进制转换器”

    技术2022-05-20  55

       漫漫的寒假是无聊的,在家没事,遍用C写了个“万能进制转换器”的小程序,虽然叫万能,但还是不能转换带小数点的。没办法,新手嘛,能力有限·····望大家不要见笑。。有兴趣的我们一起探讨··一起学习!!!

     

    (程序界面效果)

    下载地址:http://download.csdn.net/source/3044157

    有兴趣的可以运行下面的源码。。

    源码如下:

    #include<stdio.h>

    two_eight(){ char *p,s[20]; long n; int i; p=s; printf(" 请输入一个二进制数: "); scanf("%s",p); n=0;    while(*(p)!='/0') {  n=n*2+*p-'0';  p++; } i=0; while(n) {  s[i]=n%8;    n=n/8;  i++; } printf("   2 进制转化为  8 进制:"); for(i--;i>=0;i--)        printf("%d",s[i]); printf("/n");}   

    two_ten(){ char *p,s[20]; long n; p=s; printf(" 请输入一个二进制数: "); scanf("%s",p); n=0;    while(*(p)!='/0') {  n=n*2+*p-'0';  p++; } printf("   2 进制转化为 10 进制:%d/n",n);}

    two_sixten(){ char *p,s[20],str[20]; long n; int i,mark; p=s; printf(" 请输入一个二进制数: "); scanf("%s",p); n=0;    while(*(p)!='/0') {  n=n*2+*p-'0';  p++; }    i=0; while(n) {  s[i]=n;    n=n/16;  mark=s[i];     switch(mark)  {   case  0: str[i]='0';  break;  case  1: str[i]='1';  break;  case  2: str[i]='2';  break;  case  3: str[i]='3';  break;  case  4: str[i]='4';  break;  case  5: str[i]='5';  break;  case  6: str[i]='6';  break;  case  7: str[i]='7';  break;  case  8: str[i]='8';  break;  case  9: str[i]='9';  break;  case 10: str[i]='A';  break;  case 11: str[i]='B';  break;  case 12: str[i]='C';  break;  case 13: str[i]='D';  break;  case 14: str[i]='E';  break;  case 15: str[i]='F';  break;  }  i++; } printf("   2 进制转化为 16 进制:"); for(i--;i>=0;i--)    printf("%c",str[i]); printf("/n");}

     

    eight_two(){ char *p,s[20]; long n; int i; p=s; printf(" 请输入一个八进制数: "); scanf("%s",p); n=0;    while(*(p)!='/0') {  n=n*8+*p-'0';  p++; } i=0; while(n) {  s[i]=n%2;    n=n/2;  i++; } printf("   8 进制转化为 2 进制:"); for(i--;i>=0;i--)        printf("%d",s[i]); printf("/n");}

    eight_ten(){ char *p,s[20]; long n; p=s; printf(" 请输入一个八进制数: "); scanf("%s",p); n=0;    while(*(p)!='/0') {  n=n*8+*p-'0';  p++; } printf("   8 进制转化为 10 进制:%d/n",n);}

    eight_sixten(){ char *p,s[20],str[20]; long n; int i,mark; p=s; printf(" 请输入一个八进制数: "); scanf("%s",p); n=0;    while(*(p)!='/0') {  n=n*8+*p-'0';  p++; } i=0; while(n) {  s[i]=n;    n=n/16;  mark=s[i];     switch(mark)  {   case  0: str[i]='0';  break;  case  1: str[i]='1';  break;  case  2: str[i]='2';  break;  case  3: str[i]='3';  break;  case  4: str[i]='4';  break;  case  5: str[i]='5';  break;  case  6: str[i]='6';  break;  case  7: str[i]='7';  break;  case  8: str[i]='8';  break;  case  9: str[i]='9';  break;  case 10: str[i]='A';  break;  case 11: str[i]='B';  break;  case 12: str[i]='C';  break;  case 13: str[i]='D';  break;  case 14: str[i]='E';  break;  case 15: str[i]='F';  break;  }  i++; } printf("   8 进制转化为 16 进制:"); for(i--;i>=0;i--)    printf("%c",str[i]); printf("/n");}

     

    ten_two(){ int s[20],n,i; printf(" 请输入一个10进制数: "); scanf("%d",&n); i=0; while(n) {  s[i]=n%2;    n=n/2;  i++; } printf("   10 进制转化为 2 进制::"); for(i--;i>=0;i--)        printf("%d",s[i]); printf("/n");}

    ten_eight(){ int s[20],n,i; printf(" 请输入一个10进制数: "); scanf("%d",&n); i=0; while(n) {  s[i]=n%8;    n=n/8;  i++; } printf("   10 进制转化为 8 进制:"); for(i--;i>=0;i--)        printf("%d",s[i]); printf("/n");}

    ten_sixten(){ int s[20],n,i,mark; char str[20]; printf(" 请输入一个10进制数: "); scanf("%d",&n); i=0; while(n) {  s[i]=n;    n=n/16;  mark=s[i];     switch(mark)  {   case  0: str[i]='0';  break;  case  1: str[i]='1';  break;  case  2: str[i]='2';  break;  case  3: str[i]='3';  break;  case  4: str[i]='4';  break;  case  5: str[i]='5';  break;  case  6: str[i]='6';  break;  case  7: str[i]='7';  break;  case  8: str[i]='8';  break;  case  9: str[i]='9';  break;  case 10: str[i]='A';  break;  case 11: str[i]='B';  break;  case 12: str[i]='C';  break;  case 13: str[i]='D';  break;  case 14: str[i]='E';  break;  case 15: str[i]='F';  break;  }  i++; } printf("   10 进制转化为 16 进制:"); for(i--;i>=0;i--)    printf("%c",str[i]); printf("/n");}

     

    sixten_two(){ int s[20],n=0,i,j; char str[20]; printf(" 请输入一个16进制数: "); scanf("%s",str); i=0; while(str[i]!='/0') {  switch(str[i])  {   case  '0': s[i]=0;  break;  case  '1': s[i]=1;  break;  case  '2': s[i]=2;  break;  case  '3': s[i]=3;  break;  case  '4': s[i]=4;  break;  case  '5': s[i]=5;  break;  case  '6': s[i]=6;  break;  case  '7': s[i]=7;  break;  case  '8': s[i]=8;  break;  case  '9': s[i]=9;  break;  case 'A': s[i]=10;  break;  case 'B': s[i]=11;  break;  case 'C': s[i]=12;  break;  case 'D': s[i]=13;  break;  case 'E': s[i]=14;  break;  case 'F': s[i]=15;  break;  case 'a': s[i]=10;  break;  case 'b': s[i]=11;  break;  case 'c': s[i]=12;  break;  case 'd': s[i]=13;  break;  case 'e': s[i]=14;  break;  case 'f': s[i]=15;  break;  }  i++; }    for(j=0;j<i;j++) {  n=n*16+s[j]; } i=0; while(n) {  s[i]=n%2;    n=n/2;  i++; } printf("   16 进制转化为 2 进制::"); for(i--;i>=0;i--)        printf("%d",s[i]); printf("/n");}

    sixten_eight(){ int s[20],n=0,i,j; char str[20]; printf(" 请输入一个16进制数: "); scanf("%s",str); i=0; while(str[i]!='/0') {  switch(str[i])  {   case  '0': s[i]=0;  break;  case  '1': s[i]=1;  break;  case  '2': s[i]=2;  break;  case  '3': s[i]=3;  break;  case  '4': s[i]=4;  break;  case  '5': s[i]=5;  break;  case  '6': s[i]=6;  break;  case  '7': s[i]=7;  break;  case  '8': s[i]=8;  break;  case  '9': s[i]=9;  break;  case 'A': s[i]=10;  break;  case 'B': s[i]=11;  break;  case 'C': s[i]=12;  break;  case 'D': s[i]=13;  break;  case 'E': s[i]=14;  break;  case 'F': s[i]=15;  break;  case 'a': s[i]=10;  break;  case 'b': s[i]=11;  break;  case 'c': s[i]=12;  break;  case 'd': s[i]=13;  break;  case 'e': s[i]=14;  break;  case 'f': s[i]=15;  break;  }  i++; }    for(j=0;j<i;j++) {  n=n*16+s[j]; } i=0; while(n) {  s[i]=n%8;    n=n/8;  i++; } printf("   16 进制转化为 8 进制:"); for(i--;i>=0;i--)        printf("%d",s[i]); printf("/n");}

    sixten_ten(){ int s[20],n=0,i,j; char str[20]; printf(" 请输入一个16进制数: "); scanf("%s",str); i=0; while(str[i]!='/0') {  switch(str[i])  {   case  '0': s[i]=0;  break;  case  '1': s[i]=1;  break;  case  '2': s[i]=2;  break;  case  '3': s[i]=3;  break;  case  '4': s[i]=4;  break;  case  '5': s[i]=5;  break;  case  '6': s[i]=6;  break;  case  '7': s[i]=7;  break;  case  '8': s[i]=8;  break;  case  '9': s[i]=9;  break;  case 'A': s[i]=10;  break;  case 'B': s[i]=11;  break;  case 'C': s[i]=12;  break;  case 'D': s[i]=13;  break;  case 'E': s[i]=14;  break;  case 'F': s[i]=15;  break;  case 'a': s[i]=10;  break;  case 'b': s[i]=11;  break;  case 'c': s[i]=12;  break;  case 'd': s[i]=13;  break;  case 'e': s[i]=14;  break;  case 'f': s[i]=15;  break;  }  i++; }    for(j=0;j<i;j++) {  n=n*16+s[j]; } printf("  16 进制转化为 10 进制:%d/n",n);}

    void main(){   int select,i; char str[20], n ; printf("/n"); printf("/t**************************欢迎使用******************************/n"); printf("/t*----------------万能进制转换器v1.0 版-------------------------*/n");     printf("/t*——使用方法:                                                */n"); printf("/t*           请选择输入下列功能前的数字序号后按enter键进入。    */n"); printf("/t*                                      ~~~~仅用于学习交流。    */n"); printf("/t*/t/t/t     ------欢迎与我探讨:QQ 354150708  */n"); printf("/t****************************************************************/n"); printf("/n"); printf("/n"); printf("/t   1 : 2 进制转化为  8 进制。"); printf("   2 : 2 进制转化为 10 进制。/n"); printf("/t   3 : 2 进制转化为 16 进制。"); printf("   4 : 8 进制转化为  2 进制。/n"); printf("/t   5 : 8 进制转化为 10 进制。"); printf("   6 : 8 进制转化为 16 进制。/n"); printf("/t   7 :10 进制转化为  2 进制。"); printf("   8 :10 进制转化为  8 进制。/n"); printf("/t   9 :10 进制转化为 16 进制。"); printf("  10 :16 进制转化为  2 进制。/n"); printf("/t  11 :16 进制转化为  8 进制。"); printf("  12 :16 进制转化为 10 进制。/n"); printf("/n"); printf("按任意键 回车 后继续,按 n 键 回车 后退出程序。"); n=getchar(); printf("/n"); while(n!='n') {        printf("请选择您要转换的类型!!!");     scanf("%d",&select);     for(;select<1||select>12;)  {        printf("输入错误,请重新输入!!/n");        scanf("%d",&select);  }        switch(select)     {         case  1: two_eight();  break;        case  2: two_ten();  break;        case  3: two_sixten();  break;        case  4: eight_two();  break;              case  5: eight_ten();  break;        case  6: eight_sixten();  break;        case  7: ten_two();  break;        case  8: ten_eight();  break;        case  9: ten_sixten();  break;        case 10: sixten_two();  break;        case 11: sixten_eight();  break;        case 12: sixten_ten();  break;     }  printf("按任意键回车继续,按 n 键退出程序。");     getchar();        n=getchar();        printf("/n");   }}


    最新回复(0)