C语言 实验8-2-10 IP地址转换 (20分)

本文介绍了一个使用C语言实现的算法,该算法将输入的字符串按八位一组进行处理,每组转换为对应的十进制数,并在每个转换后的数值间添加点作为分隔符。通过遍历字符串,利用数学函数计算每一位的权重,实现了从二进制到十进制的有效转换。

在这里插入图片描述
思路:八个一组,分四组计算。
找到每组开始和结束时临界条件的特点即可。

#include<stdio.h>
#include<math.h>
int main (void)
{
	char str[33];                                 // 字符串要比需输入的多一个长度,别忘啦结束符 '\0'
	scanf("%s",str);
	int i,n=1,sum=0,k=7;
	for (i=(n-1)*8; i<8*n; i++){
		sum += pow(2,k--) * (str[i]-'0');         // 八个一组 计算 
		
		if (i == 8*n-1){                          // 第八个数计算完的时候 
			n++;
			printf("%d",sum);
			sum = 0; 
			k = 7;
			if (n <= 4)                           // 套娃输出 点 
				printf(".");
		}
		if (n > 4)                                // n = 5时计算结束 
			break;
	}
	
	return 0;
 } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值