嵌入式笔试刷题(第7天)

C/C++ 综合笔试题 Part 1

1. 请写出下列代码中各变量的大小及存储位置

#define SIZE 1024
typedef struct _Node {
    struct _Node *prev;
    struct _Node *next;
    unsigned char buf[SIZE]; 
    char a;
    int ib;
    short header;
    double *p;
    unsigned char (*buf_ptr)[SIZE];
    int (*fun[3])(char (*argA)(int, int), int);
} Node;

static double m = 2.1;
int data = 0;

int main(void) {
    int *p = NULL;
    p = malloc(sizeof(int));
    char *buf = "helloworld";
    static double m = 10.0;
    Node *node = (Node*)malloc(sizeof(Node));
    char buf_stack[10];
    int i = 0;
    extern int data;
    free(p);
    free(node);
}


存储分析:

m

(静态变量)

.data段

8字节

data

.data段

4字节

p

4字节

buf

(字符串常量)

只读段

指针 4字节,内容10字节

node

栈 + 堆

指针 4字节,结构体约1056字节

buf_stack

10字节

i

4字节

2. int i=(j=4,k=8,l=16,m=32); printf("%d", i); 输出是多少?

答案:

int i = (j = 4, k = 8, l = 16, m = 32); // 逗号表达式


逗号表达式返回最后一个表达式的值,即 m=32,因此 i=32,输出为:

32


3. 用递归方式写一个整数倒序输出函数

void print_reverse(int n) {
    if (n == 0)
        return;
    printf("%d", n % 10);
    print_reverse(n / 10);
}


示例调用:

print_reverse(1234); // 输出:4321


4. 求两个字符串的最长公共子串

char* longest_common_substring(const char* s1, const char* s2) {
    int len1 = strlen(s1);
    int len2 = strlen(s2);
    int maxlen = 0, end = 0;
    int dp[len1+1][len2+1];
    memset(dp, 0, sizeof(dp));

    for (int i = 1; i <= len1; i++) {
        for (int j = 1; j <= len2; j++) {
            if (s1[i-1] == s2[j-1]) {
                dp[i][j] = dp[i-1][j-1]+1;
                if (dp[i][j] > maxlen) {
                    maxlen = dp[i][j];
                    end = i;
                }
            }
        }
    }

    char *res = (char*)malloc(maxlen + 1);
    strncpy(res, s1 + end - maxlen, maxlen);
    res[maxlen] = '\0';
    return res;
}


5. 下列试题的结果是什么?为什么?

#define SQR(X) (X*X)
int a = 10;
int k = 2;
int m = 1;
a /= SQR(k+m) / SQR(k+m);


分析:

宏 SQR(k+m) 展开为 (k+m*k+m) = 2 + 1*2 + 1 = 5,并非数学意义的平方,表达式变成:

a /= 5 / 5; // 即 a = a / 1


所以 a 结果仍是 10

更多内容全在下方专栏

全网最受欢迎的嵌入式笔试专栏

笔试专栏包含全部最新的笔试必考考点,非常适合在找工作面经薄弱的同学

3000+订阅还会涨价,提前订阅提前享受,持续更新中。

专栏链接:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk

#面试经验谈##嵌入式测试,嵌入式开发##嵌入式笔面经分享##满分简历要如何准备?#
全部评论

相关推荐

05-24 08:08
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务