两道C语言题

来源:百度知道 编辑:UC知道 时间:2024/05/12 00:03:58
(45) 以下程序的输出结果是
#include
#include
main()
{ char b1[8]="abcdefg",b2[8],*pb=b1+3;
while (--pb>=b1) strcpy(b2,pb);
printf("%d\n",strlen(b2));
}
A) 8 B) 3 C) 1 D) 7
答案D
(49) 若以下定义:
struct link
{ int data;
struck link *next;
}a,b,c,*p,*q;
且变量a和b之间已有如下图所示的链表结构:
a b
data next data next
┌——┬——┐ ┌——┬——┐
│ 5 │ ┼——→ │ 9 │ \0 │
└——┴——┘ └——┴——┘
↑p
c
data next
┌——┬——┐
│ 7 │ │
└——┴——┘
↑q
指针p指向变量a,q指向变量c。则能够把c插入到a和b 之间并形成新的链表的语句组是:
A) a.next=c; c.next=b; B) p.next=q; q.next=p.next;
C) p->next=&c; q->next=p->next; D) (*p).next=q; (*q).next=&b;
答案D
麻烦讲下,谢谢!

1、--pb>=b1才结束,就是当pb<b1时才结束,而之前b2就等于b1,所以strlen(b2)=7,而strlen(pb)=8;
2、要插入一个节点,只需让前节点的next指向插入的节点,插入的节点的next指向下一个节点就可以啦,D不就是这样么