华为历年试题(字符串2)

题目描述:

输入一个字符串,将其中大写字母转换为对应小写字母之后的第五个字母,

若原始大写字母为V~Z, 则转换为对应小写字母的值减21。

其他字符不变,输出转换后的字符串。

例如,对于字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b

要求实现函数:

void TransferString(const char * pInputStr, long lInputLen, char * pOutputStr);

【输入】 pInputStr:  输入字符串

lInputLen:  输入字符串长度

【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;

【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

示例

输入:“Axs3mWss”

输出:“fxs3mbss”

#include<string>
using namespace std;

void TransferString(const char * pInputStr, long lInputLen, char * pOutputStr)
{
   unsigned len = strlen(pInputStr);
   unsigned j=0;
   for(unsigned i=0;i<len;i++)
   {
      if(pInputStr[i]>=‘A‘ && pInputStr[i]<‘V‘)
      {
         pOutputStr[j++]=pInputStr[i]+‘a‘-‘A‘+5;
      }
      else if(pInputStr[i]>=‘V‘ && pInputStr[i]<=‘Z‘)
      {
        pOutputStr[j++]=pInputStr[i]+‘a‘-‘A‘-21;

      }
      else
      {
        pOutputStr[j++]=pInputStr[i];

      }

   }
   pOutputStr[j]=‘\0‘;

}

void main()
{
    const char* input = "Axs3mWss";
    char output[20];
     TransferString(input, 56,output);
    puts(output);

}

华为历年试题(字符串2)

时间: 2024-10-08 19:09:45

华为历年试题(字符串2)的相关文章

华为历年试题(9字符串计算器)

问题描述: 在软件园开饭店的小明最近很郁闷,经常在进行账目核查时出错,每次的计算结果总是有偏差.小王知道后打算为小明解决这个问题,经过调查发现,问题出现在计算器上,当前的计算器计算方法大部分是:输入数据,输入运算符,再输入数据,立刻给出计算结果,然后不断循环.当计算结束时,如果出现偏差或者数据,无法回顾查看到底是哪一步出错,如果需要再次核查,还需要再全部输入一次,非常耽误时间.小王打算帮老板设计一种新的计算器,能够支持表达式的计算,由于是第一个版本,只需要支持整数的“+,-,*”和“( )”即可

华为历年试题(字符串1)

1.字符串问题 问题描述: 把一个字符串中的除大写字母.小写字母和数字字符之外的其他字符都去掉,输出新字符串. 要求实现函数: void my_string(char* input, char* output) [输入]  char* input,输入的字符串 [输出]  char* output, 输出的字符串 [返回]  无 示例 输入:input = “A*(BC&De+_fg/*” 输出:output = “ABCDefg” 输入:input = “aB+_9” 输出:output =

华为历年试题(5)

将一个字符串的元音字母复制到另一个字符串,并排序(30分) 问题描述:有一字符串,里面可能包含英文字母(大写.小写).数字.特殊字符,现在需要实现一函数, 将此字符串中的元音字母挑选出来,存入另一个字符串中,并对字符串中的字母进行从小到大的排序 (小写的元音字母在前,大写的元音字母在后,依次有序). 说明:1.  元音字母是a,e,i,o,u,A,E,I,O,U. 2.  筛选出来的元音字母,不需要剔重:最终输出的字符串,小写元音字母排在前面,大写元音字母排在后面,依次有序. 要求实现函数:vo

华为历年试题(手机号合法性判断4)

手机号码合法性判断 问题描述:我国大陆运营商的手机号码标准格式为: 国家码+手机号码,例如:8613912345678. 特点如下:1.  长度13位: 2.  以86的国家码打头: 3.  手机号码的每一位都是数字.请实现手机号码合法性判断的函数 (注:考生无需关注手机号码的真实性, 也就是说诸如86123123456789这样的手机号码,我们也认为是合法的), 要求:1)  如果手机号码合法,返回0: 2)  如果手机号码长度不合法,返回1 3)如果手机号码中包含非数字的字符,返回2: 4)

华为历年试题(单词统计3)

单词统计 题目描述: 输入一段英文文本,用程序统计出现频率最高和最低的两个单词; 英文文本中仅出现这四类字符:空格( ).英文逗号(,).英文句号(.).英文大小写字母(a-z.A-Z) 单词之间的分隔符仅考虑这三种:空格( ).英文逗号(,).英文句号(.); 仅大小写不同的单词算同一个单词: 如果两个单词出现次数相同,则在文本中首次出现的单词优先返回. 返回的单词统一用小写字母返回 例如: 输入字符串“Hello world, i said hello world to the world”

华为历年试题(掷骰子游戏 7)

问题描述: 在掷骰子游戏中,会根据所掷数字在地图中前进几步,前进完成后需要根据当前地图位置所示的障碍进行相应操作,其中障碍表示: 1)  9:无障碍 2)  1:停掷一轮,即下轮所掷数字无效: 3)  2:后退两步,如果已经到起点不再后退: 4)  3:奖励前进一步 如果在游戏过程中,已经走到地图终点,则游戏结束.根据输入的地图数组,和5个骰子数的数组,返回最终玩家前进了多少步. 要求实现函数: void dice(int map_len, int* map, int* dice_val, in

华为历年试题(10约瑟夫环)

约瑟夫环形问题 有30人将其编号,从头开始1,2,3数数,每到3将其删除,一共删去15个数.输出被删去的15个数 #include<iostream> using namespace std; struct LinkList { int val; LinkList* next; LinkList(int a):val(a),next(NULL){} }; LinkList *CreatList(int n) { LinkList *p = new LinkList(1); LinkList *

华为历年试题(数组8)

有一个数组a[N]如a[10]={0,1,2,3,4,5,6,7,8,9} 每隔两个数删除一个数,如0,1,2(删除),3,4,5(删除),6,7,8(删除),9, 到数组尾部回到数组头部继续删除,要求编写一个函数实现实现上述操作, 返回最后一个数的数组下标. 函数接口:int getLast(int iLen) 参数:数组初始元素个数iLen #include<iostream> using namespace std; struct LinkP{ int val; LinkP *next;

华为机试题-字符串分隔

题目描述 ?连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组:?长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到长度为8的新字符串数组 输入例子: abc 123456789 输出例子: abc00000 12345678 90000000 #include <iostream>#include <string> using namespace std; int main