1.程序运行截图。

 

 

 

 

 

 

2.函数介绍。

一。

int erzhuanshi(char m)
 {
     int s=0,i=0,a,n;
     while(n!=0)
     {
         a=m%10;
         s+=a*pow(2,i);
         m=m/10;
         i++;
     }
     return s;
 }

二。

int bazhuanshi(int n)
 {
     int s=0,i=0,a;
     while(n!=0)
     {
         a=n%10;
         s+=a*pow(8,i);
         i++;
         n=n/10;
     }
     return s;
 }
 void PrintN1( int m )
 {
     int a[100],i=0,c,count=0,t;
     while(m!=0)
     {
         c=m%2;
         a[i]=c;
         m=m/2;
         i++;
         count++;
     }
     for(i=0;i<=count/2;i++)
     {t=a[i];a[i]=a[count-i-1];a[count-i-1]=t;
     }
     printf("经转化后的数字为:");
     for(i=0;i<count;i++)
     printf("%d",a[i]);
 }

三。

 void PrintN2(int m)
 {
     int a[100],i=0,c,count=0,t;
     while(m!=0)
     {
         c=m%8;
         a[i]=c;
         m=m/8;
         i++;
         count++;
     }
     for(i=0;i<=count/2;i++)
     {
         t=a[i];a[i]=a[count-i-1];a[count-1-i]=t;
     }
     printf("转化后的数字为:");
     for(i=0;i<count;i++)
     printf("%d",a[i]);
 }
 int iserjinzhi(int m)
 {
     char a[100];
     int i=0,k;
     while(a[i]=getchar()!='\n')
     i++;
     a[i]=0;
     for(k=0;k<i;k++)
     {
         if(a[k]>'1'||a[k]<'0')
         {
             return 0;
             break;
         }
     }
     return 1;
 }

四。

int isbajinzhi(int m)
 {
     char a[100];
     int i=0,k;
     while(a[i]=getchar()!='\n')
     i++;
     a[i]=0;
     for(k=0;k<i;k++)
     {
         if(a[k]>'7'||a[k]<'0')
         {
             return 0;
             break;
         }
     }
     return 1;
 }
 int isshijinzhi(int m)
 {
     char a[100];
     int i=0,k;
     while(a[i]=getchar()!='\n')
     i++;
     a[i]=0;
     for(k=0;k<i;k++)
     {
         if(a[k]>'9'||a[k]<'0')
         {
             return 0;
             break;
         }
     }
     return 1;    
 }

 

3.main函数。

#include<stdio.h>
#include<math.h>
int erzhuanshi(char m);
int bazhuanshi(int m);
void PrintN1( int m );
void PrintN2( int m);
int iserjinzhi(int m);
int isbajinzhi(int m);
int isshijinzhi(int m);
int main()
{
    
    int jzs, x;
    printf("输入'2'为二进制;输入'8'为八进制;输入'10'为十进制\n输入进制数;");
    //输入进制数
    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;
}
if(x==2) { scanf("%c",&y); if(iserjinzhi(y)) { y=erzhuanshi(y); printf("经转化后的数字为:%d",y); } else printf("ERROR"); } if(x==3) { scanf("%c",&y); if(isbajinzhi(y)) { y=erzhuanshi(y); printf("经转化后的数字为:"); PrintN1(y); } else printf("ERROR"); }
if(x==4)
    {
        scanf("%c",&y);
        if(isbajinzhi(y))
        {
            y=bazhuanshi(y);
            printf("经转化后的数字为:%d",y);
        }
        else printf("ERROR");
    }
    if(x==5)
    {
        scanf("%c",&y);
        if(isshijinzhi(y))
        {
            printf("经转化后的数字为:");
            PrintN1(y);
        }
        else printf("ERROR");
    }
    if(x==6)
    {
        scanf("%c",&y);
        if(isshijinzhi(y))
        {
            printf("经转化后的数字为:");
            PrintN2(y);
        }
        else printf("ERROR");    
    }
    return 0;
 } 

   

4.思维导图。

 

 

5.过程中遇到的问题。

一。怎么样判断二进制,八进制和十进制;解决:通过取余来判断每一位数是否小于进制数。如果是,就输出;如果出现一位以上不符合条件,就提示输入错误。

二。若何让使用者更舒服,适当添加一些提示语句。

6.代码评论。

void ten2any(int n,int key) {
    int i, len = 0;
    char a[10000];
    while (n) {
        a[len] = num2char(n % key);
        n /= key;
        len++;
    }
    switch (key) {
    case 2:printf(" -->二进制是:"); break;
    case 8:printf(" -->八进制是:"); break;
    case 16:printf("    -->十六进制是:"); break;
    }
    for (i = len - 1; i >= 0; i--) {
        printf("%c", a[i]);
    }
    printf("\n");
}

这个同学的代码思路非常清晰,非常的简洁,很多都是我没想到的,有很多东西可以学习借鉴一下。

 

 

7.总结。

一。本次作业,严重加深了对函数的理解和对循环的应用。

二。学到了一些使用函数的技巧,也加大了对程序查错的认识,粗心马虎真的不行。

三。刚开始没有思路,后来在室友的帮助下,磕磕绊绊的才完成,不懂就要多问啊。

三。收获到了进制数之间的转换,以后做题目自己也可以用这个程序。