一,运行截图
1,
2,
3,
4,
5,
二,函数介绍
1,
void TenToTwo() { int num, m, c, i = 0; int n = 2; int a[32]; printf("输入一个整数:"); scanf("%d", &num); m = num; while (num > 0) { c = (num % n); a[i] = c; num = num / n; i++; } printf("十进制数%d转换成二进制数是:", m); for (i--; i >= 0; i--) //将数组倒序输出 printf("%d", a[i]); printf("\n");
}
2,
void TenToEight() { int num, m, c, i = 0; int n = 8; int a[32]; printf("输入一个整数:"); scanf("%d", &num); m = num; while (num > 0) { c = (num % n); a[i] = c; num = num / n; i++; } printf("十进制数%d转换成八进制数是:", m); for (i--; i >= 0; i--) //将数组倒序输出 printf("%d", a[i]); printf("\n"); }
3,
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]; //对十进制数求余并最终与hextable数组中的字符匹配 num = num / 16; } printf("十进制数%d转换成十六进制数是:", a); for (j = i - 1; j >= 0; --j) printf("%c", hex[j]); printf("\n"); }
4,
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); }
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 SixteenToTen() { int num = 0; printf("输入一个十六进制数: "); scanf("%x", &num); printf("十六进制数 %x 转换为十进制为 %d\n", num, num); }
三,main函数
int main() { int n = 0; while (1) { mune(); printf("请选择:"); scanf("%d", &n); switch (n) { case 1:TenToTwo(); break; case 2:TenToEight(); break; case 3:TenToSixteen(); break; case 4:TwoToTen(); break; case 5:EightToTen(); break; case 6:SixteenToTen(); break; case 0: exit(0); break; default: printf("您的选择错误!!!\n"); break; } } }
四,思维导图
五,遇到的问题及解决
1,刚开始不知道如何编写进制间的转换函数,后来通过参考同学提交上去的作业以及通过百度查找进行编写。
2,函数与主函数衔接不好,通过百度查找,最终用switch把他衔接起来。
六,代码互评(郭齐松)
char num2(int num)//将数字转换为字符类型,使得16进制也可以进行计算 { if (num >= 0 && num <= 9) { return (char)('0' + num); } else { return (char)('A' + num - 10); } }
if (judge2,8,10(a, n))
{
printf("该数字的二进制数为:");
chageeverything(changeten(a, n), 2);
printf("\n");
printf("该数字的十进制数为:%d\n", changeten(a, n));
printf("该数字的十六进制数为:");
chageeverything(changeten(a, n), 16);
break;
}}
1,他把输入数字全部先转化为字符,避免了十六进制执行不了出现错误。
2,第一眼没看出他在写什么,后面发现他是在一个函数里又套上了另一个函数。这个办法很是新颖。
七,总结
1,认识到了函数间可以嵌套的,可以使函数更加简介。
2,通过该作业,使得对进制数间的转换有了更深的了解。