1.十进制转换为十六/八进制
#define _CRT_SECURE_NO_WARNINGS //为解决scanf函数不安全的警告问题
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i; //基本变量
printf("请输入所要进行进制转换的数:");
scanf("%d", &i);
printf("%x\n", i); //%x表示输出十六进制的格式
/*printf("%o\n", i); %o表示输出八进制的格式*/
system("pause"); //暂停,否则VS运行窗口会一闪而过,包含在头文件#include<stdlib.h>中
return 0;
}
注:这是最最简单的进制之间转换的方法,利用的是输入/输出的控制格式符。%x代表十六进制;%o代表八进制。
学习收获:回顾了scanf,printf函数的用法,明白最简单的进制转换方法,提高我以后在这方面的编程效率。加强我对VS熟练掌控。
反映的问题:对scanf,printf函数的格式细节做的不够,对基础知识的掌握浮于表面,不会灵活应用。注释的的编写太过随性,编程 习惯不够好。
2.十进制转换为二进制(表现我们平时纸上运算过程)
#define _CRT_SECURE_NO_WARNINGS //为解决scanf函数不安全的警告问题
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i, j, m, n;//基本变量
int a[16] = { 0 };//数组初始化
printf("请输入要进行进制转换的数的值:");
scanf("%d", &m);
//计算二进制的循环
for (i = 0; i < 15; i++) //因为仅限于整型的正数部分(最高位始终为0),因此的0~14的循环。
{
j = m % 2; //求m的余数
n = m / 2; //求商
m = n; //商值继续向下除
a[i] = j; //余数放在数组中
}
//输出二进制的循环
for (i = 15; i >= 0; i--)
{
printf("%d", a[i]); //将余数倒序输出,符合我们计算规则。
if (i % 4 == 0) //将余数四位四位的输出,方便记录,观看。
printf(" ");
}
system("pause");
return 0;
}
注:这是体现我们平时对十进制转换为二进制的计算过程(仅限于整型的正数部分)。利用的是for循环结构。
学习的收获:加深的了对for循环的理解;学会了一个小技:利用空格字符使得运行结果更加方便查看;对运算符%,/的运用更熟练。
发现的问题:数组的初始化定义出错:需要带大括号。问题理解,找到解决思路不够迅速,需要加强练习。同时这些代码都是单一转换,像八/十六进制很简单,二进制也只是计算的体现,以后还有更大进步空间。
运行结果: