进制转换(你还在用笔在转换吗?)

目录

文章目录

前言

一、十进制转换为二进制

1.编程要点

2.主要程序代码如下

3.运行

二、n进制转换为十进制

1.编程要点

 2.主要程序代码如下

 3.运行

三、以IP地址形式输出

1.编程要点

 2.主要程序代码如下

3运行

总结




前言

计算机信息的编码有很多种,二进制,八进制,十进制及十六进制,现在就让我们解决它们之间的转换。



一、十进制转换为二进制

1.编程要点

        1)用数组来储存二进制数。

        2)用两次for循环,第一次for循环0到14,(本题只考虑正数的转换,有兴趣的小以自己           敲下负整数),第二次for为15到0。注不是0到15。存入是从a[0]开始的。

        3)%,/  的应用。

2.主要程序代码如下

#include<stdio.h>
int main()//将10进制转换成二进制。
{
	int i,j,m,n;
	int a[16] = { 0 };//注意数组一定要定义为0。
	printf("please input decimalism number(0-32767):n");
	scanf("%d", &m);
	for (i = 0; i < 15; i++)
	{
		a[i] = m % 2;
		m = m / 2;
	}
	for (i = 15; i >= 0; i--)
	{
		printf("%d", a[i]);
		if (i % 4 == 0)
			printf(" ");
	}
	return 0;
}

3.运行

 程序运行结果示例1:


             


二、n进制转换为十进制

1.编程要点

        1)注意分别讨论有字母的情况

        2)要统一字母的格式

 2.主要程序代码如下

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void change(char t[])
{
	int i = 0;

	for (i = 0; i < strlen(t); i++)
	{

		if (t[i] >= 'a' && t[i] <= 'z')

			t[i] = t[i] - 32;
	}

}

int main()		//将n进制转换成10进制
{
	long t1 = 0;

	int i=0, n=0, t=0, t3=0;

	char a[100];

	printf("please input a number string:n");
	
    gets(a);	                                    //输入n进制数到数组a中。
	
    change(a);	                                    //将a中的小写字母转换成大写字母。
	
    t3 = strlen(a);		                            //求数组a的长度。
	
    printf("please input n(2 or 8 or 16):n");

	scanf("%d",&n);

	for (i = 0; i < t3; i++)
	{
		if (a[i] - '0' >= n && a[i] <= 'A' || a[i] - 'A' + 10>=n)	
                //判断输入数据和进制数是否相符。
		{
			printf("data error!!");

			exit(0);						                        //中断程序
		}

		if (a[i] >= '0' && a[i] <= '9')

			t = a[i] - '0';					                        //转换成10进制

		else if (n >= 11 && (a[i] > 'A' && a[i] <= 'A' + n - 10))	//判断是否为字母

			t = a[i] - 'A' + 10;			                        //转换成10进制

		t1 = t1 * n + t;					                        //注意是*n
	}	

	printf("the decimal is %ldn", t1);

	return 0;
}

 3.运行

程序运行结果示例1:

程序运行结果示例2:

程序运行结果示例3:


三、以IP地址形式输出

1.编程要点

        1)将输入的二进制位以每8位数为一个单位

 2.主要程序代码如下

#include<stdio.h>

int bin_dec(int x, int n)
{
	if (0 == n)		//递归结束条件
	{
		return 1;
	}
	return x * bin_dec(x, n - 1);	//调用递归。
}

int main()
{
	int i;

	char a[33];

	int ip[4] = { 0 };

	printf("please input binary number:n");

	gets(a);

	for (i = 0; i < 8; i++)		//每8位二进制为一个单位

		if (a[i] == '1')

			ip[0] += bin_dec(2, 7 - i);

	for (i = 8; i < 16; i++)

		if (a[i] == '1')

			ip[1] += bin_dec(2, 15 - i);

	for (i = 16; i < 24; i++)

		if (a[i] == '1')

			ip[2] += bin_dec(2, 23 - i);

	for (i = 24; i < 32; i++)
	{
		if (a[i] == '1')

			ip[3] += bin_dec(2, 31 - i);

		if ('' == a[i])

			break;
	}
	printf("ip:n");

	printf("%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);

	return 0;
}

3运行

程序运行结果示例1:


总结

本次练习了字符串中大小写字母的转换,数字分离,创建子函数等知识点。

让我们每天进步一小步。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>