出错的原因在于即使first == 0 或 first == 127的情况下,仍加入计数,修改main中的循环代码如下: ``` c++ [] while(cin >> input){ istringstream is(input); string add; vector<string> v; while(getline(is, add, '~')) v.emplace_back(add); int first = stoi(v[0].substr(0, v[0].find_first_of('.'))); // 坑在这里,first若为 127 或 0,代表该ip地址不计入任何类别和非法统计,直接跳过 if(first == 127 || first == 0) continue; if(!judge_ip(v[1]) || !is_mask(v[1])) ++err; else{ if(!judge_ip(v[0])) ++err; else{ if(is_private(v[0])) p++; if(first > 0 && first < 127) a++; // "0.*.*.*" 和 "127.*.*.*" 直接跳过 else if(first > 127 && first < 192) b++; else if(first > 191 && first < 224) c++; else if(first > 223 && first < 240) d++; else if(first > 239 && first < 256) e++; } } } ```</string>
点赞

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务