按道理来说这个这个不应该写出来,毕竟初赛那么简单,但是我还是做一下总结,因为我在初赛中还是发现了一些自己依然不了解的知识点。成绩自己预计有66分左右,这让我无限感叹:还是湖南好,不像浙江省90+的初赛线,还让不让人活了。看来湖南除了高考分数线高以外还是有一点优点的。

选择题不是很难,但是有几个比较坑的地方,比如像是链表储存那道题

线性表若采用链表储存结构,要求内存中可用储存单元地址。

A.必须连续。B.部分地址必须连续。C.一定不连续。D.连续不连续均可。

链表虽说每个节点可以分布在不连续的内存地址中但是每一个node中的地址肯定是要连续的。并不知道他说的到底是内存单元还是每个node,于是填了B就错了= =。

不过哈夫曼树、二分图、完全图考试的时候不记得是什么东西去了,到时候去看一下。

问题求解这次比较惨啊,两道都错了TAT,其中的第二题是卡特兰数。

阅读程序中间有一个需要记住的地方,下次一定不能再错。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include <cstdio>
void fun(char *a, char *b){	//这里创建了指针a和b
	a = b;					//这里仅仅只是把b的指针赋值给了a并没有改变地址内的值 
	++ (*a);				//取出a指向地址内的值并使之自增 a->b 
}
int main(void){
	char a, b, *c, *d;
	a = 'A';
	b = 'a';
	c = &a;
	d = &b;
	fun(c, d);				//c和d是两个指针指向a和b 
	printf("%c%c\n", a, b);
    return 0;
}

这里的正确答案是Ab,而不是我所想的ba,如果要是我想的那样代码应该是。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include <cstdio>
void fun(char *a, char *b){	//这里创建了指针a和b
	*a =  *b;				//取出a地址中的值把b中地址的值赋值给a,即 A->a 
	++ (*a);				//取出a指向地址内的值并使之自增 a->b 
}
int main(void){
	char a, b, *c, *d;
	a = 'A';
	b = 'a';
	c = &a;
	d = &b;
	fun(c, d);				//c和d是两个指针指向a和b 
	printf("%c%c\n", a, b);
    return 0;
}

最后就是这次的完善程序真的是不能再简单了。都已经都已经简单到让一些神犇怀疑CCF想要复赛参赛费

需要加强的地方:

  1. 了解哈夫曼树、二分图、完全图,卡特兰数。
  2. 指针的运用(TAT指针这种东西真的是千变万化啊)。