c语言实例--ip地址形式输出

2023-11-19

问题:输入一个32位的二进制的数,每8位转化为一个十进制的书,将其转化为十进制的ip地址。

思路先行:第一步:总体思路:输入二进制数,然后每八个为一个小单位分开,形成一个对应的十进制数,最终形成四个ip数。

第二步:分别定义存放ip的数组,存放二进制的数组,把二进制数用字符串的形式存放。

第三步:每八个二进制数转化为一个十进制数字,这里调用转化函数bin_dec()。

第四步:二进制转化为十进制函数:递归函数。形成思路:int bin_dec(int x,int n) 先调用第一个ip实参(2,7),if(n==0) return 0;if不是0,则return x*bin_dec(x,n-1). (温馨提示:自己用小本子写写,就回发现其中的递归奥秘!!!)

代码如下:

#include <stdio.h>             //引入头文件
//调用的二进制转化函数:递归函数
int bin_dec(int x,int n)
{
	if(n==0)
		return 1;
	return x*bin_dec(2,n-1);
}
void main()                    // 入口函数
{
	int i;                        //定义循环变量i
	int ip[4]={0};                //定义存放ip的数组
	char a[33];					  //定义存放二进制数
	printf("请输入二进制数:");
	scanf("%s",a);                 //以字符串的形式读入
	
	for(i=0;i<8;i++)                //第一个IP(0-7位转换结果)
	{
		if(a[i]=='1')
		{
			ip[0] += bin_dec(2,7-i);
		}
	}

	for(i=8;i<16;i++)              //第二个IP(8-15位转换结果)
	{
		if(a[i]=='1')
		{
			ip[1] += bin_dec(2,15-i);
		}
	}

	for(i=16;i<24;i++)             //第三个IP(16-23位转换结果)
	{
		if(a[i]=='1')
		{
			ip[2] += bin_dec(2,23-i);
		}
	}

	for(i=24;i<32;i++)               //第四个IP(24-31位转换结果)
	{
		if(a[i]=='1')
		{
			ip[3] += bin_dec(2,31-i);
		}
		if(a[i]=='\0')
			break;
	}

	printf("IP:%d.%d.%d.%d\n",ip[0],ip[1],ip[2],ip[3]);      //输出结果
}

结果如下:



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言实例--ip地址形式输出 的相关文章

  • java_web:基于三层架构实现学生信息管理1.0(对学生信息的增删改查)

    学生信息管理1 0 涉及的知识点 三层架构理论 简单理解三层架构就是 上层调用下层 下层为上层提供服务 最上层 视图层 由jsp servlet组成 中间层 服务层 组装数据访问层所实现的功能 最下层 数据访问层 实现单一得某项功能 为服务
  • CSS常用样式

    目录 引入CSS样式的三种方式 内联 行内 样式 内部样式表 外部样式表 基础选择器 标签选择器 标签 各种样式 类选择器 类名 各种样式 id选择器 id号 各种样式 字体样式 font 文本样式 鼠标样式 cursor 背景样式 bac
  • MySql保留两位小数

    1 格式化小数函数format x d format 函数会对小数部分进行四舍五入操作 整数部分从右向左每3位一个逗号进行格式化输出 三位小数 整数 不足两位的情况 0 001的情况 2 随机函数ROUND X D 三位小数 整数 不足两位

随机推荐

  • Python03-pytest框架

    Python03 pytest测试框架 pytest简介 支持参数化可以细分控制测试用例 支持简单的单元测试和复杂的功能测试 还支持selenium appium等自动化测试 接口自动化测试 支持第三方插件 可以自定义扩展 pytestht
  • Centos7下安装Zookeeper

    一 配置java环境 1 安装JDK yum install y java 1 8 0 openjdk 2 查看版本 root zookeeper java version openjdk version 1 8 0 362 OpenJDK
  • Python3.6读取excel指定数据并根据邮件列表群发

    python3 6版本 python下载地址 https www python org getit excel 工作簿名 shuju xlsx 会上传附件 sheet表1名称 数据 sheet表2名称 邮箱 请下载附件后填上正确的邮箱 实现
  • dev c++ 配置openGL

    折腾了一早上 总算成功了 亲测有效 参考了很多博客 但是都不完整 现把解决方案分享如下 WINDOWS配置 确保你的WINDOWS SYSTEM32文件下有如下文件 glu32 dll glut32 dll glut dll opengl3
  • 实训八 利用三层交换机实现不同VLAN间通信

    原理 在交换网络中 通过VLAN对一个物理网络进行了逻辑划分 不同的VLAN之间是无法直接访问的 必须通过三层的路由设备进行连接 一般利用路由器或三层交换机来实现不同VLAN之间的互相访问 三层交换机和路由器具备网络层的功能 能够根据数据的
  • python使用scipy.stats检验正态分布

    from scipy import stats import numpy as np np random seed 1 x stats norm rvs loc 0 scale 1 size 100 print list x 夏皮罗一威尔克
  • 企业微信开发:接受消息和发送消息

    简介 本篇博文是针对本人在开发企业微信消息交互的一些经验分享 介绍一下自己开发过程中遇到的问题和解决方法 如果问题或异议 欢迎讨论 技术大佬请忽略 用户在企业微信中有2种用户操作可以发送给我们服务器 1 点菜微信企业应用的菜单 2 给企业微
  • 教你如何单机搭建测试用的分布式系统(一)

    今天来写一篇博客 教大家如何搭建分布式系统 万事开头难 很多人放弃某样东西往往都是在刚开始的时候遇到了困难 所以有句话叫做 师傅领进门 修行靠个人 这个帖子权当作领各位进门吧 开始之前先聊一下我的学习经历吧 博主一开始是学java开发的 刚
  • 软件工程java毕设项目 SSM的毕业设计管理系统(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2 1 界面展示 3 设计方案 3 1 概述 3 2 系统流程 3 2 1 系统开发流程 3 3 2 教师登录流程 3 3 3 系统操作流程 3 3 系统结构设计 4 项目获取 1 项目简介 Hi 各位
  • docker宿主机访问容器_Docker容器与宿主机器通过IP内外通讯

    例如一个如下场景 在Docker环境下面运行了一个含有PHP环境的Docker容器 container 容器名称为php1 同时在宿主机 真实机器 上面有一个MySQL服务器 如何来通过 容器内部的PHP程序来访问外部的MySQL呢 原理
  • 系统架构演变详解

    文章目录 1 单体架构 2 垂直架构 3 分布式架构 4 SOA架构 5 微服务 6 集群 分布式和微服务的区别 1 单体架构 在学习 Dubbo 之后 我们先了解一下系统架构的演变过程 随着用户量的不断增加 业务功能的扩展逐步 系统架构变
  • Qt 学习之路:深入 Qt5 信号槽新语法

    在前面的章节 信号槽和自定义信号槽 中 我们详细介绍了有关 Qt 5 的信号槽新语法 由于这次改动很大 许多以前看起来不是问题的问题接踵而来 因此 我们用单独的一章重新介绍一些 Qt 5 的信号槽新语法 基本用法 Qt 5 引入了信号槽的新
  • 【沐风老师】3DMAX一款神级一键四边面重拓扑插件Quad Remesher使用教程

    Quad Remesher是一款神级一键四边面重新拓扑插件 不需要太多介绍 看下面左右图像对比就知道了 适用版本 3dmax2016 2022 不仅限于此范围 其他自行测试 安装方法 直接拖动Quad Remesher插件脚本文件包 解压后
  • Flutter 2进阶(六):回调函数的使用

    我看了一下 关于 Flutter 的回调和 Android 中的有点区别 所以记录一下 下面是定义了一个有两个参数的回调 定义回调 typedef MyCallBack Function String val1 String val2 回调
  • 程序删除自己,改写自己

    程序删除自己改写自己 有这样一个问题 让程序本身能限制它的运行次数 比如只能运行5次 目前使用的方法大都是通过读取和改写外部文件的数据来判断运行的次数 比如增加配置文件 inf 读写系统注册表 或增加其它类似文件 也就是说 程序运行要依靠外
  • linux shell java jar 使用依赖包时classpath的设置问题

    在linux下通过命令行或shell脚本执行jar包时 如果该jar包没有引用外部jar包 则非常容易 只需使用如下命令就可以实现 java jar Test jar 注意 如果在打包jar文件时 没有指定Main入口所在的类 则需要在后面
  • GD32F310 (一) LED 点灯

    作者 小飞虫科技 淘宝 首页 小虫飞科技 淘宝网 taobao com 开发板 GD32F3X0系列 使用引脚为 PB4 初始化LED void LED Init void enable the led clock rcu periph c
  • GDB断点失效

    GDB还是很深的学问 以前一直深知高并发程序调试的难度 还是要找时间去学习一下 最近多线程的问题比较多 GDB用着总是怪怪的 水还真是深呐 info thread只显示一个线程 但实际上我的线程数应该是很多的 不知道为什么其他线程都看不到
  • 刷脸支付让我们不得不感叹科技的力量

    普通消费者来说 面部识别支付提高了购物效率 大大提高了智能零售的整体体验 当消费者在超市购物时 微信刷脸支付服务商只需在一个特殊的自助结账渠道上滑动镜头即可 整个支付过程只需十秒钟以上 整个过程不需要使用手机 我们不得不感叹科技的力量 人脸
  • c语言实例--ip地址形式输出

    问题 输入一个32位的二进制的数 每8位转化为一个十进制的书 将其转化为十进制的ip地址 思路先行 第一步 总体思路 输入二进制数 然后每八个为一个小单位分开 形成一个对应的十进制数 最终形成四个ip数 第二步 分别定义存放ip的数组 存放