兴软件面试题2 .

http://blog.csdn.net/eddy_0825/article/details/1875566

现在的公司招聘   在这里1. 下面这段代码的输出是多少    char *p; 

    char *q[20];

    char *m[20][20];

    int (*n)[10];

    struct MyStruct

{

char dda;

double dda1;

int type ;

}

MyStruct  k;

 printf(“%d %d %d %d”,sizeof(p),sizeof(q),sizeof(m),sizeof(n),sizeof(k));

答案:(1)

char a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}} };

for(int i=0;i

printf(“%d “,__a[0][0][i]_);

在空格处填上合适的语句,顺序打印出(2)

char **p, a[16][8]; 

问:3.用递归方式   函数原型如下非递归方式:

    char *reverse(char *str)

   {

     if(str!=NULL)

     {

      int length = strlen(str);

      for(int i=0;i

        {

           char temp=str[i];

           str[i]= str[length-1];

           str[length-1] =temp;

        }

     }

    printf(“%s/n”,str);

   }

   递归方式:搞不定

   char *reverse(char *str)

   {

    if(str==NULL||strlen(str)==1)

       return str;

    int i;

    if(i==1)

      str[i] = ‘/0’;

      return str[i];

    。。。。

   }

4.strcpy函数和    memcpy函数:拷贝任何数据

5.写一个函数将一个链表逆序 答:简单

 答:    {

      int a;

      struct linknode *next;

    }linknode;

   linknode *findmiddle(linknode *head)

   {

     linknode *fast,*low,*p;

     if(head==NULL)

     {

        return NULL;

     }

     fast=low=head;

     while(!(p=fast->next)&&!p->next)

     {

        low=low->next;

        fast=p->next;

     }

     return low;

   }

7 写一个函数找出一个单向链表的倒数第  答:两个指针,第一个先于第二个   LinkNode IsLoopList(LinkNode *head,int n)

   {

      LinkNode *p1,*p2,*p3;

   P1 = head;

   While(n–>=0)

   {

     P3= p2->next;

     P2 = p3;

   }

   While(p3->next!=NULL)

   {

P3 = p3->next;

P1 = p1->next;

   }

   Return p1;   // }

 

8补充一题:

给你一个单向链表的头指针,可能最后不是
0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> (3) 
循环,就应该返回结点
当然尽量用少的空间和时间是题目的要求。

答:

 

10.判断链表是否循环;

答:{
 LinkNode *p1= head,*p2= head;
 if(head ->next==NULL)//
只包含头节点,且头节点的    return false;
 do{
   p1=p1->next;      //
步长为   p2=p2->next->next; //步长为 }while(p2 && p2->next && p1!=p2);
 if(p1==p2)
   return true;
 else
   return false;

 

11.用递归算法判断数组#include
#include
#define N 5

int Judgment(int a[]);

int main()
{
    int a[N], i, flag = 1;
    printf(“Enter array data: “);
    for (i = 0; i     {
        scanf(“%d”, &a[i]);  //
输入数组元素。
    }
     flag = Judgment(a);  //
调用递归函数
     if (flag == 1)
    {
        printf(“increment array./n”);
    }
    else if (flag == 0)
    {
        printf(“no increment array./n”);
    }
    getch();
    return 0;
}

int Judgment(int a[])
{
    static i = 0; //
注意这个是静态变量,必须用    if(i     {
        if (a[i] > a[i + 1])
        {
            return 0;         

    }
        i++;
        Judgment(a);
    }    
       return 1;
}            

非递归算法:

 #include
#include
#define N 5

int Judgment(int a[], int num);

int main()
{
    int a[N], i, flag = 1;
    printf(“Enter array data: “);
    for (i = 0; i     {
        scanf(“%d”, &a[i]);
    }
    flag = Judgment(a, N);
    
    if (flag == 1)
    {
        printf(“increment array./n”);
    }
    else if (flag == 0)
    {
        printf(“no increment array./n”);
    }
    getch();
    return 0;
}

 

int Judgment(int a[], int num)
{
    static i = 0, flag = 1;
  for(i=0; i     {
     if (a[i] >= a[i+1])      //
假如发现哪两个不是递增;
      {
        flag = 0;
        break;
      }
   }
    return flag;
}  

 

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年7月1日
下一篇 2015年7月1日

相关推荐