删除字符的双下标写法

删掉 *:i 扫过每一格,留下的依次写到 s[j],最后补 '\0' i j h * i * * ! h i ! \0 二级操作题里字符串处理出得最多,删除、筛选几乎都用这一个套路:i 从头读到尾,j 只在「留下」时往前写。

开始练习 →

回文串判断

正着读和倒着读一样的单词叫回文(level、noon)。输入一个单词,是回文输出 是回文,否则输出 不是回文。 现在不管输入什么都说不是回文。运行看画布上 s[j] 一开始的编码,改一个地方。 代码里以 @youci 开头的 printf

开始练习 →

母题:删除指定字符

二级原题风格:第一行输入一个字符串(可以有空格),第二行输入一个字符 c,删除字符串中所有的 c 后输出。例如输入: 2025-10-13 - 输出: 20251013 读入和输出已经写好,在注释的位置写删除的代码。

开始练习 →

变式 1:只留下数字

从一行文字里提取电话号码:输入一行,只保留其中的数字字符,输出。例如输入 Tel: 138-0013-8000,输出: 13800138000 在注释的位置写代码。

开始练习 →

变式 2:删除奇数下标的字符

二级原题:输入一个字符串(不含空格),删除所有下标为奇数的字符,输出剩下的。例如输入 ABCDEFG(下标 0~6),输出: ACEG 现在的程序输出不对。

开始练习 →

变式 3:字符串原地逆序

输入一个单词,把它逆序存放在原数组里再输出。例如输入 drawer,输出: reward 程序交换了首尾,可输出和输入一样。

开始练习 →

变式 4:数字字符转成整数

食堂取餐号是「字母 + 数字」,比如 A0315。输入当前的取餐号(不含空格),取出其中的数字组成整数,输出下一位的号码(加 1)。例如输入 A0315,输出: 316 现在输出的数大得离谱。

开始练习 →

二级 · 程序填空:统计四类字符

下面程序统计字符串中英文字母、数字、空格和其他字符的个数,输出 12 4 3 2。请在【】处填入正确的内容。 #include <stdio.h> int main(void) { char s[] = "R

开始练习 →

二级 · 程序改错:统计子串出现次数

下面程序的功能是:输入一个字符串(不含空格),统计其中 ok 出现的次数。例如输入 okayok,输出 2。 程序中有两处错误。请改正 found 下面一行中的错误,不要改动其他地方,也不要增删行。

开始练习 →

二级 · 选择:scanf 与 gets 读一行

#include <stdio.h> int main(void) { char s[20] = ""; scanf("%s", s); printf("

开始练习 →