《牛客網》——華爲機試在線訓練(4-6)

四、字符串分割ios

題目描述

•連續輸入字符串,請按長度爲8拆分每一個字符串後輸出到新的字符串數組;
•長度不是8整數倍的字符串請在後面補數字0,空字符串不處理。
數組

輸入描述:

連續輸入字符串(輸入2次,每一個字符串長度小於100)
函數

輸出描述:

輸出到長度爲8的新字符串數組
spa

示例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("\n");
        }

        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("\n");
        }
    }

    return 0;
}

這道題我居然一次就經過了。。code

 

五、進制轉換orm

題目描述

寫出一個程序,接受一個十六進制的數,輸出該數值的十進制表示。(多組同時輸入 ) blog

輸入描述:

輸入一個十六進制的數值字符串。遞歸

輸出描述:

輸出該數值的十進制字符串。接口

示例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\n", nRes);
        memset(szInput, 0, MAX_SIZE * sizeof(char));
    }
    
    //system("pause");
    return 0;
}

六、質數因子ip

題目描述

功能:輸入一個正整數,按照從小到大的順序輸出它的全部質數的因子(如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;
}
相關文章
相關標籤/搜索