文章
17
粉丝
0
获赞
56
访问
1.8k
#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;
}
}
登录后发布评论
暂无评论,来抢沙发