Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / 2012年华为校园招聘机试(南京)

1:给定一个整数(有可能是负数),将整数变成字符串。函数已经声明好类似void change(int number, char s[])的形式。可以自己写用例测试解:基础题目解法一void change(int number, char s[])
{
 itoa(number,s,10);
}解法二void change(int number, char s[])
{
 //以十进制转换
    int tmp=number,index=0,count=0;//用来计算number的位数
 while(tmp!=0)
   tmp=tmp/10,++count;//注意此处用了逗号表达式
 number>0?true:(s[0]="-",++index);
 s[count+index]="";
 for(;count;s[index+(--count)]=abs(number)%10+48,number/=10);//要加48:)
}2:给定一个已经定义好的单链表,将单链表中的数字逆序。输入为head指针,返回的也是一个head指针。函数声明为void sor(Node **head)的形式。
 
解,链接的逆转算法void sor(Node **head)
 {
   Node *p=*head,*q,*s;
   if(!p||!p->next)//head=NULL,或者只有一个元素返回
       return ;
   q=NULL;
   s=p->next;
   while(s)
   {
       p->next=q;
       q=p;
       p=s;
       s=s->next;
   }
  p->next=q;
   *head=p;
 }3:有一个数组a[N]如a[10]={0,1,2,3,4,5,6,7,8,9}每隔两个数删除一个数,如0,1,2(删除),3,4,5(删除),6,7,8(删除),9,到数组尾部回到数组头部继续删除,要求编写一个函数实现实现上述操作,返回最后一个数的数组下标。函数接口:int getLast(int iLen),参数:数组初始元素个数iLen解:基本算法int getLast(int iLen)
 {
   int *data=new int[iLen];
   for(int i=0;i<iLen;i++)
       cin>>data[i];
   int cnt=iLen,index=0,flag=1,last;
   while(cnt>1)
   {
       ++index;
       if(data[index%iLen]!=-1)
       {
    ++flag;
 }
       if(flag==3)
       {
           data[index%iLen]=-1;
           flag=0;
           --cnt;//将数组无数减1
       }
   }
    for(int j=0;j<iLen;j++)//这种方法效率不高,要再一次循环,求坐标
       if(data[j]!=-1)
            last=j;
   return last;
 }