初级题:
删除重复数字
#include
int a[4096];
int main()
{
int i, j, in;
int c;
while(1)
{
i = 0;
if(scanf("%d", &a[i++]) != 1) break; //input eof
printf("%d",a[0]);
while(1)
{
c = getchar();
if(c == '\n' || c == EOF) break;
scanf("%d", &in);
for(j = 0; j < i; j ++)
if(in == a[j]) break;
if(j == i)
{
a[i++] = in;
printf(",%d", a[j]);
}
}
printf("\n");
if(c == EOF) break;
}
return 0;
}
中级题:
#include
#include
using namespace std;
//从小到大
int cmp1 ( const void *a , const void *b ) {
return *(int *)a - *(int *)b;
}
//从大到小
int cmp2 ( const void *a , const void *b ) {
return *(int *)b - *(int *)a;
}
int main()
{
int src;
int od[1000];
int ji[1000];
int o_index = 0;
int j_index = 0;
while(scanf("%d",&src)!=EOF)
{
if(src %2==0)od[o_index++]=src ;
else ji[j_index++]=src ;
}
qsort(ji,j_index,sizeof(int),cmp2);
qsort(od,o_index,sizeof(int),cmp1);
for (int i = 0; i < j_index-1; i++)
printf("%d ",ji[i]);
if(o_index>0)printf("%d ",ji[j_index-1]);
else printf("%d",ji[j_index]);
for (int i = 0; i < o_index-1; i++)
printf("%d ",od[i]);
printf("%d",od[o_index-1]);
return 0;
}
高级题:
初级题:
#include
#include
using namespace std;
int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}
int main()
{
int src[25];
int od[10];
int ji[10];
int o_index = 0;
int j_index = 0;
for(int i = 0;i < 10; i++)
{
scanf("%d",&src[i] );
if(src[i] %2==0)od[o_index++]=src[i] ; else ji[j_index++]=src[i] ;
}
qsort(od,o_index,sizeof(int),cmp);
qsort(ji,j_index,sizeof(int),cmp); memset(src,0,sizeof(src));
int k = o_index>j_index?o_index:j_index; for(i = 0; i < k; i++)
{
if(isrc[2*i+1] = od[i] ;
else src[2*i+1] = 0;
if(isrc[2*i]=ji[i] ;
else src[2*i]=0;
}
int t = 0;
for(t= 0; t < 2*k-2; t++)
printf("%d ",src[t] );
printf("%d",src[t++]);
if(src[t] !=0)printf(" %d",src[t] );
return 0;
}
中级题:
#include
using namespace std;
int main()
{
char str[129];
int len;
int i;
bool flag=false;
//gets(str);
while(gets(str)!=NULL)
{
len=strlen(str);
if(str[0]>='A' && str[0]<='Z') {
for(i=1;i{
if(str[i] >='A' && str[i]<='Z')
break;
}
if(i==len)
flag=true;
else
flag=false;
}
if(flag==true)
cout<<"true"<else
cout<<"false"<}
}
高级题:
#include
#include
#include
#include
using namespace std;
int map_g[100][100];
int m_find[20];
map my;
int check(int m,int n){
/*
A发送短信的接收者中,没有发过短信给A的人数 > L。
A发送的短信数 - A接收的短信数 > M。
如果存在X,A发送给X的短信数-A接收到X的短信数 > N。 L = 20 M = 50 N = 10
//m表示m_find下标 n表示边的数目
int flag=0;
int out_deg=0;//出度
int r_deg=0;//入度
int out_t=0;
int in_t=0;
int m_index=my[m_find[m]];/到映射
for(int i=1;i<=n;i++){
if(map_g[m_index][i]>0){
out_deg++;
out_t+=map_g[m_index][i];
}
if((map_g[m_index][i]-map_g[i][m_index])>10){
//最后一个条件
flag=1;
break;
}
}
for(int i=1;i<=n;i++){
if(map_g[i][m_index]){
r_deg++;
in_t+=map_g[i][m_index];
}
}
int l=(out_deg-r_deg);//没有给A发送的短信人数
//出度减去入度
int s=out_t-in_t;//短信数
if(l>20||s>50)
flag=1;
return flag;
}
int main(){
/*
华为机试垃圾短信识别
author :zhaoziyan
date : 20140401
思路用有向图,同时因为节点数字太大,建立映射,边的权重表示x—>y,x 发送给y的短信数量
有向图用矩阵来建立
*/
memset(map_g,0,sizeof(map_g));
//string 表示的是id号,int 表示的是在图的矩阵中的下标
//c语言没有map可以用结构体来实现,不过要处理元素的查找,以及去重等等。
map::iterator ptr;
int s_id,r_id;
int num=0;
char c;
scanf("%d",&m_find[num++]);
c=getchar();
while(c!='\n'){
scanf("%d",&m_find[num++]);
c=getchar();
}
int count=0;
int real_id,real_id2;
while(cin>>s_id>>r_id){
//test
//my[s_id]++;
//my[r_id]++;
if(my[s_id]==0) my[s_id]=++count;
//my[s_id]是否表示插入了
if(my[r_id]==0) my[r_id]=++count;
//==0表示这个元素不存在
real_id=my[s_id];
real_id2=my[r_id];
map_g[real_id][real_id2]++;//发送的短信数目加
}
int m_size=my.size();
for(int i=0;iif(check(i,count))
cout<<1<<" ";
else
cout<<0<<" ";
}
return 0;
}
2016华为硬件机试题库
华为硬件机试题目(2016版本) 1.(判断题)DRAM上电时存储单元的内容是全0,而Flash上电时存储单元的内容是全1。(4分)? A.正确? B.错误 2.(判断题)眼图可以用来分析高速信号的码间干扰、抖动、噪声和衰减。(4分)? A.正确? B.错误 3.(判断题)以太网交换机将冲突域限制在每个端口,提高了网络性能。(4分)? A.正确? B.错误 4.(判断题)放大电路的输出信号产生非线性失真是由于电路中晶体管的非线性引起的。(4分)? A.正确? B.错误 5.(判断题)1的8位二进制补码是0000_0001,-1的8位二进制补码是 1111_1111。(4分)?
B.错误 6.(判断题)洗衣机,电冰箱等家用电器都使用三孔插座,是因为如果不接地,家用电器是不能工作的。(4分)? A.正确? B.错误 7.(判断题)十进制数据0x5a与0xa5的同或运算结果为:0x00。(4分)? A.正确? B.错误 8.(判断题)硅二极管的正向导通压降比锗二极管的大(4分)? A.正确? B.错误 9.(单选题)一空气平行板电容器,两级间距为d,充电后板间电压为u。然后将电源断开,在平板间平行插入一厚度为d/3的金属板。此时电容器原板间电压变为(4分)? A.U/3? B.2U/3? C.3U/4?
10.(单选题)8086CPU内部包括哪些单元(4分)? A.ALU,EU? B.ALU,BIU? C.EU,BIU? D.ALU,EU,BIU 11.(单选题)为了避免50Hz的电网电压干扰放大器,应该用那种滤波器:(4分)? A.带阻滤波器? B.带通滤波器? C.低通滤波器? D.高通滤波器 12.(单选题)关于SRAM和DRAM,下面说话正确的是:(4分)? A.SRAM需要定时刷新,否则数据会丢失? B.DRAM使用内部电容来保存信息? C.SRAM的集成度高于DRAM? D.只要不掉点,DRAM内的数据不会丢失 13.(单选题)在RS232串口中,采用哪一种校验方式:(4分)?
华为校园招聘上机题
目录 样题-初级题:从考试成绩中划出及格线 (2) 样题-中级题:亮着电灯的盏数 (2) 样题-高级题:地铁换乘 (3) 8.29去掉最大值、最小值之后剩下的个数 (3) 8.29从5个人中选取2个人作为礼仪 (4) 8.29验证括号是否匹配 (5) 8.31回文数 (5) 8.31将第一行中含有第二行中“23”的数输出并排序 (6) 8.31翻译电话号码 (6) 9.1.AM 将整数倒序输出,剔除重复数据 (7) 9.1.AM 大数相减 (8) 9.1.AM 判断if语句括号是否合法 (8) 9.1.PM (8) 9.1.PM (9) 9.1.PM (9)
样题-初级题:从考试成绩中划出及格线 10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下: (1) 及格线是10的倍数; (2) 保证至少有60%的学生及格; (3) 如果所有的学生都高于60分,则及格线为60分 样题-中级题:亮着电灯的盏数 一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。 有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。 注:电灯数和学生数一致。 样题-高级题:地铁换乘 已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。 地铁线A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18 地铁线B(直线)经过车站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15 8.29去掉最大值、最小值之后剩下的个数1、输入一串数,以','分隔,输出所有数中去掉最大值、最小值之后剩下的个数。 (其中最大值与最小值可能有多个) Smple input:3,3,5,3,6,9,7,9 Sample outPut: 3 8.29从5个人中选取2个人作为礼仪 2、要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要
华为面试题
华为面试题 华为面试题1、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答案:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。 static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件 static 全局变量与普通的全局变量有什么区别:static全局变量只初使
化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数有什么区别:static 函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝 2、程序的局部变量存在于()中,全局变量存在于()中,动态申请数据存在于( )中。 答案:栈;静态区;堆 3、设有以下说明和定义: typedef union {long i; int k[5]; char c;} date; struct data { int cat; date cow; double dog;} too; date max; 则语句printf("%d",sizeof(too)+sizeof(max));的执行结果是:______ 答案:date是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20 data是一个struct, 每个变量分开占用空间. 依次为int4 + date20 + double8 = 32. 所以结果是 20 + 32 = 52. 当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + date10 + double8 = 20 4、队列和栈有什么区别? 答案:队列先进先出,栈后进先出÷ 5、已知一个单向链表的头,请写出删除其某一个结点的算法,要求,先找到此结点,然后删除。答案:slnodetype *delete(slnodetype *head,int key){}中if(head->number==key) { head=pointer->next; free(pointer); break; } back = pointer; pointer=pointer->next; if(pointer->number==key)
华为校招·硬件技术工程师机考试题及答案
精品文档 1.(判断题)DRAM上电时存储单元的内容是全0,而Flash上电时存储单元的内容是全1。(4分) A.正确 B.错误 FLASH可保存 2.(判断题)眼图可以用来分析高速信号的码间干扰、抖动、噪声和衰减。(4分) A.正确 B.错误 3.(判断题)以太网交换机将冲突域限制在每个端口,提高了网络性能。(4分) A.正确 B.错误 4.(判断题)放大电路的输出信号产生非线性失真是由于电路中晶体管的非线性引起的。(4分) A.正确 B.错误 5.(判断题)1的8位二进制补码是0000_0001,-1的8位二进制补码是1111_1111。(4分) A.正确 B.错误 6.(判断题)洗衣机,电冰箱等家用电器都使用三孔插座,是因为如果不接地,家用电器是不能工作的。(4分) A.正确 B.错误 7.(判断题)十进制数据0x5a与0xa5的同或运算结果为:0x00。(4分) A.正确 B.错误 8.(判断题)硅二极管的正向导通压降比锗二极管的大(4分) A.正确 B.错误 9.(单选题)一空气平行板电容器,两级间距为d,充电后板间电压为u。然后将电源断开,在平板间平行插入一厚度为d/3的金属板。此时电容器原板间电压变为(4分) A.U/3 B.2U/3 C.3U/4 D.不变但电容的大小不是由 Q(带电量)或U(电压)决定的,即: C=εS/4πkd。其中,ε是一个常数, S为电容极板的正对面积, d为电容极板的距离, k则是静电力常量。而常见的平行板电容器 电容为C=εS/d.(ε为极板间介质的介电常数, S 为极板面积, d为极板间的距离。) 3电容器的电势能计算公式: E=CU^2/2=QU/2 10.(单选题)8086CPU内部包括哪些单元(4分) A.ALU,EU B.ALU,BIU C.EU,BIU D.ALU,EU,BIU 80x86从功能上分执行单元EU(Execution Unit),和总线接口单元BIU(Bus Interface Unit),执行单元由8个16位通用寄存器,1个16位标志寄存器,1个16位暂存寄存器,1个16位算术逻辑单元ALU及EU控制电路组成。 总线接口单元由4个16位段寄存器(CS,DS,SS,ES),1个16位的指令指针寄存器,1个与EU通信的内部暂存器,1个指令队列,1个计算20位物理地址的加法器∑及总线控制电路构成。 11.(单选题)为了避免50Hz的电网电压干扰放大器,应该用那种滤波器:(4分) A.带阻滤波器 B.带通滤波器 C.低通滤波器 D.高通滤波器 12.(单选题)关于SRAM和DRAM,下面说话正确的是:(4分) A.SRAM需要定时刷新,否则数据会丢失 B.DRAM使用内部电容来保存信息 C.SRAM的集成度高于DRAM D.只要不掉点,DRAM内的数据不会丢失 【解析】SRAM和DRAM都是随机存储器,机器掉电后,两者的信息都将丢失。它们的最大区别就是:DRAM是用电容有无电荷来表示信息0和1,为防止电容漏电而导致读取信息出错,需要周期性地给电容充电,即刷新;而SRAM是利用触发器的两个稳态来表示信息0和1,所以不需要刷新。另外,SRAM 的存取速度比DRAM更高,常用作高速缓冲存储器Cache。
华为上机题汇总111题
注:1.本文代码仅保证在visual studio 2005上运行通过! 2.高亮的题目为华为机试第三题左右难度。 3.本文的字符串基本运用C++里的string类,很少使用常规字符数组形式。 4.freopen()为输入重定向,方便测试,具体用法问度娘。 1.给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A, 如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数 void Stringchang(const char*inpu,char*output) 其中input是输入字符串,output是输出字符串 #include #include #include using namespace std; void stringchang(const char*,char*); int main() { char input[100],output[100]; cin.getline(input,100); stringchang(input,output); cout<