嵌入式笔试刷题(第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
#嵌入式测试,嵌入式开发##嵌入式笔面经分享##面试经验谈#