• 《牛客网》——华为机试在线训练(4-6)


    4、字符串分割

    题目描述

    •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
    •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

    输入描述:

    连续输入字符串(输入2次,每个字符串长度小于100)

    输出描述:

    输出到长度为8的新字符串数组

    示例1

    输入

    复制
    abc
    123456789

    输出

    复制
    abc00000
    12345678
    90000000

    代码:
    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    using namespace std;
    #define MAX_INPUT_SIZE 100
    
    int main()
    {
        int nInputLine = 0;
        int nStrLen = 8;
        char szInput[MAX_INPUT_SIZE] = {0};
    
        while(cin >> szInput && nInputLine < 2)
        {
            nInputLine++;
            int nLen = strlen(szInput);
            int nLine = nLen / 8;
            for(int j = 0; j < nLen / 8; j++)
            {
                for(int k = 0; k < 8; k++)
                {
                    printf("%c", szInput[j * 8 + k]);
                }
                printf("
    ");
            }
    
            if(nLen % 8 > 0)
            {
                for(int k = 0; k < nLen % 8; k++)
                {
                    printf("%c", szInput[nLine * 8 + k]);
                }
                for(int k = nLen % 8; k < 8; k++)
                {
                    printf("0");
                }
                printf("
    ");
            }
        }
    
        return 0;
    }

    这道题我竟然一次就通过了。。

    5、进制转换

    题目描述

    写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )

    输入描述:

    输入一个十六进制的数值字符串。

    输出描述:

    输出该数值的十进制字符串。

    示例1

    输入

    复制
    0xA

    输出

    复制
    10

    代码:


    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    
    #define MAX_SIZE 0x100
    
    int main()
    {
        char szInput[MAX_SIZE] = {0};
        //scanf("%s", szInput);
        
        while(scanf("%s", szInput) != EOF)
        {
            int nRes = 0;
            int nLen = strlen(szInput);
            for(int nIndex = 2; nIndex <= nLen; nIndex++)
            {
                if(('A' <= szInput[nIndex] && szInput[nIndex] <= 'F') || ('0' <= szInput[nIndex] && szInput[nIndex] <= '9'))
                {
                    int nTmp = 0;
                    switch(szInput[nIndex])
                    {
                    case 'A':
                    case 'B':
                    case 'C':
                    case 'D':
                    case 'E':
                    case 'F':
                        nTmp = szInput[nIndex] - 'A' + 10;
                        break;
                    default:
                        nTmp = szInput[nIndex] - '0';
                        break;
                    }
    
                    nRes = nRes * 16 + nTmp;
                }
            }
    
            printf("%d
    ", nRes);
            memset(szInput, 0, MAX_SIZE * sizeof(char));
        }
        
        //system("pause");
        return 0;
    }

    6、质数因子

    题目描述

    功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )

    最后一个数后面也要有空格

    详细描述:


    函数接口说明:

    public String getResult(long ulDataInput)

    输入参数:

    long ulDataInput:输入的正整数

    返回值:

    String



    输入描述:

    输入一个long型整数

    输出描述:

    按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。

    示例1

    输入

    复制
    180
    

    输出

    复制
    2 2 3 3 5
    
    代码:
    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #define MAX_SIZE 0x100
    
    int IsPrimeNum(long lNum)
    {
        if(1 == lNum || 2 == lNum)
        {
            return 1;
        }
        
        int nFlag = 1;
        //for(long i = 2; i <= lNum / 2; i++)
        for(long i = 2; i <= sqrt((double)lNum); i++)
        {
            if(lNum % i == 0)
            {
                nFlag = 0;
            }
        }
    
        return nFlag;
    }
    
    int GetPrimeNum(long lNum)
    {
        if(IsPrimeNum(lNum))
        {
            printf("%ld ", lNum);
            return 1;
        }
        
        for(long i = 2; i < lNum / 2; i++)
        {
            
            if(IsPrimeNum(i) && lNum % i == 0)
            {
                printf("%ld ", i);
                GetPrimeNum(lNum / i);
                break;
            }
            //递归
        }
    }
    
    int main()
    {
        long lInput = 0;
        scanf("%ld", &lInput);
    
        if(lInput <= 0)
        {
            return 0;
        }
    
        if(1 == lInput)
        {
            printf("1 ");
            return 0;
        }
    
        if(2 == lInput)
        {
            printf("2 ");
            return 0;
        }
        
        if(IsPrimeNum(lInput))
        {
            printf("%ld ", lInput);
            return 0;
        }
        //for(long i = 2; i < lInput / 2;)
        for(long i = 2; i < sqrt((double)lInput);)
        {
            if(IsPrimeNum(i) && lInput % i == 0)
            {
                printf("%ld ", i);
                lInput /= i;
    
                if(IsPrimeNum(lInput))
                {
                    printf("%ld ", lInput);
                    break;
                }
    
                continue;
            }
            i++;
        }
        //GetPrimeNum(lInput);
        
        system("pause");
        return 0;
    }








  • 相关阅读:
    爬取英雄联盟所有英雄皮肤
    Python xlrd模块读取Excel表中的数据
    H5的接口测试方式
    接口自动化
    DbUtils入门之QueryRunner
    常用注解
    修改Git下Git Bash开始键的默认起始路径
    SVN
    IDEA 2018 安装激活破解方法
    JVM原理(Java代码编译和执行的整个过程+JVM内存管理及垃圾回收机制)
  • 原文地址:https://www.cnblogs.com/predator-wang/p/11849350.html
Copyright © 2020-2023  润新知