第二次的面试题目 程序题目

1.在唱歌海选比赛中会有多位群众对选手进行打分,分数范围为1-100000的整数,打分观众人数范围为1-100。如果某个分数出现的次数超过一半,这个分数就是选手的分数。请你帮忙用C语言写一个高效的程序找出选手的得分,如果没有分数满足要求则返回0。
请用C语言作答,此题要求在线调试通过!

第二次的面试题目 程序题目_第1张图片

代码:

#include
using namespace std;
 
int com_baiyi_findscore(const int * scorelist, int _sizeofscorelist)
{
	int i,j;
	int k=_sizeofscorelist;
	int sum=0;
	int max=k/2+1;//一半加一的人数  
	for(i=0;i=max)
		{
			return scorelist[i];	
		}	
	}
	return 0; 
} 
int main()
{
	int num[8]={1,1,2,4,4,4,4,4};
	int a=com_baiyi_findscore(num,8); 
	cout<


2.用C语言实现点分IP地址到32比特整数之间的转换,例如输入字符串“10.10.10.1,输出168430081。非法ip地址比如“1234.1.test”返回0
参考信息:
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110),其16进制数(O×64040506) .

第二次的面试题目 程序题目_第2张图片

 

(别被参考信息 骗了) (这个最后的答案 是   32位 2 进制 的数   转 10进制 )

代码:

#include
using namespace std;
 
// 传过来的 字符串是   4  个  10进制的数   数字大小 : 0-255     转化为  16 
int com_baiyi(const char* ipaddr)
{
	int i=0;
	int pppp=0;//计数  .  的个数 
	int a=strlen(ipaddr);//获取ip  地址的元素个数
	while(i57 && ipaddr[i]!='.')//不是数字  或者是 .  
		{
			return 0;
		} 
	} 
	if(pppp!=3)//判断ip 地址是否合格  
	{
		return 0;
	}
	i=0;//处于数组的首字母 
	
	int a1,a2,a3,a4;
	a1=0;
	a2=0;
	a3=0;
	a4=0;
	while(ipaddr[i]!='.')
	{
		a1=a1*10 + (ipaddr[i]-'0');
		i++;
	}
	i++;//跳过点  避免死循环
	while(ipaddr[i]!='.')
	{
		a2=a2*10 + (ipaddr[i]-'0');
		i++;
	}
	i++;//跳过点  避免死循环
	while(ipaddr[i]!='.')
	{
		a3=a3*10 + (ipaddr[i]-'0');
		i++;
	}
	i++;//跳过点  避免死循环
	while(i<=(a-1))
	{
		a4=a4*10 + (ipaddr[i]-'0');
		i++;
	}
	
	//cout<=0;i--)
	{
		cout<=0)
	{
		sum=sum*2+(num[hh--]-'0');
	}
	//cout<


 

你可能感兴趣的:(面试题目的记录,c++,开发语言)