爱笔

笔试题

  1. 单词逆转

  2. 输入n,计算nx1,nx2,.....,nxxxx,直到0~9所有的数字都出现,求最小n

  3. 实现strcpy

  4. 编程实现多态

  5. 括号匹配

题解

  1. 单词逆转

#include<iostream>
#include <string>
#include<stdio.h>

using namespace std;

void Reverse(char *pBegin, char *pEnd)
{
    if (pBegin == nullptr || pEnd == nullptr)
        return;

    while (pBegin < pEnd)
    {
        char temp = *pBegin;
        *pBegin = *pEnd;
        *pEnd = temp;

        pBegin++, pEnd--;
    }
}

char* ReverseSentence(char *pData)
{
    if (pData == nullptr)
        return nullptr;

    char *pBegin = pData;

    char *pEnd = pData;
    while (*pEnd != '\0')
        pEnd++;
    pEnd--;

    // 翻转整个句子
    Reverse(pBegin, pEnd);

    // 翻转句子中的每个单词
    pBegin = pEnd = pData;
    while (*pBegin != '\0')
    {
        if (*pBegin == ' ')
        {
            pBegin++;
            pEnd++;
        }
        else if (*pEnd == ' ' || *pEnd == '\0')
        {
            Reverse(pBegin, --pEnd);
            pBegin = ++pEnd;
        }
        else
            pEnd++;
    }

    return pData;
}

int main(int argc, char* argv[])
{
    char input[100];
    cin.get(input, 100);

    char *ret = ReverseSentence(input);

    while(*ret != '\0')
        cout << *ret++;

    cout << endl;

    return 0;
}
  1. 输入n,计算nx1,nx2,.....,nxxxx,直到0~9所有的数字都出现,求最小n

  2. 实现strcpy

  1. 编程实现多态

  1. 括号匹配

就是一个stack,跟top比较

最后更新于

这有帮助吗?