某公司面试题:输入点分十进制ip地址 输出字符串ip地址整数

输入点分十进制ip地址 输出字符串ip地址整数

</pre>感觉十分坑,最后通过的答案如下</p><p><pre name="code" class="cpp">#include<iostream>
using namespace std;
int main()
{
    unsigned int a, b, c, d;
 bool flag = true;
    char ch;
    cin >> a >> ch >> b >> ch >> c >> ch >> d;
 if (a<0 || a>255)
        flag = false;
 if (b<0 || b>255)
        flag = false;
 if (c<0 || c>255)
        flag = false;
 if (d<0 || d>255)
        flag = false;
 if(flag)
  cout << ((a << 24) | (b << 16) | (c << 8) | d) << endl;
 else
  cout << "ERROR";
    return 0;
}


回家后自己写的

#include<stdio.h>

int test(const char* szsrc)
{
        char chararr[4]={0};
        int iparr[4]={0};

        char outstr[200]={0};
        int success=0;
        unsigned int outresult = 0;
        int i = 0;
        success=sscanf(szsrc, "%3d%c%3d%c%3d%c%3d%c", &iparr[0], &chararr[0], &iparr[1],&chararr[1],&iparr[2],&chararr[2], &iparr[3], &chararr[3]);

        if(success==7 && chararr[0]==chararr[1] && chararr[2]=='.' && chararr[0]=='.')
        {

                for( i =0; i < 4 ; i++)
                {
                        if(iparr[i]<0 ||iparr[i] >255)
                                goto ERROR;
                }
                outresult= (iparr[0]<<24) + (iparr[1]<<16) + (iparr[2]<<8) + iparr[3];

                sprintf(outstr,"%u\n",outresult);
                printf(outstr);
                return 0;
        }
ERROR:
        printf("ERROR\n");
}

int main()
{
        char instr[200];
        int res =0;
         freopen("in.txt","r",stdin);
        while((res=scanf("%s", instr)) >0)
        {
                printf("%s:", instr);
                test(instr);
        }
        fclose(stdin);
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值