有以下程序: 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(st

题目
有以下程序: 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符合题意。
更多“有以下程序: #include <stdlib.h> struct NODE{int nurn;struct NODE *next; }; main() { struct ”相关问题
  • 第1题:

    有以下程序

    #include

    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

  • 第2题:

    有以下程序: inClude structNODE{ int num; structNODE*next; }; main() {StructN00E

    有以下程序:

    #inClude <stdlib.h>

    struct NODE{

    int num;

    struct NODE *next;

    };

    main()

    { Struct N00E *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所指向的结点的hum域赋值为1、2、3,然后让结点p指向q,让q指向r,r指向NULL。显然q->next->num的值为指针r所指向结点的num域的值为3,p->num的值为指针p所指向结点的num域的值为1,故最后输出s的值为3+1=4。所以,4个选项中选项B符合题意。

  • 第3题:

    以下程序运行后的输出结果是【 】。

    struct NODE

    {int num;struct NODE *next;

    };

    main()

    {struct NODE s[3]={{1,'\0'},{2,'\0'},{3,'0'}},*p,*q,*r;

    int sum=0;

    s[0].next=s+1;s[1].next=s+2;s[2].next=s;

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

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

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

    }


    正确答案:5
    5 解析:程序通过语句“s[0].next=s+1;s[1].next=s+2;s[2].next=s;”将结构体变量s中各结点链接成了一个循环链表,即最后一个结点的指针域指向了头结点(s[2].next=s;),整个链表形成一个环,并通过语句“p=s;q=p->next;r=q->next;”将结构体指针变量p、q、r指向了各结点,具体结构如下图:

    故本题输出的sum=3+2=5。

  • 第4题:

    以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中,请从与下划线处号码对应的一组选若中选择出正确的选项。#include stuct node{ char data; struct node *next;}; (48) CreatLis(char *s){ struct node *h,*p,*q); h=(struct node *)malloc(sizeof(struct node)); p=q=h; while(*s!='\0') { p=(struct node *)malloc(sizeof(struct node)); p->data= (49) ; q->next=p; q= (50) ; s++; } p->next='\0'; return h;}main(){ char str[]="link list"; struct node *head; head=CreatLis(str); ...}

    A.char *

    B.struct node

    C.struct node*

    D.char


    正确答案:C
    解析:CreateList(  )函数在最后返回h,而h是structn。node*类型的变量。

  • 第5题:

    有以下程序 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。

  • 第6题:

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

    有以下程序

    #include <stdlib.h>

    struct NODE{

    int num;

    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
    解析:q—>next—>num=3,p—>num=1,所以结果为4。

  • 第7题:

    有以下程序: 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


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

  • 第8题:

    有以下程序

    #nclude<stdio.h>

    main()

    { struct node{int n;struct nodc*next;}*p;

    struct node x[3]={{2,x+1},{4,x+2},{6,NULL}};

    p=x:

    printf("%d,",p->n);

    printf("%d\n",P->next->n);

    }

    程序运行后的输出结果是

    A.2,3

    B.2,4

    C.3,4

    D.4,6


    正确答案:B
    解析:p指向a的第一个元素,所以p->n的值为2,p->next指向x+1,即指向a的第二个元素,所以p->next->n为4。

  • 第9题:

    有以下程序 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

  • 第10题:

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

    有以下程序

    #inGlude<stdlib.h>

    struct NODE {

    int num;

    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=(stnlct 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
    解析:本题中定义了一个结点struct NODE,在主函数中定义了三个结点变量指针p、q和r,接着通过malloc函数分配了三个结点并让p、q和r分别指向他们,再接着给p、q和r所指向的结点的num域赋值为1、2、3,然后让结点p指向q,让q指向r,r指向NULL。显然q->next->num的值为指针r所指向结点的num域的值为3,p->hum的值为指针P所指向结点的num域的值为1,故最后输出s的值为3+1=4。

  • 第11题:

    试题37

    有以下程序

    #include <stdio.h>

    main()

    { struct node {int n; struct node *next; }*p;

    struct node x[3]={{2,x+1},{4,x+2},{6,NULL}};

    p=x;

    printf(“%d,”, p?n);

    printf(“%d\n”, p?next?n);

    }

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

    A.2,3

    B.2,4

    C.3,4

    D.4,6


    正确答案:B
    试题37分析
    p=x;p指向{2,x+1},p?n的值就是2,p?next使p往后移一位,指向{4,x+2},p?next?n的值为4。
    试题37答案
    B

  • 第12题:

    单选题
    有以下程序:#include main(){ struct node {  int n;  struct node *next; } *p; struct node x[3] = {{2,x+1},{4,x+2},{6,NULL}}; p=x; printf(%d,,p->n); printf(%d,p->next->n);}程序运行后的输出结果是(  )。
    A

    2,3

    B

    2,4

    C

    3,4

    D

    4,6


    正确答案: D
    解析:
    序中定义了一个含有三个结构体node元素的数组,数组中元素的next指针分别指向后一个元素,最后一个元素的next指针置为NULL。p指针最初指向x[0],因此p->n=x[0].n=2;即第一次输出2,p->next指向x[1],则p->next->n=x[1].n=4。答案选择B选项。

  • 第13题:

    函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空includestruc

    函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空

    include <stdio.h>

    struct node

    { int data;

    struct node *next;

    };

    int min(struct node *first)/*指针first为链表头指针*/

    { struct node *p; int m;

    p=first->next; re=p->data; p=p->next;

    for( ;p!=NULL;p=【 】)

    if(p->data<m ) re=p->data;

    return m;

    }


    正确答案:p->next
    p->next 解析:本题考查的知识点是:链表的筛选。题目要求筛选出链表中最小的值,所以需要先定义一个临时变量,并将第1个值赋给该变量,就好像本题程序中定义的变量 m。然后遍历整个链表,拿链表中的每一个值跟m比较,如果找到比m小的值,就让m等于该值,这样遍历结束后,m中就是该链表的最小值了。题目中的空位于for循环的第3个表达式处,这里的for循环就是用来遍历整个链表的,所以该表达式需要完成的任务是:将循环变量p指向当前结点的下一个结点。故不难得知应填p->next。

  • 第14题:

    有以下程序: 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。

  • 第15题:

    以下程序把三个NODEIYPE型的变量链接成—个简单的链表,并在while循环中输出链表结点数据域中的数据。请填空。

    include<stdio.h>

    struct node

    { int data;struct node*next;);

    typedef struct node NODETYPE;

    main()

    { NODETYPEa,b,c,*h,*p;

    a.data=10;b.data=20;c.data=30;h=&a;

    anext=&b;b.next=&c;c,next='\0';

    p=h;

    while(p){printf("%d,",p->data):【 】;}

    printf("\n");

    }


    正确答案:P++
    P++ 解析:本题主要考查的是将NODETYPE型的变量链接成—个简单的链表,利用typedef把NODETYPE变成struct node的别名,当执行while循环时,首先判断是否到了最后—个链表结点,如果没有则引用结构体中的成员data,然后指向下—个链表结点,继续判断,因此,此处应填的是p++指向下—个链表结点。

  • 第16题:

    有以下程序: #include <stdio.h> main( ) { struct node{int n; struct node*next;} *P; struct node x[3]={{2,x+1),{4,x+2},{6,NULL}}; P= X; printf("%d,",p->n); printf("%d\n",p->next->n); } 程序运行后的输出结果是( )。

    A.2,3

    B.2,4

    C.3,4

    D.4, 6


    正确答案:B
    略。

  • 第17题:

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

    有以下程序:

    #include<stdlib.h>

    struct NODE{

    int num;

    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
    解析:本题中定义了一个结点结构stmct NODE,在主函数中定义了3个结点指针p、q和r,接着通过malloc函数分配了3个结点并让p、q和r分别指向他们,再接着给p、q和r所指向的结点的num域赋值为1、2、3,然后让结点p指向q,让q指向r, r指向NULL。显然q->next->num的值为指针r所指向结点的hum域的值为3,p->hum的值为指针p所指向结点的num域的值为1,故最后输出s的值为3+1=4。所以,4个选项中选项B符合题意。

  • 第18题:

    链表题:一个链表的结点结构

    struct Node

    {

    int data ;

    Node *next ;

    };

    typedef struct Node Node ;

    (1)已知链表的头结点head,写一个函数把这个链表

    逆序( Intel)


    正确答案:

    Node * ReverseList(Node *head) //链表逆序
    {
    if ( head == NULL || head->next == NULL )
    return head;
    Node *p1 = head ;
    Node *p2 = p1->next ;
    Node *p3 = p2->next ;
    p1->next = NULL ;
    while ( p3 != NULL )
    {
    p2->next = p1 ;
    p1 = p2 ;
    p2 = p3 ;
    p3 = p3->next ;
    }
    p2->next = p1 ;
    head = p2 ;
    return head ;
    }

  • 第19题:

    有以下程序 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正确。

  • 第20题:

    有以下程序: 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
    解析:本题主要考查利用结构体变量构成链表,链表关系如下:

  • 第21题:

    以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请填空。 #include <stdlib.h> stuct node { char data; struet node * next; }; stntct node * CreatList(char * s) { struet node *h,*p,*q; h = (struct node * ) malloc(sizeof(struct node) ); p=q=h; while( * s! ='\0') { p = (struct node *) malloc ( sizeof(struct node) ); p - > data = ( ) q- >next=p; q=p; a++; p- > next ='\0'; return h; } main( ) { char str[ ]= "link list"; struet node * head; head = CreatList(str);

    A.*s

    B.s

    C.*s++

    D.(*s)++


    正确答案:A
    解析:本题要求建立一个stmctnode类型的数据链表,函数CreatList将字符串"linklist"的首地址传给指针变量s,可以推断建立的链表一定与"linklist",有关,由CreatList(char*s)函数中所定义的变量及其他语句可知,h,p,q用于建立的链表,h表示头指针,p用于记录开辟的新结点,而q用作将新结点与已建立的链表相连的中间变量,所建立链表各个结点的data依次存放的是”linklist",中的各个字符,所以应填空*s。

  • 第22题:

    下面程序的功能是建立一个有 3 个 结 点的单向循环链表,然后求各个 结 点数值域 data 中数据的和。请填空。

    include <stdio.h>

    include <stdlib.h>

    struct NODE{ int data;

    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->data=100; q->data=200; r->data=200;

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

    sum=p->data+p->next->data+r->next->next 【 19 】 ;

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

    }


    正确答案:
    (16)答案->next->data解析:r->next->next->next指向的是r结点,r->next->next->next->data是r的数据域data中的数据。

  • 第23题:

    填空题
    设线性链表的存储结构如下: struct node {ELEMTP data; /*数据域*/ struct node *next; /*指针域*/ } 试完成下列建立单链表的算法。 creat() {char var; head=(struct node *)malloc(sizeof(struct node)); head->next= () ; while((var=getchar())!=‘/n’){ ptr=( struct node *)malloc(sizeof(struct node)); ptr->data= var ;ptr->next=head->next; head->next= ptr ; } }

    正确答案: NULL
    解析: 暂无解析