作品:考试周复习柱状图

考试周每天复习了几个小时(0~8)?输入天数 n 和每天的时长,画一张柱状图:每天一行,# 是复习的小时,. 补满 8 格,最后一行写总时长。例如输入: 3 5 8 2 输出: D1 #####... 5h D2 ######## 8h D

开始练习 →

二级高频:*p++ 和 (*p)++ 分清楚

二级题里指针表达式经常挤在一起,记住三条: *p++ 等于 *(p++):先取 *p 的值,然后 p 往后挪一格; (*p)++:p 不动,p 指的那个值加 1(表达式的值是加之前的); *++p:p 先往后挪一格,再取值。 #includ

开始练习 →

两头往中间:倒置字符串

两个指针一头一尾,交换后往中间走,相遇就停:这是二级里处理字符串的头号套路。可下面的程序输出了一个空行。 先运行,看画布上 q 一开始指的字符的码是多少,再改一处。例如输入 abc,应输出: cba 代码里以 @youci 开头的 prin

开始练习 →

母题:删除字符串中所有的星号

二级原题:函数 fun 的功能是删除字符串中所有的 *。例如输入 *hi**c*,输出: hic 套路:一个指针读、一个指针写,读到的不是 * 就写下来,最后在写的位置补 '\0'。只在 fun 里写代码。

开始练习 →

变式 1:只删除前导星号

二级原题:只删除字符串开头连续的 *,中间和尾部的保留。例如输入 **a*b**,输出: a*b** 现在的 fun 是母题的答案,把中间和尾部的也删了。

开始练习 →

变式 2:只删除尾部星号

二级原题:只删除字符串尾部连续的 *。例如输入 **a*b**,输出: **a*b 提示:走一遍,用指针 last 记住「最后一个不是 * 的字符的下一位」,走完在 last 处放 '\0'。现在的 fun 还是母题的答案。

开始练习 →

变式 3:保留首尾,删除中间的星号

二级原题:开头和结尾连续的 * 保留,中间的 * 全部删除。例如输入 **a*b**c***,输出: **abc*** 全是 * 时原样不动。现在的 fun 还是母题的答案。

开始练习 →

变式 4:有序数组去掉重复的数

二级原题:数组已经从小到大排好,删除其中重复的数,只留一个,fun 返回剩下的个数。例如输入: 6 1 1 2 3 3 3 输出: 3: 1 2 3 和删星号一个套路:w 指着最后写下的数,读到和它不一样的才写。只在 fun 里写代码。

开始练习 →

二级 · 程序填空:统计大写和小写字母

fun 统计字符串中大写字母和小写字母的个数,通过 up、low 带回。程序输出 upper=3 lower=8。请在【】处填入正确的内容。 #include <stdio.h> void fun(char *s, int *

开始练习 →

二级 · 程序改错:取出学号里的数字

函数 fun 把字符串 s 中的数字字符按顺序取出来放进 t。例如输入 2024cs-0315,输出: 20240315 程序中有两处错误。请改正 found 下面一行中的错误,不要改动其他地方,也不要增删行。

开始练习 →