diff --git a/docs/programming/daily/2023.md b/docs/programming/daily/2023.md
index db328c4..7451af6 100644
--- a/docs/programming/daily/2023.md
+++ b/docs/programming/daily/2023.md
@@ -12,7 +12,67 @@ h5:before {content: unset;}
## December
-### 「7」 The differance between `strlen` and `sizeof`.
+### 「8」 J lost
+
+Given the following program:
+
+```c linenums="1" hl_lines="7 13"
+void xqc(char c[], int i);
+
+int main(void) {
+ char c[] = "I am a Man of Fortune";
+ char d[] = "and I must seek my Fortune";
+
+ xqc(c + 1, ~1694);
+ xqc(d - ~3, -65);
+ printf("%s, %s\n", c, d);
+}
+
+void xqc(char c[], int i) {
+ c = c - 1;
+ c[0] = ' ';
+ c[1] = (i & 1) + 'I';
+}
+```
+
+Which of the following is correct?
+
+A. This program fails to compile, because you cannot assign to an array in line 13.
+
+B. Because of the call-by-value, function `xqc` cannot modify the character arrays in function `main`.
+
+C. Change `1694` in line 7 to `1994`, and the result of the program is the same.
+
+D. This program outputs `I am a Man of Fortune, and J must seek my Fortune`.
+
+
+??? note "Answer"
+
+ C.
+
+ A: Inside function `xqc`, `c` is a pointer type `char *` rather than an array type, because when an array type is used in a function parameter list, it actually is the corresponding pointer type. Therefore, the assignment in line 13 is valid, and it means "to move the pointer `c` one position backward".
+
+ B: The function `xqc` can modify the character arrays in function `main`, because it takes the address of the character arrays as parameters. The function `xqc` can modify the contents of the character arrays through the pointers.
+
+ C: The `~` operator is the bitwise NOT operator. The `~1694` is equivalent to `-1695`. The `~3` is equivalent to `-4`. Therefore, the calls to function `xqc` are equivalent to:
+
+ ```c
+ xqc(c + 1, -1695);
+ xqc(d - -4, -65);
+ ```
+
+ And `i & 1` gets the last bit of `i`. Both `-1695` and `-65` are odd numbers, so `i & 1` is `1`, and the character `1 + 'I'`, which is `'J'`, is assigned. Changing `1694` to `1994` does not change the result of the program, because `~1994` is `-1995`, and `-1995` is also an odd number.
+
+ D: This program outputs Jam a Man of Fortune, and J must seek my Fortune
.
+
+ !!! tip
+
+ You don't need to calculate the exact value of `~1694`. All you need to know is that the last bit of `1694` is 0 (since it is an even number), and the bitwise NOT operator will reverse that last bit. Therefore, `~1694` is an odd number, and `i & 1` is `1`. Ditto for `~1994`.
+
+
+> 供题人:李英琦
+
+### 「7」 The difference between `strlen` and `sizeof`.
```c linenums="1"
#include