HDU 2206 IP的计算(字符串处理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2206
IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,如今IPV4下用一个32位无符号整数来表示,一般用点分方式来显示。点将IP地址分成4个部分。每一个部分为8位。表示成一个无符号整数(因此不须要用正号出现),如192.168.100.16,是我们非常熟悉的IP地址。一个IP地址串中没有空格出现(由于要表示成一个32数字)。
可是粗心的我。经常将IP地址写错,如今须要你用程序来推断。
IP地址应该满足例如以下条件:
1. '.'有且仅仅能有3个
2. 4个放数字的位置,长度应该在1~3之间(含边界)
3. 每一个数字应该:1~255(含边界)
4. 不能有特殊字符
比較坑的地方就是。输入居然会有空格!
用scanf就不行了。
代码例如以下:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
char s[117];
int flag;
int len;
int place[17];
int k;
void judge1(char st[])//推断是否每一个数字段的个数在1——3之间。
{ if(len > 15 || len < 7) flag = 1; } void judge2(char st[])//推断是否有且仅有三个'.'。 { int cont = 0; int i; for(i = 0; i < len; i++) { if(st[i] == '.') { cont++; place[k] = i; k++; } } if(cont != 3) flag = 1; place[k] = i; k++; } void judge3(char st[])//推断是否有特殊字符。 { for(int i = 0; i < len; i++) { if(!(st[i]=='.' || (st[i]>='0'&&st[i]<='9'))) { flag = 1; break; } } } void judge4(char st[])//推断是否每一个数字段的大小在1——255之间(含边界)。 { for(int i = 1; i < k; i++) { int tt = 0; for(int j = place[i-1]+1; j < place[i]; j++) { tt = tt*10+(st[j]-'0'); } if(tt > 255) { flag=1; break; } } } int main() { while(gets(s)) { //换为scanf直接WA memset(place,0,sizeof(place)); place[0] = -1; flag = 0; k = 1; len = strlen(s); judge1(s); if(flag) { printf("NO\n"); continue; } judge2(s); if(flag) { printf("NO\n"); continue; } judge3(s); if(flag) { printf("NO\n"); continue; } judge4(s); if(flag) { printf("NO\n"); continue; } printf("YES\n"); } return 0; }
转载于:https://www.cnblogs.com/clnchanpin/p/6910350.html
HDU 2206 IP的计算(字符串处理)相关推荐
- c语言字符串子串问题,C语言计算字符串子串出现的次数
#include #include int substring(char *str,char *str1);//函数原型 int main(void) { char str[64]={0}; char ...
- IP地址与字符串、整型之间的转换
2019独角兽企业重金招聘Python工程师标准>>> /** * 整型转IP * @param ipInt * @return */ ...
- 计算字符串和文件的MD5值
1 //计算字符串MD5 2 public static string GetStringMd5(string txt) 3 { 4 MD5CryptoServiceProvider md5 = ne ...
- 【C 语言】字符串操作 ( strlen 与 sizeof 函数 | 计算 字符串长度 与 内存块大小 )
文章目录 一.strlen 与 sizeof 函数 二.计算 字符串长度 与 内存块大小 一.strlen 与 sizeof 函数 strlen() 函数的作用是获取字符串大小 , 其原理是 从 内存 ...
- 计算字符串的实际长度
配合使用toCharArray方法和getBytes方法,首先使用toCharArray方法将一个字符串转换成字符数组,然后循环这个字符数组,将每个字符通过getBytes方法转换成字节数组并获取字节 ...
- OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数
1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如 ...
- es6与java的相似度_计算字符串的相似度-两种解法
一直不理解,为什么要计算两个字符串的相似度呢.什么叫做两个字符串的相似度.经常看别人的博客,碰到比较牛的人,然后就翻了翻,终于找到了比较全面的答案和为什么要计算字符串相似度的解释.因为搜索引擎要把通过 ...
- Java黑皮书课后题第6章:*6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法体计算字符串中的字母个数。编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数
6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法体计算字符串中的字母个数.编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数 题目 题目描述 破题 代码 运行示例 题目 ...
- (转)python3 计算字符串、文件md5值
字符串md5值 import hashlibdef md5_convert(string):"""计算字符串md5值:param string: 输入字符串:return ...
最新文章
- 用OpenCV实现图像的水平镜像(翻转)变换和竖直镜像(翻转)变换(垂直镜像变换)的源码
- 【Go】Panic函数
- 基于Ubuntu环境使用docker搭建对于中文识别的chineseocr_lite项目
- java判断路径是否存在_科学网—Java判断文件目录以及文件是否存在 - 林清莹的博文...
- [RK3399][Android7.1] HDMI Debug
- 枚举 函数 c语言,在C语言中函数中使用枚举类型和结构
- NVelocity条件选择语法
- Easy connect不能访问公网/外网/网页
- SCI科技论文写作成长营(完整版)
- 5类6类7类网线对比_超6类7类8类网线进来挨打 6类线全面测评 网速和传输速率测试...
- 【嵌入式开发】STM8S103F3P6单线半双工串口通信
- 软件测试这个行业能干到多少岁?
- 利用akshare读取50EFF期权1
- 2020入侵防御系统(IPS)TOP10
- 好生猛,游戏里爆肝创纪录,太强了!
- Data Analysis
- python中oo是什么意思_python中的OO
- python2.7下载教程_Python 2.7安装和下载教程
- UML建模综合练习--网上书店
- matlab直角坐标转换极坐标,matlab-在MATLAB中怎么将直角坐标转化为极坐标 – 手机爱问...
热门文章
- sed学习系列---第3/3部分
- 揭露Windows中各种不老实的服务
- Crystal Report 加载模板报错 无法在c++ 堆栈中打开由jrc 引擎处理的文档
- 正确生成浮点型的方法,解决sqlachemy Float浮点型的坑,生成float类型时,长度和精度均为0,导致查询不到结果!...
- 在全面部署 IPV6 前,你需要了解都在这儿
- 2014-5-14 我的战斗效果
- 最锋利的Visual Studio Web开发工具扩展:Web Essentials详解(转)
- C++ 命名空间解释
- RabbitMQ入门(4)--路由
- 交换机***工具——Yersinia