文章

17

粉丝

0

获赞

56

访问

1.8k

头像
IP地址 题解:贴个C的,通俗
P1023 贵州大学机试题
发布于2026年3月26日 10:38
阅读数 47

#include <stdio.h>
#include <string.h>
char a[10005];
int cnt[27];
int main(){
	gets(a);
	int k =strlen(a);
	int cnt_point=0;
	for(int i=0;i<k;i++){
		if(a[i]=='.'){
			cnt_point++;
		}
		else if(!(a[i]>='0'&&a[i]<='9')){
			printf("Error");
			return 0;			
		}
	}
	if(cnt_point>3)	{
		printf("Error");
		return 0;
	}
	
	//正确的地址格式
	else {
	int j=0;
		//注意循环的控制,,没有直接写i++
	for(int i=0;i<k;){
		int sum = 0;
	
		while(i<k&&a[i]!='.'){
			sum = sum*10+a[i]-'0';
			 i++;
		}
		cnt[j++]=sum;
		if(i<k&&a[i]=='.') i++;
	}
	//判断是否合法,不合法就return 结束程序
	for(int i=0;i<4;i++){
		if(cnt[i]>255||cnt[i]<0) {
			puts("Error");
			return 0;
		}
	}
	//%u 无符号十进制 unsigned %x 小写十六进制 %X 大写十六进制  %o 八进制
	//手动:printf("0x%x", ...)   自动:printf("%#x", ...)
	printf("0x%02X%02x%02x%02x",cnt[0],cnt[1],cnt[2],cnt[3]);
		return 0;
	}

}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发