问题:
输入一个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;
}