按道理来说这个这个不应该写出来,毕竟初赛那么简单,但是我还是做一下总结,因为我在初赛中还是发现了一些自己依然不了解的知识点。成绩自己预计有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想要复赛参赛费。
需要加强的地方:
- 了解哈夫曼树、二分图、完全图,卡特兰数。
- 指针的运用(TAT指针这种东西真的是千变万化啊)。