NSN的MGM SW engineer面试题

1. 给出标准的MIN的宏定义

 

2. int a = 100;

    char* str = (char*)malloc(sizeof(100));

 

   问:

  变量a 是放在栈中还是堆中。

 字符串str指向的分配空间是放在栈中还是堆中。

 

3.  int ucData[100];

     for(int i=0; i<100; ++i)

     {

ucData[i] = i;

     }

 

     char cOut = *(char*)( (int)ucData + 1 );

    

     cOut的值是多少?

 

4. 用C语言定义一个包含10个元素的数组;每一个元素都是一个有整数的参数并返回整数的函数

 

5. 下面的程序能否运行?如果不能,怎么改正?

 

    void GetMemory(char* p)

    {

         p = (char*)malloc(sizeof(100));

    }

 

    int main(void)

    {

        char* str = NULL;

        GetMemory(str);

        strcpy(str, "hello world!");

        printf("%s", str);

    }

 

 

6.给出下面函数的输出:

 

int function1(const char* s, const char* access)

{

char* p = NULL;

char* a = NULL;

int count = 0;

        for(p = s; *p != '/0'; ++p)

{

for(a = access; *a != '/0'; ++a)

if(*a == *p) break;

if *a == '/0' return count

else

++count

}

}

 

// 该函数的目的是找出s中连续的几个在access中的字符的长度

// 比如s为-=def, access为“=-”,返回2

 

char* function2(const char* s, const char* access)

{

while(*s != '/0')

{

char* a = access;        // 这段代码记得不是很真切

while(*a != '/0')

{

if(*a++ == *s++) return s;              

}

++s;

}

 

return NULL;

}

 

char* function3

 

// --- function1,function2, function3 几个函数就是从字符串中分出由分隔符隔离开的taken

// 具体的代码,请让我想想再写。

 

void main(void)

{

char s[] = "-abc-=def=g"

        char* str1 = NULL;

        str1 = functions3(s, "-");

printf("str1=%s/n", str1);

str1 = functions3(NULL, "-=");

printf("str1=%s/n", str1);

 

str1 = functions3(s, "=");

printf("str1=%s/n", str1);

        printf("s=%s/n", s);

 

}

 

 

7. 给链表按照递增的顺序排序。

 

   struct Node{

         int data;

         Node* next;

}

 

要求不允许用临时性的数组(还有一个要求,记不清楚了,不过不影响题目)。

 

函数的声明如下:

 

Node* increase_sort_list(Node* pheader);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值