嵌入式笔试刷题(第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
#满分简历要如何准备?##嵌入式测试,嵌入式开发##嵌入式笔面经分享##面试经验谈#