解题思路:
这个题目我采用逆向思维,直接把字符串中的数字求出来,然后用.连接。看它和原来的串相不相等。
相等后,判断数字个数必须为4个,且数字不能越域。
注意事项:
参考代码:
#include <iostream> #include <stdio.h> #include <string.h> #include <cmath> #include <string> using namespace std; char str[110],len; int a[110],cnt; bool judge() { string s="",ip=""; int num = 0,cnt = 0; for(int i = 0; i < len; i++) { ip += str[i]; if(str[i]>='0' && str[i]<='9') { num = num*10 + str[i]-'0'; } else { a[cnt++] = num; num = 0; } } a[cnt] = num; cnt = min(cnt,3); for(int i = 0; i <= cnt; i++) { if(a[i] == 0) { s += '0'; } else { string temp = ""; while(a[i]) { char ch = a[i]%10 + '0'; temp += ch; a[i] = a[i]/10; } for(int i = temp.length()-1; i >= 0; i--) { s += temp[i]; } } s += '.'; } ip += '\0'; int sLen = s.length(); s[sLen-1] = '\0'; //cout<<s<<endl; if(s == ip) { num = 0; for(int i = 0; i < (int)s.length(); i++) { if(s[i]>='0' && s[i]<='9') { num = num*10 + s[i]-'0'; } else { if(num>=0 && num<=255) { num = 0; } else { return false; } } } if(num >= 0 && num <= 255) {} else return false; } else { return false; } if(cnt < 3) return false; return true; } int main() { while(gets(str)) { len = strlen(str); bool flag = judge(); if(flag) { printf("Y\n"); } else { printf("N\n"); } } return 0; }
0.0分
0 人评分
C语言训练-角谷猜想 (C++代码)(3N+1问题)浏览:1745 |
简单的a+b (C语言代码)浏览:703 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:509 |
母牛的故事 (C语言代码)浏览:915 |
WU-输入输出格式练习 (C++代码)浏览:1076 |
printf基础练习2 (C语言代码)浏览:644 |
用筛法求之N内的素数。 (C语言代码)浏览:646 |
C语言考试练习题_一元二次方程 (C语言代码)浏览:575 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:567 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:484 |