文章

12

粉丝

411

获赞

28

访问

161.0k

头像
P1023 - IP地址 - C
P1023 贵州大学机试题
发布于2020年4月29日 11:55
阅读数 10.3k

/*题目:输入一串字符,判断该字符串是否为点分十进制的IP地址,
若是则转换为16进制输出,否则输出“Error”*/

#include <stdio.h>
#include <string.h>
#define M 100

int main() {
	char s[M];
	int num_x[M] = {0};//标记每一位上的ip,共4位
	int pot_count = 0;
	int flag = 0;//标记是否合法,0合法
	gets(s);//输入ip
	int i, j;
	for (i = 0; i < strlen(s); i++) {
		if ((s[i] > '9' || s[i] < '0') && s[i] != '.') {
			flag = 1;//错误标记 
		}
		if (s[i] == '.') {
			pot_count++;//标记点的个数 
		} else {
			num_x[pot_count] = num_x[pot_count] * 10 + s[i] - '0';
			//printf("%d ", num_x[pot_count]);
		} 
	} 
	//判断点的数量是不是3
	if (pot_count != 3) {
		flag = 1;//数目不对,错误 
	} 
	for (i = 0; i < 4; i++) {
		if (num_x[i] < 0 || num_x[i] > 255) {
			flag = 1;
		} 
	} 
	if (flag) {
		printf("Error");
	} else {
		printf("0x%02X%02X%02X%02X", num_x[0], num_x[1], num_x[2], num_x[3]);
	}
	
	return 0;
} 

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发