欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

广联达2018校招笔试题

程序员文章站 2022-04-02 18:27:57
...

广联达现场笔试,有一种难受叫做,没时间了,也没纸了,但是却发现了程序的错误。。。

第一题:输入一个N,输出1-2+3-4+5-6+7......N的值。

int fun(int num)
{
	if(num <= 0)
		return 0;
	int sum = 0;
	for(int i = 1; i <= num; ++i)
	{
		if(i & 1)
			sum += i;
		else
			sum -= i;
	}
	return sum;
}
void main()
{
	int n;
	cin>>n;
	cout<<fun(n)<<endl;
}
第二题:数组相邻数字差绝对值为1,查找第一个出现指定数字的位置,例如 1,2,3,4,5,6,7,6,5,6,7,8,9      查找7,返回7

int Fun(int *ar,int len,int num)
{
	for(int i = 0; i < len;)
	{
		//int tmp = ar[i] > num ? ar[i] - num : num - ar[i];
		int tmp = abs(ar[i]-num);
		if(tmp == 0)
			return i+1;
		i += tmp;
	}
}
void main()
{
	int ar[] = {2,3,4,3,2,1,2,3,4,5,6,7,8,9,10,9,8,7,8,7,6,5,6,7,8};
	int num;
	cin>>num;
	int len = sizeof(ar)/sizeof(ar[0]);
	cout<<Fun(ar,len,num)<<endl;
}
第三题:给定一个非负数组,该数组位置的值代表最大能跳的个数,求其是否能够调到最后一个位置。

bool fun(int *ar,int start,int end)
{
	if(start == end)
		return true;
	for(int i = 1; i <= ar[start]; ++i)
	{
		return fun(ar,start+i,end);
	}
	if(start > end)
		return false;
}
bool fun(int *ar,int len)
{
	if(ar == NULL || len <= 0)
		return false;
	return fun(ar,0,len-1);
}
void main()
{
	int ar[] = {3,2,1,0,4};
	int len = sizeof(ar)/sizeof(ar[0]);
	if(fun(ar,len))
		cout<<"Yes"<<endl;
	else
		cout<<"No"<<endl;
}
四、输入一个字符串,打印字符串的子集。

void Perm(string &st,int i)
{
	int k = 0;
	while(i)
	{
		if(i & 1)
			cout<<st[k]<<" ";
		i >>= 1;
		k++;
	}
	cout<<endl;
}
void Perm(string &st)
{
	int size = st.size();
	if(size <= 0)
		return ;
	for(int i = 0; i < (1 << size); ++i)
	{
		Perm(st,i);
	}
}
void main()
{
	string st;
	cin>>st;
	Perm(st);
}
五、有一个盒子中有不定量的白球和黑球,每次取出两个小球,如果颜色相同,则放回一个黑球,否则,放回一个白球。请验证,可以取完小球,并且说明最后剩下的小球颜色,和开始时候的黑白球的数量关系。

这个我也是半斤八两,就不在各位面前班门弄斧了。

----------------------------------------------------------------------------


除了开头说的那种难受之外,还有一种难受,叫做,回来写博客,一个一个发现自己程序的错误。。。



相关标签: 广联达