设为首页 收藏本站
查看: 1167|回复: 0

[经验分享] 华为上机题总结(1)

[复制链接]

尚未签到

发表于 2016-6-6 09:04:31 | 显示全部楼层 |阅读模式
  1.选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type == 1,表示专家评委,judge_type == 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 = 专家评委平均分 * 0.6 + 大众评委 * 0.4,总分取整。如果没有大众评委,则 总分 = 专家评委平均分,总分取整。函数最终返回选手得分。

函数接口 int cal_score(int score[], int judge_type[], int n)
  代码如下:

// scoreTest1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int cal_score(int score[], int judge_type[], int n)
{
if (score==NULL || judge_type==NULL || n==0)
{
return 0;
}
int sum=0,sum1=0,sum2=0;
int count1=0,count2=0;
for(int i=0;i<n;i++)
{
if (judge_type==1)//表示专家
{
sum1+=score;
count1++;
}
if (judge_type==2)//说明是大众评委
{
sum2+=score;
count2++;
}
}
if (count2==0)//如果没有大众评委,那么 总分 = 专家评委平均分
{
sum=sum1/count1;
}
else
{
sum=int(0.6*sum1/count1+0.4*sum2/count2);
}
return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
int score[3]={12,13,15};
int judge_type[3]={1,1,2};
int n=sizeof(judge_type)/sizeof(int);
cout<<cal_score(score,judge_type,n)<<endl;
system("pause");
return 0;
}

DSC0000.jpg
  
  2.数组比较

问题描述:

比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等
  元素的个数

比如:

数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0

数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3

要求实现函数:

int array_compare(int len1, int array1[], int len2, int array2[])

【输入】 int len1:输入被比较数组1的元素个数;

int array1[]:输入被比较数组1;

int len2:输入被比较数组2的元素个数;

int array2[]:输入被比较数组2;

【输出】 无

【返回】 不相等元素的个数,类型为int

示例

1) 输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5},int len2 = 5

函数返回:0

2) 输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5,7},int len2 = 6

函数返回:3

  代码如下:
  
  

// Array_Compary1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <assert.h>
using namespace std;
int array_compare(int len1, int array1[], int len2, int array2[])   
{
assert(array1!=NULL && array2!=NULL);
int count=0;
while(len1!=0&&len2!=0)
{
if (array1[len1-1]!=array2[len2-1])
count++;
len1--;
len2--;
}
return count;
}
int _tmain(int argc, _TCHAR* argv[])
{
int array1[] = {1,3,5};
int len1 = 3;
int array2[] = {77,21,1,3,5};
int len2 =5;
cout<<array_compare(len1,array1,len2,array2)<<endl;
system("pause");
return 0;
}

  

结果为:0
  
  3. 一副牌中发五张扑克牌给你:让你判断数字的组成:

有以下几种情况:

1:四条:即四张一样数值的牌(牌均不论花色)2:三条带 一对

3:三条带两张不相同数值的牌

4:两对

5:顺子 包括 10,J,Q,K,A

6:什么都不是

7:只有一对
  代码如下:

// PuKe.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <assert.h>
using namespace std;

void sort(int data[],int n)
{
int temp=0;
for(int i=0;i<n;i++ )
{
for (int j=i+1;j<n;j++)
{
if (data<data[j])
{
temp=data;
data=data[j];
data[j]=temp;
}
}
}
}
void test(int a[],int len)
{
int *b=new int[len];
int count=0;
bool temp=false;
for (int i=0;i<len;i++)
{
b=a;
}
sort(b,5);
for (int i=0;i<len-1;i++)
{
if (b==b[i+1])
count++;
}
switch (count)
{
case 0:
if (b[0]-b[4]==4||(b[0]-b[3]==3&&b[4]==1))
{
printf("顺子");
}
else
printf("什么都不是");
break;
case 1:
printf("只有一对");
break;
case 2:
for (int i=0;i<3;i++)
{
if (b==b[i+2])
{
printf("三条带两张不相同数值的牌");
temp=true;
break;
}
}
if (!temp)
{
printf("两对");
}
break;
case 3:
if (b[1]==b[3])
printf("四条:即四张一样数值的牌");
else
printf("三条带 一对");
break;
}
}
int main()  
{
int a[5]={11,10,3,10,11};
test(a,5);
system("pause");
return 0;
}

  

  这里程序还可以这么写:
  

// PuKe_2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <assert.h>
using namespace std;
void sort(int a[],int n)
{
int temp;
for(int i=0;i<n-1;i++)
{
for (int j=i+1;j<n;j++)
{
if (a<a[j])
{
temp=a;
a=a[j];
a[j]=temp;
}
}
}
}
void PuKe1(int a[],int len)
{
assert(a!=NULL);
int count=0;
int* b =new int[len];
for (int i=0;i<len;i++)
{
b=a;
}
sort(b,5);
for (int i=0;i<len-1;i++)
{
if (b[i+1]==b)
{
count++;
}
}
switch (count)
{
case 0:
if (b[4]-b[0]==4)
{
cout<<"顺子"<<endl;
}
else
{
cout<<"什么都不是"<<endl;
}
break;
case 1:
cout<<"只有一对"<<endl;
break;
case 2:
for (int i=0;i<len;i++)
{
if (b==b[i+2])
{
cout<<"三条带两张不同的牌"<<endl;
break;
}
}
cout<<"两对"<<endl;
break;
case 3:
for (int i=0;i<len;i++)
{
if (b==b[i+3])
{
cout<<"四条"<<endl;
break;
}
}
cout<<"三条带一对"<<endl;
break;
//case 4: 由于在扑克牌中相等的点数最多只有4个
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[]={3,10,11,10,11};
int len=5;
sort(a,len);
/*for (int i=0;i<len;i++)
{
cout<<a<<" ";
}*/
PuKe1(a,len);
cout<<endl;
system("pause");
return 0;
}

  

  

  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-226851-1-1.html 上篇帖子: 华为机试题(2) 下篇帖子: 华为历年机试题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表