题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2206

Problem Description
在网络课程上,我学到了非常多有关IP的知识。

IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,如今IPV4下用一个32位无符号整数来表示,一般用点分方式来显示。点将IP地址分成4个部分。每一个部分为8位。表示成一个无符号整数(因此不须要用正号出现),如192.168.100.16,是我们非常熟悉的IP地址。一个IP地址串中没有空格出现(由于要表示成一个32数字)。
可是粗心的我。经常将IP地址写错,如今须要你用程序来推断。

Input
输入有多个case,每一个case有一行。不超过100个字符。
Output
对于每一个case,推断输入的IP是否正确。假设正确输入YES,否则NO。
Sample Input
192.168.100.16
Sample Output
YES

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的计算(字符串处理)相关推荐

  1. c语言字符串子串问题,C语言计算字符串子串出现的次数

    #include #include int substring(char *str,char *str1);//函数原型 int main(void) { char str[64]={0}; char ...

  2. IP地址与字符串、整型之间的转换

    2019独角兽企业重金招聘Python工程师标准>>> /**      * 整型转IP      * @param ipInt      * @return      */     ...

  3. 计算字符串和文件的MD5值

    1 //计算字符串MD5 2 public static string GetStringMd5(string txt) 3 { 4 MD5CryptoServiceProvider md5 = ne ...

  4. 【C 语言】字符串操作 ( strlen 与 sizeof 函数 | 计算 字符串长度 与 内存块大小 )

    文章目录 一.strlen 与 sizeof 函数 二.计算 字符串长度 与 内存块大小 一.strlen 与 sizeof 函数 strlen() 函数的作用是获取字符串大小 , 其原理是 从 内存 ...

  5. 计算字符串的实际长度

    配合使用toCharArray方法和getBytes方法,首先使用toCharArray方法将一个字符串转换成字符数组,然后循环这个字符数组,将每个字符通过getBytes方法转换成字节数组并获取字节 ...

  6. OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

    1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如 ...

  7. es6与java的相似度_计算字符串的相似度-两种解法

    一直不理解,为什么要计算两个字符串的相似度呢.什么叫做两个字符串的相似度.经常看别人的博客,碰到比较牛的人,然后就翻了翻,终于找到了比较全面的答案和为什么要计算字符串相似度的解释.因为搜索引擎要把通过 ...

  8. Java黑皮书课后题第6章:*6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法体计算字符串中的字母个数。编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数

    6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法体计算字符串中的字母个数.编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数 题目 题目描述 破题 代码 运行示例 题目 ...

  9. (转)python3 计算字符串、文件md5值

    字符串md5值 import hashlibdef md5_convert(string):"""计算字符串md5值:param string: 输入字符串:return ...

最新文章

  1. 用OpenCV实现图像的水平镜像(翻转)变换和竖直镜像(翻转)变换(垂直镜像变换)的源码
  2. 【Go】Panic函数
  3. 基于Ubuntu环境使用docker搭建对于中文识别的chineseocr_lite项目
  4. java判断路径是否存在_科学网—Java判断文件目录以及文件是否存在 - 林清莹的博文...
  5. [RK3399][Android7.1] HDMI Debug
  6. 枚举 函数 c语言,在C语言中函数中使用枚举类型和结构
  7. NVelocity条件选择语法
  8. Easy connect不能访问公网/外网/网页
  9. SCI科技论文写作成长营(完整版)
  10. 5类6类7类网线对比_超6类7类8类网线进来挨打 6类线全面测评 网速和传输速率测试...
  11. 【嵌入式开发】STM8S103F3P6单线半双工串口通信
  12. 软件测试这个行业能干到多少岁?
  13. 利用akshare读取50EFF期权1
  14. 2020入侵防御系统(IPS)TOP10
  15. 好生猛,游戏里爆肝创纪录,太强了!
  16. Data Analysis
  17. python中oo是什么意思_python中的OO
  18. python2.7下载教程_Python 2.7安装和下载教程
  19. UML建模综合练习--网上书店
  20. matlab直角坐标转换极坐标,matlab-在MATLAB中怎么将直角坐标转化为极坐标 – 手机爱问...

热门文章

  1. sed学习系列---第3/3部分
  2. 揭露Windows中各种不老实的服务
  3. Crystal Report 加载模板报错 无法在c++ 堆栈中打开由jrc 引擎处理的文档
  4. 正确生成浮点型的方法,解决sqlachemy Float浮点型的坑,生成float类型时,长度和精度均为0,导致查询不到结果!...
  5. 在全面部署 IPV6 前,你需要了解都在这儿
  6. 2014-5-14 我的战斗效果
  7. 最锋利的Visual Studio Web开发工具扩展:Web Essentials详解(转)
  8. C++ 命名空间解释
  9. RabbitMQ入门(4)--路由
  10. 交换机***工具——Yersinia