C语言面试真题1

1.char *string1 = "12345"和char[5] string2="12345"的区别。

答:char *string1 定义了指针,指针指向字符串的地址。char[5] string2定义了一个数组,存储字符串。

2.用C语言中的指针编写字符串翻转函数。

//解法一
#include <stdio.h>
#include <string.h>
int main()
{
    char a[20] = {0}, b[20] = {0}, *p1, *p2;
    printf("随意输入一个字符串:");
    //memset(b, 0X00, sizeof(b));
    gets(a);
    p1 = a;
    p2 = b + strlen(a) - 1;
    for( ; *p1 != '\0'; p1++, p2--)
        *p2 = *p1;
    *p2='\0';
    printf("string a is: %s\n", a);
    printf("string b is: %s\n", b);
    return 0;
}


//解法二
#include <stdio.h>
#include <string.h>
#define MAXN 1000
void reverse(char* str)
{
    char* p = str + strlen(str)-1;
    char temp;
    while(str<p)
    {
        temp=*p;
        *p--=*str;
        *str++=temp;
    }
}
int main()
{
    char str[MAXN];
    printf("请输入一个字符串:\n");
    gets(str);
    reverse(str);
    printf("翻转后的字符串是:\n%s\n", str);
    return 0;
}

3.当关键字static修饰一个变量的时候,它的意义是什么?如static var = 0;当关键字static修饰一个函数时,它的意义是什么?如static add(int a, int b);

答:①static修饰全局变量只初始化一次,防止在其他单元中被引用,修饰局部变量时只被初始化一次,下一次依据上一次结果值。②static函数在内存中只有一份,普通函数在每个调用中维持一份拷贝。

4.有个单向链表,如何找到其中的中间项。

答:快慢指针法,用search跟mid两个指针同时指向头节点,然后每次search指针移动2个单位,mid指针移动1个单位,当search指针到达表尾时,mid指针所指向的正是中间项了。因为由于search指针每次走2步,所以它所在的位置正是mid*2的位置,当search走了L步后,mid也就走了L/2步,正好是中间项,如此一来,只需要耗费O(L/2)的时间了。

int FindMid(Node **head)
{
    Node *search,*mid;
    search = mid = *head;
    while(mid->next != NULL && search->next->next != NULL)
    {
        search = search->next->next;
        mid = mid->next;
    }
    return mid->key;
}

5.编程题:用一个递归函数实现n的阶乘。

 

#include<stdio.h>
int func(int n)/*递归函数*/
{
    int fac;
    if (n < 0)
        printf("n<0,data error!");
    else
        if (n == 0 || n == 1)
            fac = 1;
        else
            fac = func(n - 1) * n;
    return fac;
}
int main()
{
    int n, y;
    printf("请输入一个整数:\n");
    scanf_s("%d", &n);
    y = func(n);
    printf("%d!=%d", n, y);
    return 0;
}

7.列举无线通信技术,描述他们的优缺点。

 

Zig-Bee:Zig-Bee是基于IEEE802.15.4标准而建立的一种短距离、低功耗的无线通信技术。

蓝牙(Bluetooth):能够在10米的半径范围内实现点对点或一点对多点的无线数据和声音传输,其数据传输带宽可达1Mbps通讯介质为频率在2.402GHz到2.480GHz之间的电磁波。

无线宽带(Wi-Fi):它是一种基于802.11协议的无线局域网接入技术。(Wi-Fi)技术突出的优势在于它有较广的局域网覆盖范围,其覆盖半径可达100米左右,相比于蓝牙技术,(Wi-Fi)覆盖范围较广;传输速度非常快,其传输速度可以达到11mbps(802.11b)或者54mbps(802.11.a),适合高速数据传输的业务;无须布线,可以不受布线条件的限制,非常适合移动办公用户的需要。

 

posted @ 2020-06-02 16:44  CYYZ凯撒  阅读(545)  评论(0)    收藏  举报