2023 初赛

阅读下述代码,请问修改data的value成员以存3.143.14正确的方式是()。

union Data{
	int num;
	float value;
	char symbol;
};
union Data data;

A.data.value=3.14;

B.value.data=3.14;

C.data->value=3.14;

D.value->data=3.14;

解析:

一道记忆题,“->”用于链表等数据结构,但是union是用点号(“.”)来访问的。所以选A。

错误原因:

对union的学习正在进行中。( 因为讲义里没有关于联合体的讲解,所以有点慢


假设有一个链表的节点定义如下:

struct Node{
	int data;
	Node *next;
};

现在有一个指向链表头部的指针:Node*head。如果想要在链表中插入一个新节点,其成员data的值为4242,并使新节点成为链表中的第一个节点,下面()种操作是正确的?

A.Node*newNode=new Node; nowNode->data=42; newNode->next=head; head=newNode;

B.Node*newNode=new Node; head->data=42; newNode->next=head; head=newNode;

C.Node*newNode=new Node; nowode->data=42; head-next=newNode;

D.Node*newNode=new Node; nowode->data=2; newNode->next=head;

解析:

首先,把*newNode=new Node赋值为new Node;再把data的值赋为4242;其次,把指向下一个的指针指向头结点;最后,把头结点变成新的节点。其他的方法都有误,所以选A。

错误原因:

看错题目了,以为B选项的内容是A选项。以后要看清题目,不要盲目地选择。


一个班级有1010个男生和1212个女生。如果要选出一个33人的小组,并且小组中必须至少包含11个女生,那么有()种可能的组合?

A.14201420

B.17701770

C.15401540

D.22002200

解析:

分情况讨论,具体情况如下:

11个男生:C101C122=660C^1_{10}* C^2_{12}=660

22个男生:C102C121=540C^2_{10}* C^1_{12}=540

没有男生:C123=220C^3_{12}=220

一共有660+540+220=1420660+540+220=1420种排法。故选A。

错误原因:

排列组合的掌握还有待提高。( 虽然我学过,但好像都忘了

谢谢