zoukankan      html  css  js  c++  java
  • 华为2018校招技术岗笔试

    输入一个整数(含负数),输出3个数据,如下:
    1.输出该整数的位数;
    2.将该整数各位拆分输出,中间以空格隔开(注意末位不能有空格)。如果是负数,则符号与第一个数一起输出;
    3.输出该数的反转数,如为负数,符号位置不变,置于最前。

    示例
    输入:

    -12345

    输出: 

    5
    -1 2 3 4 5
    -54321
    #include <iostream>
    #include <cmath>
    #include <algorithm>
    #include <set>
    #include <cstdio>
    #include <string>
    #include <cstring>
    /*@author:浅滩
    *family:
    *time:
    */
    //我好像是一个在海边玩耍的孩子,
    //不时为拾到比通常更光滑的石子或更美丽的贝壳而欢欣鼓舞,
    //而展现在我面前的是完全未探明的真理之海
    using namespace std;
    
    int main()
    {
    
        string s_num;
        int i;
        getline(cin,s_num);
        if(s_num[0]=='-')//负数
        {
            cout<<s_num.size()-1<<endl;
            cout<<"-"<<s_num[1]<<" ";
            for(i=2;i<s_num.size();i++){
                cout<<s_num[i]<<(i==s_num.size()-1? "
    ":" ");
            }
            cout<<"-";
            for(int i=s_num.size()-1;i>=1;i--){
                cout<<s_num[i];
            }
    
    
        }
        else{
           cout<<s_num.size()<<endl;
            for(i=0;i<s_num.size();i++){
                cout<<s_num[i]<<(i==s_num.size()-1? "
    ":" ");
            }
    
            for(i=s_num.size()-1;i>=0;i--){
                cout<<s_num[i];
            }
    
    
        }
    
    
    
        //cout << "Hello world!" << endl;
        return 0;
    }
     

     

    题目:

    输入4个IP值组成两个IP段:
    第一、二行分别为第一个IP段的起始和结尾IP,第三、四行为第二个IP段的起始和结尾。
    要求输出:
    若两个IP段有交集则输出"Overlap IP",没有则输出"No Overlap IP"。

    示例
    输入:

    1.1.1.1
    255.255.255.255
    2.2.2.2
    3.3.3.3

    输出:

    Overlap IP

    通过从字符串中提取ip的四位数进行比较,只有两种情况没有交集

    代码如下:

    #include <iostream>
    #include <cmath>
    #include <algorithm>
    #include <set>
    #include <cstdio>
    #include <string>
    #include <cstring>
    /*@author:浅滩
    *family:
    *time:
    */
    //我好像是一个在海边玩耍的孩子,
    //不时为拾到比通常更光滑的石子或更美丽的贝壳而欢欣鼓舞,
    //而展现在我面前的是完全未探明的真理之海
    using namespace std;
    
    
    void get_num(string& a,int *b)//提取ip的四位数字
    {//这里和blibli的version版本的那道题目是相似的
    int s=0;
    int top=0;
    
            for(int i=0;i<a.size();i++)
            {
                if(a[i]!='.')
                {
                s=s*10+(a[i]-'0');
                }
                if(a[i]=='.'||i==a.size()-1)
                {
                    b[top]=s;
                    s=0;
                    top++;
                }
    
            }
    }
    int judge(int *a,int *b)//比较ip的大小
    {
    
     for(int i=0;i<4;i++){
        if(a[i]>b[i]) {//ipa>ipb
            return 1;
        }
        else if(a[i]<b[i]){//ipa<ipb
            return 2;
        }
     }return 3;//ipa==ipb
    
    }
    int main()
    {
    
        string ip0_sta,ip0_end,ip_sta,ip_end;
        int     p0_s[4],p0_e[4],p_s[4],p_e[4];//提保存p的四位数字
        cin>>ip0_sta>>ip0_end>>ip_sta>>ip_end;
        get_num(ip0_sta,p0_s);
        get_num(ip0_end,p0_e);
        get_num(ip_sta,p_s);
        get_num(ip_end,p_e);
        //没找到交际只有两种情况
        //1、ip0的终点小于ip的起点
        //2、ip的终点小于ip0的起点
        if(judge(p0_e,p_s)==2){
          
            cout<<"No Overlap IP"<<endl;
            return 0;
        }
        if(judge(p_e,p0_s)==2){
          cout<<"No Overlap IP"<<endl;
        return 0;
        }
        cout<<"Overlap IP"<<endl;
    
    
    
        return 0;
    }
    因为ip的小数点是3个确定的所以可以直接利用scanf的指定方式输入,省去了读入字符串然后从字符串中提取数字的步骤
    #include <iostream>
    #include <cmath>
    #include <algorithm>
    #include <set>
    #include <cstdio>
    #include <string>
    #include <cstring>
    /*@author:浅滩
    *family:
    *time:
    */
    //我好像是一个在海边玩耍的孩子,
    //不时为拾到比通常更光滑的石子或更美丽的贝壳而欢欣鼓舞,
    //而展现在我面前的是完全未探明的真理之海
    using namespace std;
     
    
    int judge(int *a,int *b)//比较ip的大小
    {
     
     for(int i=0;i<4;i++){
        if(a[i]>b[i]) {//ipa>ipb
            return 1;
        }
        else if(a[i]<b[i]){//ipa<ipb
            return 2;
        }
     }return 3;//ipa==ipb
     
    }
    int main()
    {
        int   p0_s[4],p0_e[4],p_s[4],p_e[4];//提保存ip的四位数字
        //cin>>ip0_sta>>ip0_end>>ip_sta>>ip_end; 
        scanf("%d.%d.%d.%d",&p0_s[0],&p0_s[1],&p0_s[2],&p0_s[3]);                                                        
        scanf("%d.%d.%d.%d",&p0_e[0],&p0_e[1],&p0_e[2],&p0_e[3]);
        scanf("%d.%d.%d.%d",&p_s[0],&p_s[1],&p_s[2],&p_s[3]);
        scanf("%d.%d.%d.%d",&p_e[0],&p_e[1],&p_e[2],&p_e[3]);    
        
    
        //没找到交际只有两种情况
        //1、ip0的终点小于ip的起点
        //2、ip的终点小于ip0的起点
        if(judge(p0_e,p_s)==2){
           
            cout<<"No Overlap IP"<<endl;
            return 0;
        }
        if(judge(p_e,p0_s)==2){
          cout<<"No Overlap IP"<<endl;
        return 0;
        }
        cout<<"Overlap IP"<<endl;
     
    
        return 0;
    }

      


    输入两行数据,第一行包含多个正整数,以空格分开,根据每个数的后三位大小进行排序;第二行为数值n,输出排序后指定位置n的数。 要求: 1.若数不足三位,则直接比较; 2.若两数比较结果相等,则两数相对位置不变。 要求输出: 排序后第n个数(位置从1开始)


    示例
    输入:

    12 450 9001 5231 8231 7231
    5

    输出:

    7231

    #include <iostream>
    #include <cmath>
    #include <algorithm>
    #include <set>
    #include <cstdio>
    #include <string>
    #include <cstring>
    /*@author:浅滩
    *family:
    *time:
    */
    //我好像是一个在海边玩耍的孩子,
    //不时为拾到比通常更光滑的石子或更美丽的贝壳而欢欣鼓舞,
    //而展现在我面前的是完全未探明的真理之海
    using namespace std;
    const int maxn=3000+5;
    void mysort(int *a,int n)//不能用sort是因为sort是不稳定排序
    {
    
      for(int i=0;i<n-1;i++)
      {
    
          for(int j=0;j<n-1-i;j++)
          {
    
              if((a[j]%10+(a[j]/10%10)*10+(a[j]/100%10)*100)>(a[j+1]%10+(a[j+1]/10%10)*10+(a[j+1]/100%10)*100)) swap(a[j],a[j+1]);
          }
    
      }
    
    
    }
    int main()
    {
    
    
        string num[maxn];
        int i=0,n;
        while(cin>>num[i]){
            i++;
        }
    
        cin>>n;
        int p[i];
        for(int j=0;j<i;j++){
            p[j]=stoi(num[j]);//必须是c++11以上
        }
        mysort(p,i);
        cout<<p[n-1]<<endl;
    
        //cout << "Hello world!" << endl;
        return 0;
    } 
    不一样的烟火
  • 相关阅读:
    Linux 终端常用快捷键
    问题集
    数据库
    mysql数据库知识点
    IntelliJ IDEAj集成开发环境
    Windows最全DOS的CMD命令
    DB2移植到Oracle数据库完整的图解教程
    169.254是什么IP地址 169.254的解决方法(添加局域网地址时)
    解析xml时报错
    童年乐趣
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11111120.html
Copyright © 2011-2022 走看看