HuaWei-面试题Traing

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

其具体实现代码如下:

#include<iostream>
#include<string>
using namespace std;void fun(string s)
{while(s.size()>8){cout<<s.substr(0,8)<<endl;s = s.substr(8);}cout<<s.append(8-s.size(),'0')<<endl;}int main()
{string s1;string s2;string s3;cout<<"请输入字符串s1:"<<endl; getline(cin,s1);cout<<"请输入字符串s2:"<<endl; getline(cin,s2);cout<<"请输入字符串s3:"<<endl; getline(cin,s3);fun(s1);fun(s2);fun(s3);return 0;
}
  1. 对数组大小为1-100的数组,输入该数组大小范围内的若干个数组元素,输出排序去重后的结果数组元素:
    其具体实现代码如下:
#include<iostream>
#include<string>
using namespace std;int main()
{int arr[100];int tmp;int flag = 0;int count;cout<<"请输入数组个数"<<endl;while(cin>>count){cout<<"请依次输入数组"<<endl;for(int i = 0;i<count;i++){cin>>arr[i];}for(int i= 0;i<count-1;i++){for(int j = i+1;j<count-flag;j++){if(arr[i] < arr[j]){tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;}if(arr[i] == arr[j]){flag++;for(int k =j;k<count -1;k++){arr[k]=arr[k+1]; }j--;}}}cout<<"请输出排序去重后的数组:" <<endl; for(int i = 0;i<count-flag;i++){cout<<arr[i]<<endl;}}return 0;}
  1. 输入一个正整数,请输出该整数的非质数因子:
    其具体实现的代码如下:
#include<iostream>
#include<string>
using namespace std;int main()
{int num;cout<<"请输入一个正整数:"; cin>>num;for(int i= 2;i<num;i++){bool flag = true;for(int j = 2;j<i;j++){if(i%j == 0){flag = false;}}if(flag){if(num % i == 0){num = num / i;cout<<i<<" ";}}} return 0;}
  1. 请输入一个正浮点数值,输出该浮点数值的近似整数值。
    其具体实现代码如下:
#include<iostream>
using namespace std;int main()
{float num;cout<<"请输入一个正浮点数值:";cin>>num;cout<<"请输出该浮点数的近似整数值"<<int(num+0.5)<<endl;; return 0;}
  1. 合并表记录,对数据记录中的表索引相同的value进行合并,即将表索引相同的value进行求和输出;
    其具体实现代码如下:
#include<iostream>
using namespace std;int main()
{int n,key,value; cout<<"请输入记录数:";cin>>n;cout<<"请输入"<<n<<"个对应的key,value"<<endl; int arr[n];for(int i = 0;i<n;i++){cin>>key>>value;cout<<endl; arr[key]+=value;}cout<<"请输出合并表记录之后的结果:" ;
for(int i =0;i<n;i++)
{if(arr[i] != 0){cout<<i<<" "<<arr[i]<<endl; }} return 0;
}
  1. 提取不重复的整数:输入一个Int型整数,并从右往左去掉重复的数字,按照从数字大小从小到大输出:此处用到了set集合
    其具体实现代码如下:
#include<iostream>
#include<set>
using namespace std;int main()
{int arr[10]={0};int num;cout<<"请输入一个int型整数:";cin>>num; set<int> s;set<int>:: const_iterator iter;while(num)
{int tmp;tmp=num%10;s.insert(tmp);num = num/10;} cout<<"请输出去重后的结果:"<<endl; if(s.empty()){cout<<"set为空。。。"<<endl; }for(iter = s.begin();iter!= s.end();iter++){cout<<*iter<<" ";}return 0;
}

7.提取不重复的整数:输入一个Int型整数,并从右往左去掉重复的数字输出:此处用到了vector集合
其具体实现的代码如下:

#include<iostream>
#include<vector>
using namespace std;int main()
{int arr[10]={0};int num;cout<<"请输入一个int型整数:";cin>>num; vector<int> v;while(num)
{int tmp;tmp=num%10;arr[tmp]++;if(arr[tmp]>0&&arr[tmp]<2){v.push_back(tmp);}num = num/10;} cout<<"请输出去重后的结果:"<<endl; for(int i = 0;i<v.size();i++){cout<<v[i];}return 0;
}

8.统计字符个数:输入一个字符串,计算该字符串中不同字符的个数
其具体实现代码如下:

#include<iostream>
#include<set>
using namespace std;int main()
{string str;cout<<"请输入一个字符串:" ;cin>>str;set<char> s;set<int>:: const_iterator iter;for(int i=0;i<str.length();i++){s.insert(str[i]);}if(s.empty()){cout<<"set为空。。。"<<endl; }cout<<"字符大小: "<<s.size();return 0;}

9.整数逆序输出:输入一个正整数,请输出该整数颠倒后逆序输出的结果;
其具体实现的代码如下:

#include<iostream>
#include<vector>
using namespace std;int main()
{int num;cout<<"请输入一个正整数:" ;cin>>num;vector<int> vc;while(num) {int s;s= num%10;vc.push_back(s);num = num/10;}cout<<"请输出该正整数逆序输出的结果:" ;for(int i = 0;i<vc.size();i++){cout<<vc[i];}return 0;
}

10.逆序输出英文句子:输入一个英文句子,将该句子包括句子中的单词逆序颠倒后输出;
其具体实现的代码如下:

#include<iostream>
#include<stack>
#include<string>using namespace std;int main()
{string str;stack<string> ss; while(cin>>str){  ss.push(str);   }while(!ss.empty()){cout<<ss.top();ss.pop();if(!ss.empty())    //当Stack中栈顶元素为空时{cout<<" ";}       }    return 0;
}

11.字符串的按照字典序排序的最长路径查找:输入n和字符串,将该n个字符串按照字典序排序后在输出;
其具体实现代码如下:

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;int main()
{int num;cin>>num;string str;vector<string> vc;vector<string>:: iterator iter;for(int i=0;i<num;i++){cin>>str;vc.push_back(str);}sort(vc.begin(),vc.end());for(iter = vc.begin();iter != vc.end();iter++){cout<<*iter<<endl;}return 0;
}

12.求一个int型整数在内存总存储时1的数量;
其具体实现代码如下

#include<iostream>
#include<algorithm>using namespace std;
int main()
{int n;cout<<"请输入一个int型整数:" cin>>n;int sum = 0;while(n!=0){n = n&(n-1);   //&:n-1用二进制表示为原整数的二进制最右边的1变为0,最右边的1之后的0均变为1,将  n与n-1做&运算,原整数的二进制的个数会减少一个 ,循环该操作,直到原整数二进制内存1的个数为0为止 sum++;}cout<<"请输出该int型整数在内存总存储时1的个数:" <<sum;return 0;
}

13.坐标移动:开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。
输入:
合法坐标为A(或者D或者W或者S) + 数字(两位以内)
坐标之间以;分隔。
下面是一个简单的例子 如:
A10;S20;W10;D30;X;A1A;B10A11;;A10;
结果 (10, -10)
其具体实现代码如下:

#include<iostream>
#include<string>
#include<cstddef>
using namespace std;int main()
{string s; cin>>s;pair<int,int> pp(0,0);size_t found = s.find_first_of(';');int start = 0;while(found != std::string::npos){string s1 = s.substr(start,found-start);start = found+1;found = s.find_first_of(';',found+1);if(s1.size()>1 && s1.size()<=3){int n = 0; char c = s1[0];int invalid = 0;for(int i = 1;i < s1.size();i++){if(s1[i]>='0' && s1[i]<='9'){n = n *10+(s1[i]-'0');} else{invalid = 1;break;   }   }if(invalid == 0){switch(c){case 'A': {pp.first -= n;break; }case 'D': {pp.first += n;break;   }case 'S': {pp.second -= n;break; }case 'W': {pp.second += n;break;  }}}     }       }cout<<"输出结果为:" <<pp.first<<','<<pp.second<<endl;return 0;  }

14.统计一个字符串最后单词的长度:输入一个字符串,计算该字符串最后一个单词的长度,单词以空格隔开:
其具体实现代码如下:

#include<iostream>
#include<string>using namespace std;int main()
{string str;cout<<"请输入一行字符串:" ;getline(cin,str);int sum = 0;for(int i=str.size()-1;i>=0;i--){if(str[i]!= ' '){sum++;}else{break;}}cout<<"该字符串最后一个单词的长度为:" <<sum<<endl;return 0;
}

15.统计输入的某个字符在一个字符串中相同字符的个数:输入一行字符串和一个字符,计算该字符与字符串中的字符相同的个数;
其具体实现代码如下:

#include<iostream>
#include<string>using namespace std;int main()
{string str;cout<<"请输入一行字符串:" ;getline(cin,str);char c;cout<<"请输入一个字符:" ;cin>>c;int n = 0;for(int i = 0;i<str.size();i++){if(str[i] == toupper(c) || str[i] == tolower(c)){n++; }  }cout<<"该输入字符串最含有该字符的个数为:" <<n<<endl; return 0;
}

16.明明的随机数:输入N个1~1000之间的整数,输出对这n个整数去重排序后的结果(排序从大到小)
其具体实现代码如下:

#include<iostream>
#include<set>using namespace std;int main()
{int N;while(cin>>N){int array[1000] = {0};set<int> s;set<int>::iterator iter;for(int i = 0;i < N;i ++){cin>>array[i];s.insert(array[i]);}for(iter = s.begin();iter != s.end();iter++){cout<<*iter<<endl;}}return 0;
}

17.提取不重复的整数(无需排序):输入一个Int型整数,并从右往左去掉重复的数字输出;
其具体实现代码如下:

#include<iostream>
#include<array>using namespace std;int main()
{int num;int arr[10]={0};int rst = 0; cin>>num;while(num){       if(arr[num%10] == 0)   //arr[num%10] == 0 表示num%10没在计数数组arr中出现过{arr[num%10]++;   //,当第一次出现num%10,计数数组arr加一rst = rst * 10+ num%10;      }num = num /10;}cout<<rst<<endl;return 0;
}

18.编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次;
例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3;
其具体实现代码如下:

#include<iostream>
#include<set>
#include<string>using namespace std;int main()
{string str;set<char> ss;while(cin>>str){  for(int i = 0;i<str.size();i++){ss.insert(str[i]);}}cout<<ss.size()<<endl;  return 0;
}

19.名字的漂亮数:给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。
Input:
整数N,后续N个名字
Output:
每个名称可能的最大漂亮程度
其具体实现的代码如下:

#include<iostream>
#include<string>
#include<algorithm>using namespace std;
int fun(string str)
{int count[26]={0};int value[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26};int sum = 0;for(int i = 0;i<str.size();i++){if(str[i] >= 'a' && str[i] <= 'z'){count[str[i]-'a']++; }else if(str[i] >= 'A' && str[i] <= 'Z'){count[str[i]-'A']++; }}sort(count,count+26);for(int i = 0;i < 26;i++){sum+=count[i] *value[i];}return sum;}
int singacle(int x)
{string st;for(int i = 0;i < x;i++){cin>>st;cout<<fun(st)<<endl;}return 0;
}
int main()
{int n;while(cin>>n){singacle(n);   }return 0;
}

20.字符统计:如果统计的个数相同,则按照ASCII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。
实现以下接口:
输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)
按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出
清空目前的统计结果,重新统计
调用者会保证:
输入的字符串以‘\0’结尾。
其具体实现代码如下:

#include<iostream>
#include<string>
#include<map>
#include<vector>
#include<algorithm>using namespace std;struct ST{char c;int n;};bool cmp(struct ST a,struct ST b)
{    if(a.n>b.n) return a.c>b.c;else return a.c<b.c;
}
int main()
{map<char,int> mp;map<char,int>::iterator it;string ss;vector<ST> vv;while(cin>>ss){for(int i=0;i<ss.size();i++){it=mp.find(ss[i]);if(it == mp.end()){mp.insert(pair<char,int>(ss[i],1));           }else{mp[ss[i]] += 1;}}for(it = mp.begin();it != mp.end();it++){ST csh;csh.c = it->first;csh.n = it->second;vv.push_back(csh);}sort(vv.begin(),vv.end(),cmp);for(int i= 0;i<vv.size();i++){cout<<vv[i].c; } cout<<endl;}return 0;
}

HuaWei-面试题Traing-01相关推荐

  1. 面试题 04.01. 节点间通路

    面试题 04.01. 节点间通路 注意是有向图,用邻接表代替图,dfs或者bfs都可 class Solution { public:bool findWhetherExistsPath(int n, ...

  2. 面试题 10.01. 合并排序的数组

    面试题 10.01. 合并排序的数组 思路:①把B数组放在A数组后面,然后排序.O((n+m)²),太蠢了代码不写 ②copyA数组,然后两个指针判度copyA,和B的值那个小,小的放在A数组中,然后 ...

  3. LeetCode 面试题 08.01. 三步问题 (动态规划)

    面试题 08.01. 三步问题 解法1(动态规划) 分析出递推式:f(n) = f(n - 1) + f(n - 2) + f(n - 3) class Solution {public int wa ...

  4. 面试题 02.01. 移除重复节点(链表删除操作模板)

    链表删除操作:(不带头节点的链表,加上虚拟头节点(dummyHead)删除head就不用单独讨论) 增加虚拟头节点和pre指针: 模板: //创建头节点 ListNode *dummyHead=new ...

  5. Leetcode 面试题 08.01. 三步问题

    Leetcode 面试题 08.01. 三步问题 1.问题分析 2.问题解决 3.总结 1.问题分析 题目链接:https://leetcode-cn.com/problems/three-steps ...

  6. Leetcode面试题 10.01. 合并排序的数组(C语言)

    Leetcode面试题 10.01. 合并排序的数组(C语言) 题目: 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序.初始化 ...

  7. 兰州大学微型计算机原理及应用,兰州大学信息学院微型计算机原理及应用试题答案01...

    习题 兰州大学信息学院微型计算机原理及应用试题答案01 一.判断并陈述理由题(不陈述理由不计分)(1分×10=10分): 1.(×)8086CPU的最大模式是为实现多处理器系统而设计的. 2.(√)在 ...

  8. 数据分析大数据面试题大杂烩01

    互联网:通过埋点实时计算用户浏览频次用优惠券等措施吸引用户,通过历史信息用非智能学习的title方式构造用户画像(抖音,京东) 电信,银行统计营收和针对用户的个人画像:处理大量非实时数据 政府:健康码 ...

  9. 【前端面试题】01—42道常见的HTML5面试题(附答案)

    HTML5为我们提供了更多的语义化标签.更丰富的元素属性,以及更让人欣喜的功能.但在面试中,HTML5部分的面试题主要考察应试者对HTML5API的掌握情况,这是HTML5的重点,也正是这些API推动 ...

  10. java中不同包中怎么实例化,Java 笔试题 (01)

    Java 笔试题 1.有1.2.3.4.5个数字,能组成多少个互不相同且无重复数字的四位数?都是多少? 提示:可填在千位.百位.十位.个位的数字都是1.2.3.4.5.组成所有的排列后再去 掉不满足条 ...

最新文章

  1. 关于MSSQL导入导出时主键与约束丢失的问题解决
  2. R语言ggplot2可视化:使用堆叠的条形图(Stacked Barplot)可视化每个数据行(row)的缺失值的情况(Visualizing missing data counts in rows)
  3. php 对接中国天气网 城市 id json串
  4. try not do unnecessary subscriptions
  5. 我对组件components 和 页面 views 的思考
  6. 实现iframe_面试官:来说说单点登录的三种实现方式
  7. opengl笔记—— glMultMatrixf() 区别 glLoadMatrixf()
  8. swiper.js插件的使用
  9. jQuery再学习之二、jQuery选择器
  10. Android IPC数据在内核空间中的发送过程分析
  11. AxureRP7.0基础教程系列 部件详解Text Area 文本段落
  12. android snackbar 底部,Android KitKat:Snackbar不在屏幕的底部
  13. 华为HG255D路由破解方法
  14. 前端实现序列帧_Html5 序列帧动画
  15. 计算机操作系统教程——分区存储管理
  16. Linux ab压力测试工具安装教程
  17. 使用MySQL创建数据库,实现基本SQL语句
  18. iOS12 捷径(热门推荐)
  19. 淘宝双11实时数据分析项目报告
  20. 阿里云开启ipv6通过appstore审核的方法

热门文章

  1. web前端之dojo(用javascript语言实现的开源DHTML工具包)
  2. php 类调用本身方法,PHP 类中方法的声明与调用
  3. arch Linux安装至U盘(兼容UEFI和BIOS启动)
  4. R语言数字转字符串:自动补0
  5. 纹理--高清设计素材下载
  6. java 一笔一划 写汉字_一笔一划写汉字
  7. [时空与预测]星际迷航-暗黑无边
  8. 4diac 分布式应用-部署到不同的设备中运行
  9. 数据结构课程设计之算术题测试程序
  10. 群雄鏖战,当贝能“夺嫡”成功么?