有以下程序: #include<stdlib.h> struct NODE { int num; struct NODE*next; }; main() { struct

题目
有以下程序: include struct NODE { int num; struct NODE*next; }; main() { struct

有以下程序:

#include <stdlib.h>

struct NODE

{ int num; struct NODE *next; };

main()

{ struct NODE *p,*q,*r;

p=(struct NODE*)malloc(sizeof(struct NODE));

q=(struct NODE*)mallloc(sizeof(struct NODE));

r=(struct NODE*)malloc(sizeof(struct NODE));

p->num=10;q->num=20; r->num=30;

p->next=q;q->next=r;

printf("%d\n",p->num+q->next->num);

}

程序运行后的输出结果是( )。

A.10

B.20

C.30

D.40

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有以下程序: include struct NODE{int nurn;struct NODE *next; }; main() { struct

有以下程序:

#include <stdlib.h>

struct NODE{

int nurn;

struct NODE *next;

};

main()

{ struct NODE *p,*q,*r;

int sum=0;

P=(struct NODE*)malloc(sizeof(struct NODE));

q=(struct NODE*)malloc(sizeof(struct NODE));

r=(struct NODE*)malloc(sizeof(struct NODE));

p->num=1;q->num=2;r->num=3;

p->next=q;q->next=r;r->next=NULL;

sum+=q->next->num;sum+=p->num;

Printf("%d\n",sum);

}

执行后的输出结果是( )。

A.3

B.4

C.5

D.6


正确答案:B
解析:本题中定义了一个结点structNODE,在主函数中定义了三个结点变量指针p、q和r,接着通过malloc函数分配了三个结点并让p、q和r分别指向他们,再接着给p、q和r所指向的结点的num域赋值为1、2、3,然后让结点p指向小让q指向r,r指向NULL。显然q->next->num的值为指针r所指向结点的num域的值为3,p->num的值为指针p所指向结点的num域的值为1,故最后输出s的值为3+1=4。所以,4个选项中选项B符合题意。

第2题:

有以下程序 include struct NODE {int num;struct NODE*next;} main() {struct NODE

有以下程序

#include<stdlib.h>

struct NODE

{int num;struct NODE*next;}

main()

{struct NODE *P,*q,*r;

p=(struct NODE *)malloc(sizeof(struct NODE));

q=(struct NODE *)malloc(sizeof(struet NODE));

r=(struct NODE*)malloc(sizeof(struct NODE)):

p->num=10;q->num=20;r->num=30;

p->next=q;q->next=r;

printf("%d\n",p->num+q->next->num):

}

程序运行后的输出结果是( )

A.10

B.20

C.30

D.40


正确答案:D

第3题:

有以下程序: include struct NODE {int num;stmct NODE *next;}; main( ) { str

有以下程序:

#include<stdlib.h>

struct NODE

{ int num;stmct NODE *next;};

main( )

{ struct NODE * p, * q,* r;

p=(struct NODE * )malloc(sizeof(struct NODE) );

q=(struct NODE * )malloc(sizeof(struct NODE) );

r=(struct NODE * )malloc(sizeof(struct NODE) );

p->num=10; q->num=20; r->num=30;

p->next=q; q->next=r;

printf("%d\n",p->num+q->next->num);

}

程序运行后的输出结果是

A.10

B.20

C.30

D.40


正确答案:D
解析:本题主要考查利用结构体变量构成链表,链表关系如下:

第4题:

有以下程序 include struct NODE { int num;struct NODE*next;}; main() { struct NO

有以下程序

#include<stdlib.h>

struct NODE

{ int num;struct NODE*next;};

main()

{ struct NODE*p,*q,*r;

p=(struct NODE*)malloc(sizeof(struct NODE));

q=(struct NODE*)malloc(sizeof(struct NODE));

r=(struct NODE*)malloc(sizeof(struct NODE));

p->num=10;q->num=20;r->num=30;

p->next=q;q->next=r;

printf("%d\n",p->num+q->next->num);}

程序运行后的输出结果是

A.10

B.20

C.30

D.40


正确答案:D
解析:该题中考查的是简单的单链表,下图就是赋完值后的示意图:容易看到p->num=10,而q->next就是r,所以q->next->num=30,故答案为40。

第5题:

有以下程序 include gtruet NODE {intnum;struct NODE *next;}; main() {struct NODE

有以下程序

#include <stdlib.h>

gtruet NODE

{ int num; struct NODE *next; };

main()

{

struct NODE *p,*q,*r;

p=(struct NODE*)malloc(sizeof (struct NODE));

q=(struct NODE*)malloc(sizeof (struct NODE));

r=(struct NODE*)malloc(sizeef (struct NODE));

p->num=10; q->num=20; r->num=30;

p->next=q; q->next-r;

printf("%d\n",p->num+q->next->num);

}

程序运行后的输出结果是

A.10

B.20

C.30

D.50


正确答案:D
解析:本题考查的知识点是对结构体指针变量的正确引用与计算。主函数中首先定义了三个结构体指针变量p,q,r。然后调用内存分配函数分别为其分配地址空间,程序中变量q->num的值为20,指针变量q->next指向指针变量r,r->nnm的值为30,所以变量q->next->nm的值为30,因此,表达式q->num+q->next->num的值为20+30=50.所以4个选项中D正确。

第6题:

下列给定程序中,是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。

请改正程序指定部位的错误,使它能得到正确结果。

[注意] 不要改动main函数,不得增行或删行,也不得更改程序的结构。

[试题源程序]

include<stdio.h>

include<stdlib.h>

typedef struct aa

{

int data;

struct aa *next;

}NODE;

fun(NODE *h)

{

int max=-1;

NODE *p;

/***********found************/

p=h;

while(p)

{

if(p->data>max)

max=p->data;

/************found************/

p=h->next;

}

return max;

}

outresult(int s, FILE *Pf)

{

fprintf(pf, "\nThe max in link: %d\n", s);

}

NODE *creatlink(int n, int m)

{

NODE *h, *p, *s, *q;

int i, x;

h=p=(NODE *)malloc(sizeof(NODE));

h->data=9999;

for(i=1; i<=n; i++)

{

s=(NODE *)malloc(sizeof(NODE));

s->data=rand()%m; s->next=p->next;

p->next=s; p=p->next;

}

p->next=NULL;

return h;

}

outlink(NODE *h, FILE *pf)

{

NODE *p;

p=h->next;

fprintf(Pf, "\nTHE LIST:\n\n HEAD");

while(P)

{

fprintf(pf, "->%d", P->datA); p=p->next;

}

fprintf(pf, "\n");

}

main()

{

NODE *head; int m;

head=cteatlink(12,100);

outlink(head, stdout);

m=fun(head);

printf("\nTHE RESULT"\n");

outresult(m, stdout);

}


正确答案:(1)错误:p=h; 正确:p:h->next; (2)错误:p=h->next; 正确:p=p->next;
(1)错误:p=h; 正确:p:h->next; (2)错误:p=h->next; 正确:p=p->next; 解析:程序中使用while循环语句并结合结构指针p来找到数据域中的最大值。
错误1:P指向形参结构指针h的next指针,所以应改为:p=h->next;
错误2:p指向自己的下一个结点,所以应改为:p=p->next

第7题:

已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填______。 struct 1ink { char data; }node;

A.struct link next

B.link*next

C.sluct next link

D.struct link*next


正确答案:D
解析:在单向链表中,由于每个结点需要存储下—个结点的地址,且下—个结点的数据类型与前—个结点的数据类型完全相同,故应为strect link*next。

第8题:

有以下程序 include struct NODE {int num;stmct NODE*next;}; main() { struct NODE

有以下程序

#include<stdlib.h>

struct NODE

{ int num;stmct NODE*next;};

main()

{ struct NODE*p,*q,*r;

p=(struct NODE*)malloc(sizeof(struct NODE));

q=(struct NODE*)malloc(sizeof(struct NODE));

r=(struct NODE*)malloc(sizeof(struct NODE));

p->num=10;q->num=20;r->num=30;

p->next=q;q->next=r;

printf(“%d\n”,p->num+q->next->num);

}

程序运行后的输出结果是

A.10

B.20

C.30

D.40


正确答案:D
解析:主函数中首先定义了三个结构体指针变量p,q,r。然后调用内存分配函数分别为其分配地址空间,程序中变量q->num的值为20,指针变量q->next指向指针变量r,r->num的值为30,所以变量q->next->num的值为30,因此,表达式q-> num+q->next->num的值为20+30=50。

第9题:

有以下程序: include include struct NODE {int num;struct NODE *next; }

有以下程序:

#include <stdio.h>

#include <stdlib.h>

struct NODE

{ int num;

struct NODE *next;

};

main()

{ struet NODE *p,*q,*r;

int sum=0;

p=(struct NODE *) malloc(sizeof(struct NODE));

q=(struct NODE *) malloc(sizeof(struet NODE));

r=(struct NODE *) malloc(sizeof(struct NODE));

P- >num=1;q- >num=2;r->num=3;

p- >next=q;q- >next=r;r- >next=NULL;

sum + =q- >next- >num;sum + =P- >num;

printf("%d\n",sum);

}

执行后的输出结果是( )

A.3

B.4

C.5

D.6


正确答案:B
解析:程序中q->next=r,所以q->next->num即为r->num,值为3,而p->num=1,所以sum=3+1=4。