文章

105

粉丝

69

获赞

117

访问

54.2k

头像
IP地址 题解:
P1023 贵州大学机试题
发布于2024年4月20日 00:29
阅读数 502

#include<bits/stdc++.h>
using namespace std;

char num[1010];

bool cheak(string str)  //判断合法性
{
	int cnt = 0, sum = 0;
	for(int i = 0; i < str.size(); i ++)
	{
		if(sum > 255) return false;
		if((str[i] < '0' || str[i] > '9') && str[i] != '.') return false;
		else sum = sum * 10 + (str[i] - '0');
		if(str[i] == '.')
		{
		    if(str[i + 1] == '.' )return false;
			cnt ++;
			sum = 0;
		}
	}
	if(cnt != 3) return false;
	
	return true;
}

string fun(string str) //转换进制
{
	string res;
	int sum = 0, cnt = 0;
	for(int i = 0; i < str.size(); i ++)
	{
		if(str[i] == '.') 
		{
			sprintf(num, "%02X", sum);
			res += num;
			sum = 0;
		}
		else sum = sum * 10 + (str[i] - '0');
		if(i == str.size() - 1) 
		{
			sprintf(num, "%02X", sum);
			res += num;
			return res;
		}
	}
}

int main()
{
	string str;
	
	getline(cin, str);
	
	if(cheak(str)) cout << "0x" << fun(str);
	else cout << "Error";
...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发