当前位置:IT认证>计算机二级

问题:

[单选] 现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指定一个链表中连续的3个结点。
struct node
{har data;
struct node*next;)*p,*q,*r;
现要将q和r所指结点交换前后位嚣,同时要保持链表的结构,下列不能完成此操作的语句是(  )。

A . q->next=r->next;p->next=r;r->next=q;
B . q->next=r;q-->next=r->next;r->next=q;
C . q->next=r->next;r->next=q;p->next=r;
D . q->next=q;p->next=r;q->next=r->next;

执行下述程序后,输出的结果是(  )。#include<stdio.h>#define S(X)  X*Xvoid main(){  int a=9,k=3,m=2;a/=S(k+m)/s(k+m);printf(”%d”,a);} 1。 4。 9。 0。 设变量已正确定义,则以下能正确计算f=n!的程序是(  )。 f=0;for(i=1;i<=n:i+十)f*=i;。 f=1for(i=1:i<n;i十+)f*=i;。 f=l:for(i=n;i>1;i十+)f*=i;。 f=1:for(i=n;j>=2;j--)f*=i;。 若有以下的定义:“int t[a][2];”,能正确表示t数组元素地址的表达式的是(  )。 &.t[3][2]。 t[3]。 t[1]。 t[2][2]。 数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是(  )。 DB包含DBS和DBMS。 DBMS包含DB和DBS。 DBS包含DB和DBMS。 没有任何关系。 有以下程序:#include<stdio.h>void WriteStr(char*fn.char*str){FILE*fpfp=fopen(fn,”w”);fputs(str,fp);fclose(fp);)main(){  WriteStr(”t1.dat”,”start”);WriteStr(”t1.dat”,”end”);)程序运行后,文件t1.dat中的内容是(  )。 start。 end。 starte nd。 endrt。 现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指定一个链表中连续的3个结点。
struct node
{har data;
struct node*next;)*p,*q,*r;
现要将q和r所指结点交换前后位嚣,同时要保持链表的结构,下列不能完成此操作的语句是(  )。
参考答案:

  参考解析

D。【解析】由题目中线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使q指向r的后一个结点,P指向r结点,r指向q结点即可。而在选项D中,r一>nextq,这时r指向的节点为q;p-->next—r,这对P指向的节点为r;q一>next—r-->next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项I)不正确。

在线 客服