文章

81

粉丝

2

获赞

521

访问

11.4k

头像
IP地址 题解:
P1023 贵州大学机试题
发布于2026年3月8日 21:33
阅读数 338

#include<iostream>
#include<string>
#include<cstdio>
using namespace std;

int main(){

    string s;
    cin >> s;

    int a,b,c,d;
    char x,y,z;

    if(sscanf(s.c_str(), "%d.%d.%d.%d%c", &a,&b,&c,&d,&x) != 4){
        cout<<"Error";
        return 0;
    }

    if(a<0||a>255||b<0||b>255||c<0||c>255||d<0||d>255){
        cout<<"Error";
        return 0;
    }

    printf("0x%02X%02X%02X%02X",a,b,c,d);

    return 0;
}

由于题目说明输入可能是任意字符串,因此不能直接用 cin 读取整数,而需要先把整行输入读入为字符串,然后再按照 IP 地址的格式进行解析。

程序首先使用 string 类型读取输入字符串 s,然后使用 sscanf 从字符串中按照指定格式解析数据。sscanf 的作用是从字符串中按给定格式读取数据,它的功能类似 scanf,但 scanf 从键盘读取数据,而 sscanf 从字符串中读取数据。函数基本形式为 sscanf(字符串, "格式", 变量地址)。

代码中的 sscanf(s.c_str(), "%d.%d.%d.%d%c", &a,&b,&c,&d,&x) 表示按 a.b.c.d 的格式读取四个整数,其中 %d 表示读取整数,“.” 表示匹配字符点号,“%c” 用于尝试再读取一个字符,用来检测输入中是否存在多余字符。例如输入 23.23.11.23.123,...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发