秦熙源


私信TA

用户名:dotcpp0694749

访问量:1247

签 名:

不会写啊!

等  级
排  名 2416
经  验 2316
参赛次数 12
文章发表 3
年  龄 18
在职情况 学生
学  校 洛阳师范学院
专  业 物联网工程

  自我简介:

大一 -_- 累死了

解题思路:

在基于Internet的程序中,我们常常需要判断一个IP字符串的合法性。
合法的IP是这样的形式:
A.B.C.D
其中A、B、C、D均为位于[0, 255]中的整数。为了简单起见,我们规定这四个整数中不允许有前导零存在,如001这种情况。
现在,请你来完成这个判断程序吧^_^


如题:使用纯暴力解法先看题目要求

题目要求:

  1. A.B.C.D是四个整数,且这四个整数存在于0到255的范围之间

  2. 四个整数不允许有前导零的存在

  3. 通过分析题目要求可以知道正确的IP地址格式是:数字.数字.数字.数字

  4. 当输入End of file时程序结束


注意事项:
没啥子注意事项吧,写代码时候小心一点就行
参考代码

由以上分析可得如下代码:

#include<stdio.h>
#include<math.h>
#include<string.h>
struct ip{
    char a[40];
};
int main()
{
    struct ip w[40];
    char end[40]="End of file";//定义结束语句
    int i=0;
    int t;
    double q;
    char b[40];
    while(gets(w[i].a)){
    //当输入字符串等于结束的字符串时退出循环
        if(strcmp(w[i].a,end)==0){
            break;
        }
        b[i]='Y';
        int n=strlen(w[i].a);
        w[i].a[n]='.';//令字符'.'作为标识字符,在字符串最后一位叫上字符'.'
        t=0;
        int p;
        int o=0;
        for(int j=0;j<=n;j++){
            if(w[i].a[j]=='.'){
                q=0;
                p=o;
                o=j-1;
                t++;//记录'.'的个数
                
                //判断两个字符'.'之间是否相连,相连则退出
                if(o-p<0){
                    b[i]='N';
                    break; 
                }
                for(p;p<j;p++){
                    q=q+(w[i].a[p]-48)*pow(10.0,(o-p));
                    
                    //以上面分析判断何时结束循环
                    if(o-p>0&&q==0){
                        b[i]='N';
                        break;
                    }
                    if(q>255||q<0||w[i].a[p]-48<0||w[i].a[p]-48>9){
                        b[i]='N';
                        break;
                    }
                }
                o=o+2;
            }
            }
            
            //当不是四个点时(刚刚给最后一个字符后面加上了字符'.',一共应该是四个)
            if(t!=4){
                b[i]='N';
        }
        i++;
    }
   
    //输出'Y'和'N',注意换行
    for(int j=0;j<i;j++){
        printf("%c\n",b[j]);
    }
    return 0;
}

写的有点小乱,希望能看懂

 

0.0分

18 人评分

  评论区

辛苦了朋友^_^
2024-03-25 20:44:15
  • «
  • 1
  • »