华为机试题目好好练习DOCWord文件下载.docx

上传人:b****4 文档编号:17832012 上传时间:2022-12-11 格式:DOCX 页数:48 大小:177.59KB
下载 相关 举报
华为机试题目好好练习DOCWord文件下载.docx_第1页
第1页 / 共48页
华为机试题目好好练习DOCWord文件下载.docx_第2页
第2页 / 共48页
华为机试题目好好练习DOCWord文件下载.docx_第3页
第3页 / 共48页
华为机试题目好好练习DOCWord文件下载.docx_第4页
第4页 / 共48页
华为机试题目好好练习DOCWord文件下载.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

华为机试题目好好练习DOCWord文件下载.docx

《华为机试题目好好练习DOCWord文件下载.docx》由会员分享,可在线阅读,更多相关《华为机试题目好好练习DOCWord文件下载.docx(48页珍藏版)》请在冰豆网上搜索。

华为机试题目好好练习DOCWord文件下载.docx

"

;

cout<

endl;

}

}

return0;

}

2.题目描述:

有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,

如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。

测试数据有多组,每组输入第一行有一个整数N(N<

=1000),接下来的N行包括N个学生的数据。

每个学生的数据包括姓名(长度不超过100的字符串)、年龄(整形数)、成绩(小于等于100的正数)。

将学生信息按成绩进行排序,成绩相同的则按姓名的字母序进行排序。

然后输出学生信息,按照如下格式:

姓名年龄成绩

3

abc2099

bcd1997

bed2097

提示:

学生姓名的字母序区分字母的大小写,如A要比a的字母序靠前(因为A的ASC码比a的ASC码要小)。

string>

structStudent

stringname;

intage;

intscore;

};

boolcmp(Studentx,Studenty)

if(x.score!

=y.score)

returnx.score>

y.score;

else

returnx.name<

y.name;

intN,i;

Studentdata[1000];

N)

if(N>

0&

N<

=1000)

N;

{cin>

data[i].name;

data[i].age;

data[i].score;

}

sort(data,data+N,cmp);

for(i=0;

{cout<

data[i].name<

data[i].age<

data[i].score<

3.题目描述:

输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序。

输入第一行包括1个整数N,1<

=N<

=1000,代表输入数据的个数。

接下来的一行有N个整数。

可能有多组测试数据,对于每组数据,

第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。

第二行将排序的结果输出。

1342

123

如果数组中只有一个数,当第一行将其输出后,第二行请输出"

-1"

注意:

最后一个数字输出不能加空格!

intN,i,data[1000];

if(N>

for(i=0;

cin>

sort(data,data+N);

cout<

data[N-1]<

if(N==1)

else

N-2;

4.题目描述:

输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。

测试数据有多组,输入字符串。

对于每组输入,输出处理后的结果。

bacd

abcd

stringstr;

str)

sort(str.begin(),str.end());

cout<

str<

5./*输入字符串,输出字符串中的数字,数字用一行表示*/

boolflag=0;

intlen=str.size();

//注意表示string字符串的长度用str.size()

for(inti=0;

len;

if(str[i]>

='

0'

str[i]<

9'

)//一定注意这里是字符,加单引号

{

if(flag==0&

str[i]=='

)//要考虑第一个数字是否为0,如果是的话则跳过

continue;

flag=1;

cout<

str[i];

}

6./*输入字符串,删除字符串中的数字,将大写改小写,输出*/

intlen;

len=str.size();

if(str[i]>

continue;

A'

Z'

str[i]=str[i]-'

+'

a'

//注意大小写转换的方法

7./*输入一个字符串,输出起出现次数最多的数字,若有2个数字出现次数相同,则输出较小的一个*/

intdata[10]={0};

inti,num,max=0;

str.size();

i++)//将数字出现的频率存入对应的数组

{

num=str[i]-'

data[num]++;

10;

i++)//找出最大的一个频率

if(data[i]>

max)

max=data[i];

i++)//输出频率最高的数字

if(max==data[i])

{

break;

8./*统计字符串中出现频率最高的字符,并将其输出;

若有2个字符出现频率相同,则输出字典序小的一个*/

intfreq[256]={0};

num=(int)str[i];

freq[num]++;

255;

if(freq[i]>

max=freq[i];

if(freq[i]==max)

(char)(i)<

9./*输入一个数字,输出其各个位上的和,正整数,int范围内*/

inti,sum=0,num;

num=str[i]-'

sum+=num;

sum<

/*输入一个数字,输出其各个位上的和,正整数,int范围内*/

intans,sum=0;

ans)

while(ans!

=0)

{

sum+=ans%10;

ans/=10;

10./*输入一个数字,逆序输出其各个位,换行后输出各个位上的积,正整数,int范围内*/

inti,sum=1,num;

for(i=str.size()-1;

i>

=0;

i--)

str[i]-'

sum*=(str[i]-'

);

11./*输入一个字符串,统计其出现频率最高的字符,并输出。

若存在两个字符出现频率相同,则输出字典序较小的那一个*/

intfre[256]={0};

str;

num=(int)str[i];

fre[num]++;

256;

if(fre[i]>

max=fre[i];

if(fre[i]==max)

char(i)<

break;

12./*输入10个数字,按各个位上的和从小到大排序,如果相同,则按数字从小到大排序。

输入描述

10个正整数,保证都在int范围内,用空格隔开

输出描述

10个数字,其从大到小的值,用空格隔开,最后一个数字后不加空格

输入样例

113245987106

输出样例

102113456789

*/

intcal(intn)

intsum=0,m;

while(n!

m=n%10;

sum+=m;

n/=10;

returnsum;

intcmp(intx,inty)//注意cmp函数的书写?

有问题!

2和11的输出顺序

if(cal(x)!

=cal(y))

returncal(x)<

cal(y);

returnx<

y;

inta[10],i;

cin>

a[i];

sort(a,a+10,cmp);

if(i!

=9)

//注意此处的书写,最后一个数字不加空格,则判断i==9时不输出空格。

写为当i!

=9时都输出空格。

13./*题目描述

你有一个容量为100的箩筐,给你30个物品,每个物品的体积已知问:

最多能装多少个物品进箩筐

输入描述

一行30个正整数,用空格隔开,表示每个物品的体积

输出描述

一个数字,为最多能装下的物品数

输入样例(此处用3个物品作为样例,实际读入为30个)

559100

输出样例

2

*/

#defineNUM3

inta[NUM],i,sum=0;

NUM;

sort(a,a+NUM);

if(sum+a[i]>

100)

sum+=a[i];

14.//输入一个字符串,用指针求出字符串的长度

chara[20],*p;

intcount=0;

gets(a);

p=a;

while(*p++)

count++;

count<

15./*打印输出乘法口诀法

比如输入n

n=5;

打印输出

1

2,4

3,6,9

4,8,12,16

5,10,15,20,25*/

intn;

for(inti=1;

=n;

for(intj=1;

j<

=i;

j++)

i*j;

if(j<

i)

"

if(j==i)

16.

17./*

通过键盘输入一串小写字母(a~z)组成的字符串。

请编写一个字符串过滤程序,

若字符串中出现多个相同的字符,将非首次出现的字符过滤掉,然后按字母表顺序输出。

 

比如字符串

“abfcacde”输出结果为“abcdef”。

inti,len;

len=str.size();

sort(str.begin(),str.end());

str[0];

for(i=1;

len-1;

if(str[i]==str[i+1])

continue;

else

str[i+1];

18./*天数问题

MM-YYYY,MM为月份,YYYY为年份,例如:

08-2014

指定年份和月份的天数。

例如,08-2014,对应输出为31。

intdays=0,month,year;

month=(str[0]-'

)*10+(str[1]-'

year=(str[3]-'

)*1000+(str[4]-'

)*100+(str[5]-'

)*10+(str[6]-'

)*1;

switch(month)

case1:

case3:

case5:

case7:

case8:

case10:

case12:

days=31;

break;

case4:

case6:

case9:

case11:

days=30;

case2:

if((year%4==0&

year%100!

=0)||year%400==0)

days=29;

else

days=28;

days<

return0;

19./*第一题(60分):

按要求分解字符串,输入两个数M,N;

M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。

例如:

输入2,8,“abc”,“123456789”

则输出为“abc00000”,“12345678“,”90000000”*/

#include<

cstdio>

voidsolve(char*str,intn,intlen)

{

inti,j,k,quotient,remainder;

quotient=len/n;

//原字符串被分解的个数,n代表输出的每串字符串的位数

remainder=len-n*quotient;

//剩余的字符串的个数

for(i=0;

i<

len;

i+=n)

{

if(len-i<

n)

k=n-len+i;

for(j=i;

j<

++j)

printf("

%c"

str[j]);

for(j=0;

k;

putchar('

}

i+n;

'

\n"

}

intmain(void)

inti,m,n,len;

charstr[1000];

while(scanf("

%d%d"

&

m,&

n)!

=EOF)

m;

++i)

scanf("

%s"

str);

len=strlen(str);

solve(str,n,len);

20./*拼音转数字

输入是一个只包含拼音的字符串,请输出对应的数字序列。

转换关系如下:

描述:

拼音yiersansiwuliuqibajiu

阿拉伯数字123456789

输入字符只包含小写字母,所有字符都可以正好匹配

运行时间限制:

无限制

内存限制:

无限制

一行字符串,长度小于1000

一行字符(数字)串

yiersansi

1234*/

str)!

=EOF)

len=strlen(str);

inti;

switch(str[i])

case'

y'

:

'

1'

i+=2;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1