二级C语言重点难点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

p++;
}
B. while(p)
{ printf("%d,", p.data);
p=p->next;
}
C. for( ; p!=NULL; p++)
printf("%d,", p->data);
D. for( ; p; p=p->next)
printf("%d,", (*p).data);
16. 若有以下定义:
{ int x; float y; char c;
}m,n; m.x=5; m.y=7.5; m.c='A'; n.x=8; printf("%d\n", m.x); A. 5 B. 7.5
C. 65 D. 8 5. 若有定义:
struct student {int num;
char name[8]; char sex; float score; }stu1; 则变量 stu1 所占用的内存字节数是( )。 A. 15 B. 16 C. 8 D. 19 6. 定义结构体类型变量 teach1,不正确的是( )。 A. struct teacher { int num;
B. free(p); p = p->next; head->next=p->next;
C. head->next = p->next; free(p);
D. free(p); head->next = p->next;
18. 若有以下定义:
struct node
{ int data;
struct node *next;
┌──┬──┐ ┌──┬──┐
┌──┬──┐
p →│data│next┼→│data│next┼→...─→│data│NULL│
└──┴──┘ └──┴──┘
└──┴──┘
指针 p 指向第一个结点,能输出链表所有结点的数据成员 data 的循环语句是( )。
A. while(p!=NULL)
{ printf("%d,",p->data);
p

┌──┬──┐ ┌──┬──┐
┌──┬──┐
head →│data│next┼→│data│next┼→...─→│data│NULL│
└──┴──┘ └──┴──┘
└──┴──┘
能删除指针 p 所指向结点的程序段是( )。
A. p = p->next; head->next=p->next; free(p);
} *p,*q;
已建立如下图所示的链表:
┌──┬──┐ ┌──┬──┐
... p →│data│next┼→│data│NULL│
└──┴──┘ └──┴──┘
┌──┬──┐
q →│data│next│
└──┴──┘
不能将指针 q 所指结点连到上图所示链表末尾的语句是( )。
A. q->next=NULL; p=p->next; p->next=q;
C. head->next = &k; p->next = head->next;
D. m.next = &k; k.next = &n;
17. 若有以下定义:
struct node
{ int data;
struct node *next;
}
struct node *head,*p;
已建立如下图所示的链表:
void fun(struct node * head)
{ struct node * p = head;
while(1)
{ p = p->next;
printf("%d ", p->data );
if(p) break;
}
} A. 显示单向链表中第一个结点的数据
B. 显示单向链表中最后一个结点的数据
└──┴──┘ └──┴──┘
└──┴──┘
指针 head 指向变量 m, m.next 指向变量 n,p 指向变量 k,不能把结点 k 插到 m 和 n 之间 形成新链表的程序段是( )。
A. m.next = p; p->next = head->next;
B. (*head).next = p; (*p).next = &n;
struct node
{ int data;
struct node *next;
}
struct node m,n,k, *head, *p;
ຫໍສະໝຸດ Baidu
已建立如下图所示的链表:
m
n
k
┌──┬──┐ ┌──┬──┐
┌──┬──┐
head →│data│next┼→│data│NULL│ p → │data│next│
}
A. 删除链表 head 中的一个结点 B. 插入一个新元素到链表 head 中
C. 统计链表 head 中结点的个数
D. 创建新链表 head
22. 若按如下定义,函数 link 的功能是( )。其中 head 指向链表首结点,整个链表结构
如下图:
┌──┬─┐ ┌──┬─┐
┌──┬──┐
head →│data│ ┼→│data│ ┼→… → │data│NULL│
20. 若有定义:
struct node
{ int data;
struct node *next;
};
已建立如下图所示的链表:
┌─┬─┐ ┌─┬─┐
┌─┬─┐
head →│2 │ ┼→│4 │ ┼→ … →│28│ ┼→NULL
└─┴─┘ └─┴─┘
└─┴─┘
指针 head 指向链表首结点,以下函数的功能是( )。
int age; }; struct teacher teach1; B. struct teacher { int num;
int age; }teach1; C. struct { int num;
int age; }teach1; D. struct { int num;
int age; }teacher; struct teacher teach1; 7. 若有定义: struct stuent {int num; char sex; int age; }stu1; 下列叙述不正确的是( )。
A. student 是结构体类型名 B. struct student 是结构体类型名 C. stu1 是用户定义的结构体类型变量名 D. num,sex,age 都是结构体变量 stu1 的成员
8. 下面程序的运行结果是( )。 #include <stdio.h> union data { int i; char c; double d; }a[2]; void main() {printf("%d\n",sizeof(a)); }
if(n==1) return 1; else return n*fac(n-1); } A. 120 B. 60 C. 6 D. 1 15. 若有以下定义: struct node { int data; struct node *next; };
struct node *p;
已建立如下图所示的链表:
1. 若定义如下结构,则能打印出字母 M 的语句是( )。 struct person{ char name[9]; int age; }; struct person class[10]={"Wujun",20, "Liudan",23, "Maling",21, "zhangming",22};
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;
19. 若有定义:
struct node
{ int data;
A. 16 B. 8 C. 4 D. 2 9. 下面程序的运行结果是( )。
#include <stdio.h> union data {int i;
char c; }; struct {char a[2];
int i; union data d; }p; void main() {printf("%d\n",sizeof(p)); } A. 5 B. 6 C. 7 D. 8 10. 以下 C 语言共用体类型数据的描述中,正确的是( )。 A. 共用体变量占的内存大小等于所有成员所占的内存大小之和 B. 共用体类型不可以出现在结构体类型定义中 C. 在定义共用体变量的同时允许对第一个成员的值进行初始化 D. 同一共用体中各成员的首地址不相同 11. 设有如下语句: struct stu {int num; int age; }; struct stu s[3]={{101,18},{102,21},{103,19}}; struct stu *p=s;
C. 显示单向链表中的所有数据
D. 显示单向链表中除第一个结点外的所有数据
21. 若按如下定义,则函数 link 的功能是( )。其中 head 指向链表首结点,整个链表结
构如下图:
┌──┬─┐ ┌──┬─┐
┌──┬──┐
head →│data│ ┼→│data│ ┼ → …→│data│NULL│
└──┴─┘ └──┴─┘
└──┴──┘
struct node
{int data;
struct node *next;
};
int link(struct node* head)
{int k=1;
struct node *p=head;
while(p!=NULL)
{p=p->next;
k++;
}
return k-1;
A. printf("%c\n",class[3].name); B. printf("%c\n",class[2].name[0]); C. printf("%c\n",class[2].name[1]); D. printf("%c\n",class[3].name[1]); 2. 以下程序段的运行结果是( )。
则下面表达式的值为 102 的是( )。 A. (p++)->num B. (*++p).num C. (*p++).num D. *(++p)->num 12. 若有下面定义,能打印出字母'L'的语句是( )。
struct class {char name[8];
int age; }; struct class s[12]={"Zheng",16,"Lin",18,"Yang",19,"Guo",20}; A. printf("%c\n",s[1].name[0]); B. printf("%c\n",s[2].name[0]); C. printf("%c\n",s[1].name); D. printf("%c\n",s[2].name); 13. 若有下面定义,对结构体变量成员不正确引用的语句是( )。 struct pup {char name[20]; int age; int sex; }p[3],*q; q=p; A. scanf("%s",p[0].name); B. scanf("%d",q->age); C. scanf("%d",&(q->sex)); D. scanf("%d",&p[0].age); 14. 以下程序的输出结果是( )。 main() { printf( "%d\n", fac(5) ); } fac(int n) { int s;
struct node *next;
};
已建立如下图所示的链表:
┌─┬─┐ ┌─┬─┐
┌─┬─┐
head →│1 │ ┼→│3 │ ┼→ … →│25│ ┼→NULL
└─┴─┘ └─┴─┘
└─┴─┘
指针 head 指向链表首结点,以下函数的功能是( )。
void fun(struct node * head)
{ struct node * p = head;
while(p)
{
printf("%d ",(*p).data );
p = (*p).next;
break;
}
}
A. 显示并删除单向链表 B. 显示单向链表中的第一个结点的数据
C. 显示单向链表中的所有数据
D. 显示单向链表中除第一个结点外的所有数据
union { int n;
char str[2]; }t; t.n=80; t.str[0]='a'; t.str[1]=0; printf("%d\n", t.n); A. 80 B. a C. 0 D. 97 3. 一个结构体变量占用的内存大小是( )。 A. 占内存容量最大的成员所需容量 B. 各成员所需内存容量之和 C. 第一个成员所需内存容量 D. 最后一个成员所需内存容量 4. 以下程序段的运行结果是( )。 union
相关文档
最新文档