进制之间的转换(1)——十进制向二/八/十六进制的转换

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循环的理解;学会了一个小技:利用空格字符使得运行结果更加方便查看;对运算符%,/的运用更熟练。

发现的问题:数组的初始化定义出错:需要带大括号。问题理解,找到解决思路不够迅速,需要加强练习。同时这些代码都是单一转换,像八/十六进制很简单,二进制也只是计算的体现,以后还有更大进步空间。

运行结果:

周小琛

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值