c打印指针地址内容_用字符指针指向一个字符串

c打印指针地址内容_用字符指针指向一个字符串浙大版《C语言程序设计》第四版(何钦铭颜晖) 第11章 指针进阶 课后习题答案你也可以上程序咖(https://meta.chengxuka.com),打开大学幕题板块,不但有答案,讲解,还可以在线答题。一、选择题1.下面程序段的运行结果是(

浙大版《C语言程序设计》第四版(何钦铭颜晖) 第11章 指针进阶 课后习题答案   你也可以上程序咖(https://meta.chengxuka.com),打开大学幕题板块,不但有答案,讲解,还可以在线答题。   
c打印指针地址内容_用字符指针指向一个字符串
c打印指针地址内容_用字符指针指向一个字符串   一、选择题   1.下面程序段的运行结果是( )。   A.4 4   B.2 4   C.2 2   D.4 6   答:B   解析:   题目中先定义了 int 类型的数组 x,又定义两个指针。   然后 p = x,表示将 x 的基地址赋值给 p,所以 p 指向数组中第一个素。   第一次打印 *(p++), p 指向的素,打印 2, 然后指针位置向后移动一个位置。   因为 pp = &p,表示将 p 的地址赋值给 pp,所以 pp 指向 p,p 经过上次打印时的 ++,已经向后一定一个,所以第二个打印 pp,打印的就是 4。   2.对于以下变量定义,正确的赋值是( )。   A. p=a   B. *p=a[0]   C. p=&a[0]   D. p[0]=&a[0]   答:D   解析:   定义为int 可知这里 p 是一个指针数组,p 为数组名,所以不能作为赋值号的左操作数,所以选项 A 和 C 不对 即 p[0],所以选项 B 等效于 p[0]=a[0],a[0]是int类型,而p[0] 应该存储指针变量(int *),所以B也不对。   3.下列程序段的输出是( )。   A.12   B.8   C.6   D.上述程序有错误   答:A   解析:   题目中定义了一维数组 a[12],以及一个指针数组 p。   当 i=0 时,第一次循环:p[0]=&a[0] ,p[0] 指向 a[0]   当 i=1 时,第二次循环:p[1]=&a[3] ,p[1] 指向 a[3]   当 i=2 时,第三次循环:p[2]=&a[6] ,p[2] 指向 a[6]   当 i=3 时,第四次循环:p[3]=&a[9] ,p[3] 指向 a[9]   当 i=4 时,循环结束。p[3][2],相当于 p[3]+2,因为 p[3]指向 a[9],所以 p[3][2]指向 a[11],a[11] 所对应的值是 12 ,所以输出12。   4.设有如下定义的链表,则值为 7 的表达式是( )。   A. p->n   B. (p->n)++   C. p->next->n   D. ++p->n   答:C   解析:   题目中 *p=a,表示指针 p 指向 a 的基地址。   选项 A,打印数组 a 中第一个素的 n 的值,输出 5。   选项 B,也是打印 5。因为是后加。   选项 C,p 指向 a 的基地址,默认第一个素, p->next,表示它的下一个素,就是 7 和 &a[2],打印它的 n,就是 7。   选项 D,因为 -> 的优先级高于 ++,所以这里取 p -> n,数组中第一个素的 n ,为 5,前置++,所以打印 6。   5.下面程序段输入一行字符,按输入的逆序建立一个链表。   A. top->link=p   B. p->link= top   C. top=p->link   D. p=top->link   答:B   解析:   因为要逆序建立链表,所以让 p->link 赋值为 top,然后 top赋值为 p。   二、填空题   1.下面程序段的输出结果是( )。   答:   ntinue   int   oint   解析:   这里是两层循环嵌套,   i=2时,j=2时,内层循环条件不满足。   i=1时,j=2时,打印 s[i]+j ,就是 s[1]+2,对应continue,但是因为要加 2,所以从下标为 2 的字符开始,就是 ntinue。   ​ j=1时,内层循环条件不满足。   i=0时,j=2时,打印 s[i]+j ,就是 s[0]+2,对应point,但是因为要加 2,所以从下标为 2 的字符开始,就是 int。   ​ j=1时,打印 s[i]+j ,就是 s[0]+1,对应point,但是因为要加 2,所以从下标为 2 的字符开始,就是o int。   2.下面程序段的输出结果是( )。   答:   world-w   orld-o-p   解析:   首先定义了指针数组 st,存储的是 3 个字符串的地址。然后又定义了二级指针变量 p,这里 p 存储的是 st 的基地址。   然后 p++,那么指向了里面的第二个字符串的地址。*p打印该字符串。world,p,打印字符 w。   然后 (*p)++,那么指针向后移动一位,从 o 开始,打印 orld,p打印 o,(p) + 1 先取 p 就是 o 然后再加 1,就是 p。   3.下面程序段的输出结果是( )。   答:   1 0 0 1   0 1 1 0   0 1 1 0   1 0 0 1   解析:   首先定义了一个 4X4 的矩阵,默认都是 0 。   0 0 0 0   0 0 0 0   0 0 0 0   0 0 0 0   然后又定义了一个指针数组 p。   第一个 for 循环中:p[0]存储 a[0][0]的地址。p[1]存储 a[1][0]的地址。p[2]存储 a[2][0]的地址。p[3]存储 a[3][0]   的地址。   第二个 for 循环中:   i = 0 时,*(p[i] + i) = 1,表示 *(p[0]+0),表示 第一行第一个素修改值为 1。 *(p[i] + 4 – (i + 1)) = 1,表示 *(p[0]+3), 表示第一行第四个素修改值为 1。   i = 1 时,*(p[i] + i) = 1,表示 *(p[1]+1) ,表示 第二行第二个素修改值为 1。 *(p[i] + 4 – (i + 1)) = 1 ,表示 *(p[1]+2), 表示第二行第三个素修改值为 1。   i = 2 时,*(p[i] + i) = 1,表示 *(p[2]+2),表示 第三行第三个素修改值为 1。 *(p[i] + 4 – (i + 1)) = 1 ,表示 *(p[2]+2), 表示第三行第二个素修改值为 1。   i = 3 时,*(p[i] + i) = 1,表示 *(p[3]+3) ,表示 第四行第四个素修改值为 1。 *(p[i] + 4 – (i + 1)) = 1 ,表示 *(p[3]+0) , 表示第四行第一个素修改值为 1。   第三个 for 循环,打印这个矩阵,所以最终结果为:   1 0 0 1   0 1 1 0   0 1 1 0   1 0 0 1   4.找出最小字符串。输出多个字符串中最小的字符串。请填空。   答:   *st   strcmp(st[i], smin)   smin   解析:   首先定义了一个字符指针数组,想找到里面的最小字符串,首先取第一个字符串赋值给 smin,所以 *smin = *st   ,然后循环中依次比较字符串大小,strcmp(st[i], smin) <0 ,那么就取 st[i] 赋给 smin,循环结束后打印 smin 即可。   5.查找最高分。输入 n(n<=10)个成绩,查找最高分并输出。请填空。   答:   GetMax(score, n)   score + pos 或者 &score[pos]   解析:   就是定义一个函数,找到数组中的最大值,返回它的地址。所以第一个空调用函数,参数传入数组和 n 的值。第二个空,就是函数中返回结果。数组的本质就是存储数组的基地址,加上 pos 即可。   6.输出链表中不及格学生的学号和成绩。已建立学生”英语”课程的成绩链表(成绩存于 score 域中,学号存于 num 域中),下列函数的功能是输出不及格学生的学号和成绩。请填空。   答:   p = head   p->score < 60   解析:   第一个空将 head 赋值给 p,第二个空判断成绩是否及格。   三、程序设计题   题目1:输出月份英文名:输入月份,输出对应的英文名称。要求用指针数组表示 12 个月的英文名称。例如,输入 5 ,输出 May。试编写相应程序。   答案代码:   运行结果:   
c打印指针地址内容_用字符指针指向一个字符串
c打印指针地址内容_用字符指针指向一个字符串   题目2:查找星期:定义一个指针数组,将下表的星期信息组织起来,输入一个字符串,在表中查找,若存在,输出该字符串在表中的序号,否则输出 -1。试编写相应程序。   序号星期0Sunday1Monday2Tuesday3Wednesday4Thurday5Friday6Saturday   答案代码:   运行结果:   
c打印指针地址内容_用字符指针指向一个字符串
c打印指针地址内容_用字符指针指向一个字符串   题目3:计算最长的字符串长度:输入 n(n<10)个字符串,输出其中最长字符串的有效长度。要求自定义函数 int max_ len(char *s[], int n),用于计算有 n 个无素的指针数组 s 中最长的字符串的长度。试编写相应程序。   答案代码:   运行结果:   
c打印指针地址内容_用字符指针指向一个字符串
c打印指针地址内容_用字符指针指向一个字符串   题目4:字符串的连接:输入两个字符串,输出连接后的字符串。要求自定义函数 char *streat(char *s, char *t), 将字符串 t 复制到字符串 s 的末端,并且返回字符串 s 的首地址。试编写相应程序。   答案代码:   运行结果:   
c打印指针地址内容_用字符指针指向一个字符串
c打印指针地址内容_用字符指针指向一个字符串   题目5:指定位置输出字符串:输入一个字符串后再输入两个字符,输出此字符串中从与第 1 个字符匹配的位置开始到与第 2 个字符匹配的位置结束的所有字符。例如,输入字符串 “program” 与 2 个字符 “r” 和 “g” 后,输出 “rog” 。要求自定义函数 char *match(char *s, char ch1, char ch2)返回结果字符串的首地址。试编写相应程序。   答案代码:   运行结果:   
c打印指针地址内容_用字符指针指向一个字符串
c打印指针地址内容_用字符指针指向一个字符串   题目6:查找子串:输入两个字符串 s 和 t ,在字符串 s 中查找子串 t ,输出起始位置,若不存在,则输出 -1。要求自定义函数 char *search(char *s, char *t)返回子串 t 的首地址,若未找到,则返回 NULL 。试编写相应程序。   答案代码:   运行结果:   
c打印指针地址内容_用字符指针指向一个字符串
c打印指针地址内容_用字符指针指向一个字符串   题目7:奇数值结点链表:输入若干个正整数(输入 -1 为结束标志)建立一个单向链表,头指针为 L ,将链表 L 中奇数值的结点重新组成个新的链表 NEW ,并输出新建链表的信息。试编写相应程序。   答案代码:   运行结果:   
c打印指针地址内容_用字符指针指向一个字符串
c打印指针地址内容_用字符指针指向一个字符串   题目8:删除结点:输入若干个正整数(输入 -1 为结束标志)建立一个单向链表,再输入一个整数 m ,删除链表中值为 m 的所有结点。试编写相应程序。   答案代码:   运行结果:   
c打印指针地址内容_用字符指针指向一个字符串
c打印指针地址内容_用字符指针指向一个字符串

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/77410.html

(0)
上一篇 2024年 8月 3日
下一篇 2024年 8月 3日

相关推荐

关注微信