第二次博客园作业

一个人想着一个人 提交于 2019-12-04 04:30:43

一、运行截图

image-20191110140756149

image-20191110140929009

二、介绍函数

1.
void mune()
{
    printf("请选择需要的进制转换\n");
    printf("1、十进制转换二进制\n");
    printf("2、二进制转换十进制\n");
    printf("3、十进制转换八进制\n");
    printf("4、八进制转换十进制\n");
    printf("5、二进制转换八进制\n");
    printf("6、八进制转换二进制\n");
    printf("7、十进制转换十六进制\n");
    printf("8、十六进制转换十进制\n");

菜单

2.
void TenToTwo()

{
    int number, m, c, i = 0, n = 2;
    int a[32];
    printf("输入一个整数:");
    scanf("%d", &number);
    m = number;
    while (number > 0)
    {
        c = (number % n);
        a[i] = c;
        number = number / n;
        i++;
    }
    printf("十进制数%d转换成二进制数是:", m);
    for (i--; i >= 0; i--)
        printf("%d", a[i]);
    printf("\n");

将十进制转化成二进制

3.
void TwoToTen()
{
    long long n, a;
    int sum = 0, i = 0, m;
    printf("输入一个二进制数: ");
    scanf("%lld", &n);
    a = n;
    while (n != 0)
    {
        m = n % 10;
        n /= 10;
        sum += m * pow(2, i);
        ++i;
    }
    printf("二进制数 %lld 转换为十进制为 %d\n", a, sum);
}

将十进制转化为二进制

4.
void TenToEight()
{
    int number, m, c, i = 0;
    int n = 8;
    int a[32];
    printf("输入一个整数:");
    scanf("%d", &number);
    m = number;
    while (number > 0)
    {
        c = (number % n);
        a[i] = c;
        number = number / n;
        i++;
    }
    printf("十进制数%d转换成八进制数是:", m);
    for (i--; i >= 0; i--)
        printf("%d", a[i]);
    printf("\n");
}

将十进制转化为八进制

5.
void EightToTen()
    {
        int n, a;
        int sum = 0, i = 0, m;
        printf("输入一个八进制数: ");
        scanf("%d", &n);
        a = n;
        while (n != 0)
        {
            m = n % 10;
            n /= 10;
            sum += m * pow(8, i);
            ++i;
        }
        printf("八进制数 %d 转换为十进制为 %d\n", a, sum);
    }

八进制转化为十进制

6.
void TwoToEight()

{
    long long n, a;
    int sum = 0, j = 0, m;
    printf("输入一个二进制数: ");
    scanf("%lld", &n);
    a = n;
    while (n != 0)
    {
        m = n % 10;
        n /= 10;
        sum += m * pow(2, j);
        ++j;
    }
    int c;
    int i = 0;
    int b[32];
    while (sum > 0)
    {
        c = (sum % 8);
        b[i] = c;
        sum = sum / 8;
        i++;
    }
    printf("换成八进制数是:", sum);
    for (i--; i >= 0; i--) {        
        printf("%ld", b[i]);
    }
    printf("\n");

将二进制转化成十进制,再将十进制转换成八进制

7.
void EightToTwo()
    {
        long long n, a;
        int sum = 0, i = 0, m;
        printf("输入一个八进制数: ");
        scanf("%d", &n);
        a = n;
        while (n != 0)
        {
            m = n % 10;
            n /= 10;
            sum += m * pow(2, i);
            ++i;
        }
        int k, c, j = 0;
        int b[32];
        while (sum > 0)
        {
            c = (sum % 2);
            b[j] = c;
            sum = sum / 2;
            j++;
        }
        printf("转换成二进制数是:", sum);
        for (j--; j >= 0; j--)
            printf("%d", b[j]);
        printf("\n");
    }

将八进制转换成十进制,再将十进制转换成二进制

8.
void TenToSixteen()
    {
        char arr[] = "0123456789ABCDEF";
        char hex[16];
        int i = 0;
        int j = 0;
        int num = 0, a = 0;
        printf("输入一个整数:");
        scanf("%d", &num);
        a = num;
        while (num)
        {
            hex[i++] = arr[num % 16];
            num = num / 16;
        }
        printf("十进制数%d转换成十六进制数是:", a);
        for (j = i - 1; j >= 0; --j)
            printf("%c", hex[j]);
        printf("\n");
    }

将十进制转换成十六进制

9.
void SixteenToTen()
    {
        int num = 0;
        printf("输入一个十六进制数: ");
        scanf("%x", &num);
        printf("十六进制数 %x 转换为十进制为 %d\n", num, num);
    }

将十六进制转换成十进制

三、main函数

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void TenToTwo();
void TwoToTen();
void TenToEight();
void EightToTen();
void TwoToEight();
void EightToTwo();
void TenToSixteen();
void SixteenToTen();

void mune()
{
    printf("请选择需要的进制转换\n");
    printf("1、十进制转换二进制\n");
    printf("2、二进制转换十进制\n");
    printf("3、十进制转换八进制\n");
    printf("4、八进制转换十进制\n");
    printf("5、二进制转换八进制\n");
    printf("6、八进制转换二进制\n");
    printf("7、十进制转换十六进制\n");
    printf("8、十六进制转换十进制\n");


}
int main()
{
    int choise = 0;
    while (1)
    {
        mune();
        printf("您的选择:");
        scanf("%d", &choise);
        switch (choise)
        {
        case 1:TenToTwo();
            break;
        case 2:TwoToTen();
            break;
        case 3:TenToEight();
            break;
        case 4:EightToTen();
            break;
        case 5:TwoToEight();
            break;
        case 6:EightToTwo();
            break;
        case 7:TenToSixteen();
            break;
        case 8:SixteenToTen();
            break;

        default:
            printf("您的选择不正确\n");
            break;
        }
    }
}

四、思维导图

image-20191110153341786

五、遇到的问题

1.一开始缺少函数说明导致编译错误;

2.二进制转八进制直接转太过复杂,通过百度查到了itoa函数但并不会用,经同学提醒先将二进制或八进制转成十进制,再转成八进制或二进制;

3.在编写函数时经常遇到重复定义,需要多加注意;

4.缺少错误提示

六、代码互评(曾广芝)

void turn3()
{
    int a,b[30],c,i=0,d;
    printf("请输入十进制数:");
    scanf("%d",&a);
    while(a!=0)
    {
        b[i]=a%16;
        c=a/16;
        a=c;
        i++;
    }
    printf("转化为十六进制为:");
    while(i>0)
    { 
        d=b[--i];
        if(d==10)
        printf("A");
        else
        if(d==11)
        printf("B");
        else
        if(d==12)
        printf("C");
        else
        if(d==13)
        printf("D");
        else
        if(d==14)
        printf("E");
        else
        if(d==15)
        printf("F");
        else
        printf("%d",d);
    } 
    printf("感谢使用\n");
}

1.较多使用多分支结构较为繁琐

2.想到了将二、八进制先转成十进制在进行转化

3.有“感谢使用”和选择“是否继续使用”,比我的更像一个给别人使用的软件;

七、总结

收获:更加熟悉函数的应用;编写程序也应注重美观,毕竟是要给别人使用

理解:使用特定的函数可以更快捷、方便的写出我们想要的代码,使代码简化

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!