广联达2018校招笔试题

来源:互联网 发布:高分一号数据预处理 编辑:程序博客网 时间:2024/04/29 22:54

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

第一题:输入一个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;elsesum -= 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;elsecout<<"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);}
五、有一个盒子中有不定量的白球和黑球,每次取出两个小球,如果颜色相同,则放回一个黑球,否则,放回一个白球。请验证,可以取完小球,并且说明最后剩下的小球颜色,和开始时候的黑白球的数量关系。

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

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


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



原创粉丝点击