目录
样题-初级题:从考试成绩中划出及格线 (2)
样题-中级题:亮着电灯的盏数 (3)
样题-高级题:地铁换乘 (5)
8.29去掉最大值、最小值之后剩下的个数 (8)
8.29从5个人中选取2个人作为礼仪 (10)
8.29验证括号是否匹配 (12)
8.31回文数 (13)
8.31将第一行中含有第二行中“23”的数输出并排序 (14)
8.31翻译电话号码 (16)
9.1.AM 将整数倒序输出,剔除重复数据 (18)
9.1.AM 大数相减 (19)
9.1.AM 判断if语句括号是否合法 (22)
9.1.PM (23)
9.1.PM (24)
9.1.PM (25)
样题-初级题:从考试成绩中划出及格线10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:
(1) 及格线是10的倍数;
(2) 保证至少有60%的学生及格;
(3) 如果所有的学生都高于60分,则及格线为60分
#include
void sort(int a[])
{
int i,j,t;
for(i = 0;i < 10;i++)
for(j = i+1;j<10;j++)
{
if(a[i] > a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
int main()
int num[10] = {0};
scanf("%d%d%d%d%d%d%d%d%d%d",
&num[0],&num[1],&num[2],&num[3],&num[4],&num[5],&num[6],&num[7], &num[8],&num[9]);
sort(num);
if(num[0] > 60)
printf("60");
else
printf("%d",(num[4]/10)*10);
return 0 ;
}
样题-中级题:亮着电灯的盏数一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。注:电灯数和学生数一致。
#include
#define MAX 65535
int GetNum(int n)
{
int i,j,num = 0;
char a[MAX] = {0};
if((n < 1) || (n > MAX))
return 0;
for(i = 1; i < n; i++)
for(j = 1; j < n; j++)
{
if ((j % i) == 0)
{
a[j] += 1;
a[j] %= 2;
}
}
for (i = 1; i < n; i++)
{
if (1 == a[i])
num++;
}
return num;
}
int main()
{
int a;
scanf("%d",&a);
printf("%d",GetNum(a));
return 0;
}
优化后:
#include
int main()
{
int i,j,n;
int cnt = 0;
scanf("%d",&n);
for(i = 1;;i++)
{
j = i * i;
if(j > n)
break;
cnt++;
}
printf("%d",cnt);
return 0;
}
样题-高级题:地铁换乘已知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 //描述:已知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 B1!0 T2 B11 B12 B13 B14 B15
//输入:输入两个不同的站名
//输出:输出最少经过的站数及名称,含输入的起点和终点,换乘站点只计算一次
#include
#include
#include
#define inf 1000 //定义无穷远距离
#define stanum 35 //定义总站台数
using namespace std;
string s1[stanum] = {"A1","A2","A3","A4","A5","A6","A7","A8","A9","A10",
"A11","A12","A13","A14","A15","A16","A17","A18",
"B1","B2","B3","B4","B5","B6","B7","B8","B9","B10",
"B11","B12","B13","B14","B15","T1","T2"} ; //记录车站的名字
void floyd(int dis[][stanum],int path[][stanum])
{
//初始化path矩阵
for(int row=0;rowfor(int col=0;colpath[row][col]=row;
//找最短路径
for(int k=0;kfor(int i=0;ifor(int j=0;jif(dis[i][j]>dis[i][k]+dis[k][j])
{
dis[i][j]=dis[i][k]+dis[k][j];
path[i][j]=path[k][j];
}
}
int string2int(string s) //转换车站的名字到矩阵的索引
{
for(int i=0;iif(s==s1[i])
{
return i;
break;
}
}
void printres(int dis[][stanum],int path[][stanum],string start,string dest) {
cout<<"start station to destination distance path"<cout<<"\t"<"<int s;
int d;
s=string2int(start);
d=string2int(dest);
cout<<"\t"<for(int j=0;j{
if(i==s&&j==d) //输出路径
{
stack pathrout; //压栈
int k=j;
do
{
k=path[i][k];
pathrout.push(k);
}while(k!=i);
//弹栈
cout<pathrout.pop();
int length=pathrout.size();
for(int t=0;t{
cout<<"->"<pathrout.pop();
}
cout<<"->"<break;
}
}
}
int main()
{
int distance[stanum][stanum];
int path[stanum][stanum];
string start;
string dest;
//初始化连接矩阵
for(int i=0;i{
for(int j=0;j{
if(i==j)
distance[i][j]=0;
else
distance[i][j]=inf;
}
}
//初始化技巧
int sa[21]={0,1,2,3,4,5,6,7,8,33,9,10,11,12,34,13,14,15,16,17,0};
for(int m=0;m<20;m++)
{
distance[sa[m]][sa[m+1]]=1;
distance[sa[m+1]][sa[m]]=1;
}
int sb[17]={18,19,20,21,22,33,23,24,25,26,27,34,28,29,30,31,32};
for(int n=0;n<16;n++)
{
distance[sb[n]][sb[n+1]]=1;
distance[sb[n+1]][sb[n]]=1;
}
floyd(distance,path);
cout<<"input start and destination"<cin>>start>>dest;
printres(distance,path,start,dest);
system("pause");
return 0;
}
8.29去掉最大值、最小值之后剩下的个数1、输入一串数,以','分隔,输出所有数中去掉最大值、最小值之后剩下的个数。
(其中最大值与最小值可能有多个)
Smple input:3,3,5,3,6,9,7,9 Sample outPut: 3
#include
int main()
{
int a[100] = {0}, n = 0,temp,min, max,i,j,num = 0;
char c = '0';
n = 0;
while(c != '\n')
{
scanf("%d",&temp);
scanf("%c",&c);
a[n] = temp;
n++;
}
max = min = a[0];
for(i = 0;i < n; i++)
{
a[i] = a[i*2];
}
for(i = 0;i < (n + 1) / 2;i++)
{
if(a[i] > max)
max = a[i];
if(a[i] < min)
min = a[i];
}
for(j = 0;j < (n + 1) / 2;j++)
{
if((a[j] < max) && (a[j] > min))
num++;
}
printf("%d",num);
return 0;
}
8.29从5个人中选取2个人作为礼仪
2、要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要求2个人的身高差值最小(如果差值相同的话,选取其中最高的两人),以升序输出两个人的身高。
Smple input:161 189 167 172 188 Sample outPut: 188 189
#include
#include
void sort(int a[])
{
int i,j,temp;
for(i = 0;i < 5;i++)
for(j = 0;j < 5;j++)
{
if(a[i] < a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
int main()
{
int a[5] = {0}, b[4] = {0};
int i, temp;
for(i = 0;i < 5;i++)
scanf("%d",&a[i]);
sort(a);
for(i = 0;i < 5;i++)
{
b[i] = abs(a[i+1] - a[i]);
}
temp = b[0];
for(i = 0;i < 4;i++)
{
if(temp > b[i])
temp = b[i];
}
for(i = 0;i < 4;i++)
{
if((b[i] == temp) && a[i] > 160 && a[i] < 190) printf("%d %d",a[i],a[i+1]);
}
return 0;
}
8.29验证括号是否匹配
3、输入一串字符串,其中有普通的字符与括号组成(包括‘(’、‘)’、‘[’,']'),要求验证括号是否匹配,如果匹配则输出0、否则输出1.
Smple input:dfa(sdf)df[dfds(dfd)] Smple outPut:0
#include
int main()
{
char a[100],c,i = 0;
int flag = 0;
scanf("%c",&c);
while(c != '\n' && flag == 0)
{
switch(c)
{
case('('):
a[i] = c;
i++;
break;
case('['):
a[i] = c;
i++;
break;
case(')'):
if(a[i - 1] == '(')
{
a[i -1] = '\0';
i--;
}
else
flag = 1;
break;
case(']'):
if(a[i - 1] == '[')
{
a[i -1] = '\0';
i--;
}
else
flag = 1;
break;
}
scanf("%c",&c);
}
if(a[0] != '\0')
printf("1");
else
printf("%d",flag);
return 0;
}
8.31回文数
1.判断回文数,是返回1
#include
int main()
{
int n,m = 0,temp;
scanf("%d",&n);
temp = n;
while(temp > 0)
{
m *= 10;
m += temp % 10;
temp = temp / 10;
}
if(m == n)
printf("1");
else
printf("0");
return 0;
}
8.31将第一行中含有第二行中“23”的数输出并排序
2. 输入一行数字:123 423 5645 875 186523 在输入第二行:23
将第一行中含有第二行中“23”的数输出并排序
结果即:123 423 186523
#include
int main()
{
int a[100] = {0},temp,s,i = 0,j;
char c = '\0';
int sort[100],t = 0;
while(c != '\n')
{
scanf("%d%c",&temp,&c);
a[i] = temp;
i++;
}
scanf("%d",&s);
for(j = 0;j <= i;j++)
{
temp = a[j];
while(temp > 0)
{
if(temp % 100 == s)
{
sort[t] = a[j];
t++;
break;
}
else
temp /= 10;
}
}
for(i = 0;i < t;i++)
for(j = 0;j < t;j++)
if(sort[i] < sort[j])
{
temp = sort[i];
sort[i] = sort[j];
sort[j] = temp;
}
for(i = 0;i < t;i++)
printf("%d ",sort[i]);
return 0;
}
8.31翻译电话号码
3. 将电话号码one two 。。。nine zero 翻译成1 2 。。9 0
中间会有double
例如输入:OneTwoThree
输出:123
输入:OneTwoDoubleTwo
输出:1222
输入:1Two2 输出:ERROR
输入:DoubleDoubleTwo 输出:ERROR
第三题:有空格,非法字符,两个Double相连,Double位于最后一个单词都错误
#include
#include
int main()
{
char a[11][11] = {"zero","one","two","three","four","five","six","seven","eight","nine","double"};
char temp[11];
char c = '\0';
int i,d = 0,f; //d means double f means final
while(c != '\n')
{
scanf("%s%c",&temp,&c);
f = 0;
for(i = 0;i < 11;i++)
{
if(!strcmp(temp,a[i]) && i < 10)
{
printf("%d",i);
f = 1;
if(d == 1)
{
printf("%d",i);
d = 0;
}
}
else if(!strcmp(temp,a[i]) && i == 10)
{
d = 1;
f = 1;
}
}
if(f == 0)
break;
}
if(d == 1 || f == 0)
printf("ERROR\n");
return 0;
}
9.1.AM 将整数倒序输出,剔除重复数据
输入一个整数,如12336544,或1750,然后从最后一位开始倒过来输出,最后如果是0,则不输出,输出的数字是不带重复数字的,所以上面的输出是456321和571。如果是负数,比如输入-175,输出-571。
#include
int main()
{
int Num,n[50],a[10] = {0},temp,i = 0,flag = 0;
char c;//a数组是剔除重复数字falg是防止首位输出0 以及保证后面0的正常输出
scanf("%c",&c);
scanf("%d",&Num);
while(Num > 0)
{
temp = Num % 10;
if(a[temp] == 0)
{
a[temp] = 1;
n[i] = temp;
i++;
}
Num /= 10;
}
if(c == '-')
printf("%c",c);
for(temp = 0;temp < i;temp++)
{
if(n[temp] != 0 || flag != 0)
{
printf("%d",n[temp]);
flag = 1;
}
}
temp = ((int)c-48) - n[i - 1]; //判断头两个数字是否一样
if(c != '-' && temp != 0)
printf("%d",(int)c-48);
return 0;
}
9.1.AM 大数相减
输入两行字符串正整数,第一行是被减数,第二行是减数,输出第一行减去第二行的结果。
备注:1、两个整数都是正整数,被减数大于减数
示例:
输入:1000000000000001
1
输出:1000000000000000
注意大数用char a[] 存储,用%s接收,一位一位的运算。注意a[0]里的正负号。
#include
#include
void dec(char *d1, char *d2, char *out)
{
int len_min = strlen(d1);
int len_max = strlen(d2);
int last_j = 0; //最关键的错位
while(len_min > 0)
{
int dd1 = d1[len_min - 1] - '0';
int dd2 = d2[len_max - 1] - '0';
if (last_j) dd2 = dd2 - 1;
华为校园招聘上机题
目录 样题-初级题:从考试成绩中划出及格线 (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,要
华为认证网络工程师考试试题(笔试)及答案讲解
华为认证网络工程师--认证考试试题(笔试)及答案 选择题:(每题2分,共100分) 1、 以下属于物理层的设备是( A ) A 、 中继器 B 、 以太网交换机 C 、 桥 D 、 网关 2、 在以太网中,是根据( B )地址来区分不同的设备的。 A 、 LLC 地址 B 、 MA C 地址 C 、 IP 地址 D 、 IPX 地址 3、 以下为传输层协议的是( CD ) A 、IP B 、 ICMP C 、 UDP D 、 SPX 4、以下对 MAC 地址描述正确的是( BC ) A 、 由 B 、 由 C 、 前 D 、 后 5、 以下属于数据链路层功能的是( CD A 、 定义数据传输速率 B 、 定义物理地址 C 、 描述网络拓扑结构 D 、 流控制 6、 IEEE802.3U 标准是指(B ) A 、 以太网 B 、 快速以太网 C 、 令牌环网 D 、FDDI 网 7、如果要将两计算机通过双绞线直接连接,正确的线序是 A 、1--1、 2一2、3"3、4一4、5一5、6一6、7一7、8一8 B 、1--2、 2一1、3一6、4一4、5"5、6一3、7■■7、8一8 C 、1--3、 2一6、3一1、4一4、5"5、6一2、7■■7、8一8 D 、两计算机不能通过双绞线直接连接 &在V.35和V.24规程中,控制信号 RTS 表示(D ) A 、 数据终端准备好; B 、 数据准备好; C 、 数据载体检测; D 、 请求发送; 32位2进制数组成 48位2进制数组成 6位16进制由IEEE 负责分配 6位16进制由IEEE 负责分配
E、清除发送。 9、路由器作为网络互连设备,必须具备以下哪些特点。 A、至少支持两个网络接口 B、协议至少要实现到网络层 C、至少支持两种以上的子网协议 D、至少具备一个备份口 E、具有存储、转发和寻径功能 F、一组路由协议 G、必须有较高的协议处理能力 10、路由器的作用有(ABDG) A、异种网络互连 B、子网间的速率适配 C、连接局域网内两台以上的计算机 D、隔离网络,防止网络风暴,指定访问规则(防火墙) E、子网协议转换 F、加快网络报文的传递速度 G、路由(寻径):路由表建立、刷新、查找 H、报文的分片与重组 11、调用上一条历史命令的快捷键是(A ) A、CTRL-P B、CTRL-O C、ALT-P D、ALT-0 12、交换机工作在OSI七层的哪一层?(B) A、一层 B、二层 C、三层 D、三层以上 13、以下对CSMA/CD 描述正确的是( A D??) A、在数据发送前对网络是否空闲进行检测 B、在数据发送时对网络是否空闲进行检测 C、在数据发送时对发送数据进行冲突检测 D、发生碰撞后MAC地址小的主机拥有发送优先权 14、以下对STORE AND FORW ARD描述正确的是(CE) A、收到数据后不进行任何处理,立即发送 B、收到数据帧头后检测到目标MAC地址,立即发送 C、收到整个数据后进行CRC校验,确认数据正确性后再发送 D、发送延时较小 E、发送延时较大 15、以下对交换机工作方式描述正确的是( A、可以使用半双工方式工作 B、可以使用全双工方式工作 C、使用全双工方式工作时要进行回路和冲突检测 D、使用半双工方式工作时要进行回路和冲突检测(ABE ) ABD )
华为LTE认证考试试题
华为LTE认证考试试题 一.填空题(每题一分)共15分 1.LTE上行物理信道包含PUSCH,PUCCH,PRACH.(物理上行共享信道 PUSCH - 物理 上行控制信道 PUCCH - 物理随机接入信道 PRACH) 2.BCH的传输时间间隔是40ms. 3.ICIC技术是用来解决系统内同频干扰问题. 4.空口协议伐中,数据的压缩功能位于PDCP层. 5.一个RB时域包含1个slot,频域包含12连续子载波. 6.LTE TDD的帧结构每帧长10ms,包含22个时隙(slot)和10个子帧(subframe). 7.LTE最小的资源单位是RE,最小的资源分配单位是RB. 8.LTE协议规定物理小区标识(PCI)共有504个. 9.LTE ENODEB与EPC之间的接口是S1,ENODEB之间的接口是X2. 二.判断题(每题一分)共15分 1.下行参考信号包括三种类型,包括:Cell-specific,MBSFX-specific,UE-specific。( 对 ) 2.NAS层协议是属于用户面协议。(错)NAS层协议是属于控制面协议 3.基于非竞争的随机接入过程,其接入前导的分配是由网络侧分配的。(对) 4.SFBC是一种发射分集技术,主要获得发射分集增益,用于SINR较低的区域,比如 小区边缘,与STBC相比,SFBC是(对) 5.MIMO的信道容量与空间信道的相关性有关,信道相关性越低,MIMO信道容量越大。(对) 6.MIMO模式分为分集和复用,其中分集主要是提升小区覆盖,而复用主要是提升小区容量。(对) 7.LTE系统中,UE在多个属于同一个TA list下的多个TA间移动,不会触发TA的更新。(对)
华为上机题汇总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<