嵌入式笔试刷题(第8天)
6. i 最后等于多少?
int i = 1;
int j = i++;
if ((i > j++) && (i++ == j))
    i += j;
过程分析:
- 初始:
i = 1, j = i++⇒ j = 1, i = 2 - 判断条件:(2 > 1) ⇒ 
true, 再判断(2 == 2)⇒ true - 所以 
i += j⇒ i = 2 + 2 = 4 
最终:i = 4
7. 实现 atoi 函数
int atoi(const char *s) {
    int res = 0, sign = 1;
    while (*s == ' ') s++;
    if (*s == '-' || *s == '+') {
        if (*s == '-') sign = -1;
        s++;
    }
    while (*s >= '0' && *s <= '9') {
        res = res * 10 + (*s - '0');
        s++;
    }
    return res * sign;
}
8. 链表反转
struct Node {
    int val;
    struct Node *next;
};
struct Node* reverse(struct Node* head) {
    struct Node* prev = NULL;
    struct Node* curr = head;
    while (curr) {
        struct Node* next = curr->next;
        curr->next = prev;
        prev = curr;
        curr = next;
    }
    return prev;
}
9. 不使用库函数实现 strcat, strcmp, strcpy, strlen
int strlen(const char *s) {
    int len = 0;
    while (*s++) len++;
    return len;
}
char* strcpy(char* dst, const char* src) {
    char* ret = dst;
    while ((*dst++ = *src++));
    return ret;
}
int strcmp(const char* s1, const char* s2) {
    while (*s1 && (*s1 == *s2)) {
        s1++;
        s2++;
    }
    return *(unsigned char*)s1 - *(unsigned char*)s2;
}
char* strcat(char* dst, const char* src) {
    char* ret = dst;
    while (*dst) dst++;
    while ((*dst++ = *src++));
    return ret;
}
10. 编写 Makefile
项目结构:
.
├── main.c
├── Makefile
├── project_1
│   ├── example_1.c
│   └── example_2.c
├── project_2
    ├── example_3.c
    └── example_4.c
CC = gcc
CFLAGS = -I. -Wall
SRCS = main.c \
       project_1/example_1.c \
       project_1/example_2.c \
       project_2/example_3.c \
       project_2/example_4.c
OBJS = $(SRCS:.c=.o)
TARGET = main
$(TARGET): $(OBJS)
	$(CC) -o $@ $^
%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@
clean:
	rm -f $(OBJS) $(TARGET)
更多内容全在下方专栏
全网最受欢迎的嵌入式笔试专栏
笔试专栏包含全部最新的笔试必考考点,非常适合在找工作面经薄弱的同学
3000+订阅还会涨价,提前订阅提前享受,持续更新中。
专栏链接:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
#嵌入式测试,嵌入式开发##嵌入式笔面经分享##面试经验谈#
海康威视公司福利 1149人发布
