一、运行截图
二、介绍函数
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; } } }
四、思维导图
五、遇到的问题
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.有“感谢使用”和选择“是否继续使用”,比我的更像一个给别人使用的软件;
七、总结
收获:更加熟悉函数的应用;编写程序也应注重美观,毕竟是要给别人使用
理解:使用特定的函数可以更快捷、方便的写出我们想要的代码,使代码简化