{ int a[]={1,2,3,4,5},*p,*q,i; p=a; q=p+4;
for(i=1;i<5;i++) printf(\ A.24334251 B.51423324 C.15243342 D.42332415 51612 下面程序运行结果是( B )。
main( )
{ static char a[]=\ char *p=a,*q=b; int i;
for(i=0;i<=6;i++)
if(*(p+i)==*(q+i)) printf(\ A.geca B.aceg C.bdf D.fdb
51700 若定义如下结构,则能打印出字母M的语句是( B )。 struct person{ char name[9]; int age;};
struct person class[10]={\ A.printf(\C.printf(\51701 以下程序段的运行结果是( D )。 union { int n; char str[2]; }t;
t.n=80; t.str[0]='a'; t.str[1]=0; printf(\ A.80 B.a C.0 D.97
51702一个结构体变量占用的内存大小是( B )。
A.占内存容量最大的成员所需容量 B.各成员所需内存容量之和 C.第一个成员所需内存容量 D.最后一个成员所需内存容量 51703以下程序段的运行结果是( C )。 union { int x; float y; char c; }m,n; m.x=5;m.y=7.5;m.c='A';n.x=8;printf(\ A.5 B.7.5 C.65 D.8 51704若有定义: struct student {int num; char name[8]; char sex;
float score;}stu1;
则变量stu1所占用的内存字节数是( A )。 A.15 B.16 C.8 D.19
51705定义结构体类型变量teach1,不正确的是( D )。 A.struct teacher {int num; struct teacher teach1; B.struct teacher {int num; C.struct
{int num;
D.struct {int num;
int age;
}teach1;
int age;
}teach1;
int age;
};
int age; }teacher;
struct teacher teach1;
51706若有定义:struct student{int num; char sex; int age;}stu1;下列叙述不正确的是
21
( A )。
A.student是结构体类型名 B.struct student是结构体类型名
C.stu1是用户定义的结构体类型变量名 D.num,sex,age都是结构体变量stu1的成员 51707下面程序的运行结果是( A )。 #include
union data { int i; char c; double d; }a[2]; void main() {printf(\ A.16 B.8 C.4 D.2
51708下面程序的运行结果是( B )。
#include
union data {int i; char c; };
struct {char a[2]; int i; union data d; }p; void main() {printf(\ A.5 B.6 C.7 D.8
51709以下C语言共用体类型数据的描述中,正确的是( C )。 A.共用体变量占的内存大小等于所有成员所占的内存大小之和 B.共用体类型不可以出现在结构体类型定义中
C.在定义共用体变量的同时允许对第一个成员的值进行初始化 D.同一共用体中各成员的首地址不相同 51710设有如下语句:
struct stu {int num; int age; };
struct stu s[3]={{101,18},{102,21},{103,19}}; struct stu *p=s;
则下面表达式的值为102的是( B )。
A.(p++)->num B.(*++p).num C.(*p++).num D.*(++p)->num 51711若有下面定义,能打印出字母'L'的语句是( A )。 struct class { char name[8];
int age; };
struct class s[12]={\ A.printf(\C.printf(\51712若有下面定义,对结构体变量成员不正确引用的语句是( A )。 struct pup { char name[20]; int age; int sex; }p[3],*q; q=p;
A.scanf(\C.scanf(\
22
51800 以下程序的输出结果是( A )。 main()
{ printf( \fac(int n) { int s;
if(n==1) return 1; else return n*fac(n-1); }
A.120 B.60 C.6 D.1 51801 若有以下定义:
struct node { int data;
struct node *next; }
struct node *p; 已建立如下图所示的链表:
┌──┬──┐ ┌──┬──┐ ┌──┬──┐ p →│data│next┼ →│data│next┼ →... →│data│NULL│ └──┴──┘ └──┴──┘ └──┴──┘
指针p指向第一个结点,能输出链表所有结点的数据成员data的循环语句是( D )。 A.while(p!=NULL) { printf(\B.while(p) { printf(\C.for( ; p!=NULL; p++) printf(\D.for( ; p; p=p->next) printf(\51802 若有以下定义:
struct node { int data;
struct node *next; }
struct node m,n,k, *head, *p; 已建立如下图所示的链表:
m n k
┌──┬──┐ ┌──┬──┐ ┌──┬──┐ head →│data│next┼ →│data│NULL│ p → │data│next│
└──┴──┘ └──┴──┘ └──┴──┘
指针head指向变量m, m.next指向变量n,p指向变量k,不能把结点k插到m和n之间形成新链表的程序段是( C )。
A.m.next = p; p->next = head->next; B.(*head).next = p; (*p).next = &n; C.head->next = &k; p->next = head->next; D.m.next = &k; k.next = &n; 51803若有以下定义:
struct node { int data;
struct node *next; }
23
struct node *head,*p; 已建立如下图所示的链表: p ↓
┌──┬──┐ ┌──┬──┐ ┌──┬──┐ head → │data│next┼→│data│next┼→... →│data│NULL│ └──┴──┘ └──┴──┘ └──┴──┘ 能删除指针p所指向结点的程序段是( C )。
A.p = p->next; head->next=p->next; free(p); B.free(p); p = p->next; head->next=p->next; C.head->next = p->next; free(p); D.free(p); head->next = p->next; 51804若有以下定义:
struct node { int data;
struct node *next; } *p,*q;
已建立如下图所示的链表:
┌──┬──┐ ┌──┬──┐
... p →│data│next┼→│data│NULL│
└──┴──┘ └──┴──┘
┌──┬──┐ q →│data│next│ └──┴──┘
不能将指针q所指结点连到上图所示链表末尾的语句是( D )。
A.q->next=NULL; p=p->next; p->next=q; B.p=p->next; p->next=q; q->next=NULL; C.p=p->next; q->next=p->next; p->next=q; D.q->next=p->next; p=p->next; p->next=q; 51805若有定义:
struct node { int data;
struct node *next; };
已建立如下图所示的链表:
┌─┬─┐ ┌─┬─┐ ┌─┬─┐ head →│1 │ ┼→│3 │ ┼→ ? →│25│ ┼→NULL └─┴─┘ └─┴─┘ └─┴─┘ 指针head指向链表首结点,以下函数的功能是( B )。 void fun(struct node * head) { struct node * p = head; while(p)
{ printf(\ A.显示并删除单向链表 B.显示单向链表中的第一个结点的数据 C.显示单向链表中的所有数据 D.显示单向链表中除第一个结点外的所有数据 51806若有定义: struct node { int data;
struct node *next;};
24