变式 4:宿舍里谁的名字最长

输入宿舍 4 个人的英文名,用行指针 char (*p)[20] 逐个看,找出最长的名字(一样长取前面的),输出名字和他是第几个。例如输入 Amy Jack Lily Ben,输出: Jack 2 p 指向某一行时,*p 就是这一行存的字符

开始练习 →

二级 · 程序填空:行指针求全部元素之和

下面的程序用行指针求二维数组所有元素之和,输出 21。请在【】处填入正确的内容。 #include <stdio.h> int main(void) { int a[2][3] = {{1, 2, 3}, {4, 5,

开始练习 →

二级 · 选择:(*p)[4] 和 *p[4]

设有定义 int a[3][4];,则: 与 a[1][2] 等价的是【0】;a + 1 指向的是【1】;int (*p)[4]; 中的 p 是【2】。

开始练习 →

二级 · 程序设计:二维数组周边之和

请编写函数 fun:求出 m 行 4 列二维数组周边元素(第一行、最后一行、第一列、最后一列)之和,作为函数值返回。每个元素只算一次。例如输入: 2 5 5 5 5 1 2 3 4 输出: 30 注意:不要改动 main 函数,只在 fun

开始练习 →

作品:电影院连座选座

和室友约看电影,要 k 个连在一起的空座。影厅 5 排、每排 8 座,# 是已售、. 是空座。从第 1 排开始、每排从左往右,找到第一组 k 个连续空座,标成 *,输出座位图和选中的座位。没有就输出「没有连座」。例如输入: 2 ######

开始练习 →

返回指针的函数:交回最高分那一格

函数交回的是「格子的地址」,拿着它能改原来的数组 3 9 4 9 1 ▲ p 100 *p = 100 改的就是原数组里那一格 函数不光能返回一个数,还能返回一个地址。写法是在函数名前面加 *: int *find_max(int a[],

开始练习 →

函数指针:换一个函数来算

函数在内存里也有地址,函数名就代表这个地址。能存函数地址的变量叫函数指针: 定义:int (*op)(int, int);——op 是一个指针,指向「两个 int 参数、返回 int」的函数。括号不能少, 写成 int *op(int, i

开始练习 →

母题:找到邮箱里的 @

写函数 char *find_char(char *s, char c):返回字符 c 在 s 里第一次出现的位置(一个指针)。 main 从这个位置开始打印,就得到「从 c 起的后半截」。题目保证 c 一定出现。例如输入 zhang@qq

开始练习 →

变式 1:取出文件的扩展名

交作业时文件名常常是 lab3.final.c 这样,扩展名是最后一个点后面的部分。 写 char *find_last(char *s, char c):返回 c 最后一次出现的位置,没有就返回 NULL。 例如输入 report.v2.

开始练习 →

变式 2:截出邮箱的用户名

还是母题的 find_char(已经写好),这次要 @ 前面的用户名。例如输入 zhang@qq.com,输出: zhang 提示:返回的 p 指向原数组里的那一格,在那一格写一个 '\0',字符串就在那里结束了。只改 ma

开始练习 →