二级 · 选择:a++ 为什么不行

设有定义 int a[5] = {10, 20, 30, 40, 50}, *p = a;,则: 不能通过编译的是【0】;与 a[3] 等价的是【1】;执行 p += 2; 后 *p 的值是【2】。

开始练习 →

二级 · 程序设计:值日表轮换一位

宿舍值日表存在数组里,每周轮换一次:最后一个人挪到最前面,其他人依次往后挪一位。请编写函数 fun,用指针完成这次轮换。例如输入: 4 10 20 30 40 输出: 40 10 20 30 注意:不要改动 main 函数,只在 fun 的

开始练习 →

作品:食堂今天吃什么转盘

选择困难症福音:6 道菜排成一圈,指针 p 从第一道出发,往后转 k 格(走过最后一道就回到第一道)。输入 k,输出转到的菜和价格。例如输入 8,输出: 今天吃牛肉面,14元 p - price 就是 p 指向的下标,正好拿来取菜名。程序里

开始练习 →

字符指针走字符串

字符串在内存里是一个字符挨一个字符排着,最后跟一个 '\0' 表示结束。所以字符指针可以像上一关那样「走」字符串: char *p = s;:p 指向 s 的第一个字符,*p 是一个字符; printf("%s&q

开始练习 →

从邮箱里取出域名

输入一个邮箱,输出 @ 后面的域名。程序让 p 从头走到 @ 停下,然后从 p 开始输出。例如输入 wang@163.com,应该输出: 163.com 运行一次,看画布上 p 停在哪一格。只改一处,去掉多出来的那个 @。 代码里以 @yo

开始练习 →

母题:用指针复制字符串

输入一个口令(不含空格),用两个字符指针把它复制到 t 里:from 指着读,to 指着写,每复制一个两人都往后走一格,最后在 t 的末尾补上 '\0'。例如输入 abc123,输出: 备份:abc123 现在备份出来是空的

开始练习 →

变式 1:手机号去掉短横线

输入一个带短横线的号码(如 400-820-8820),复制时跳过所有 '-',输出: 4008208820 t 一开始全是 '\0'。程序有一句放错了位置。

开始练习 →

变式 2:把单词倒着念

输入一个单词,把它倒过来输出。例如输入 live,输出: evil 程序先让 q 走到末尾的 '\0' 上,再一边往前退、一边复制到 t。可输出是空的——第一个被复制的是什么?

开始练习 →

变式 3:宿舍楼号接上房间号

输入楼号和房间号两个字符串,把房间号接在楼号后面(不用 strcat,用指针做),输出接好的 s1。例如输入 Dorm 5B,输出: Dorm5B

开始练习 →

变式 4:学号是不是回文

输入一个字符串,判断它是不是回文(正着读和倒着读一样),是输出 YES,否则输出 NO。例如 12321 输出: YES l 从头、r 从尾往中间走,字符一样就继续。现在连 level 都判成 NO,看画布上 r 从哪出发。 代码里以 @y

开始练习 →