问题:
输入一个ip地址,判断字符串ip地址是否合法
分析:
ip地址规则:
1. 一共由点分成4部分
2. 每部分中的数字范围为0-255
代码:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <string>
#include <algorithm>
#include <iomanip>
#define MAX 1000
using namespace std;/* run this program using the console pauser or add your own getch, system("pause") or input loop */bool isLegal(char * str) {int length = strlen(str);int num[4];int size=0;int count=0;int c=1;int tmp=0;for(int i=length-1;i>=0;i--){if(str[i] == '.'){//printf("%d\n",tmp);num[size++] = tmp; tmp=0;count++;c=1; continue;}else{tmp+=c*(str[i]-'0');c*=10;} if(tmp>255 || tmp < 0 ){return false;}}if(count != 3){return false;}return true;
}int main(int argc, char** argv) {/*IP地址规则:1. 一共由点分成4部分 2. 每部分中的数字范围为0-255 */char input[MAX];while(gets(input)){if(isLegal(input)){printf("IP地址合法!");}else{printf("IP地址不合法!");}printf("\n");}//puts(input);return 0;
}