切换到宽版
  • 19888阅读
  • 74回复

[等级考试]二级C考试专用贴 [复制链接]

上一主题 下一主题
离线shepherd
发帖
921
啄木币
962
鲜花
230
只看该作者 45楼 发表于: 2007-03-09
结构体和公用体部分,首先要说明的是:不要在链表上花太多时间!你不明白是因为你对指针不熟悉,其实链表也就是个一维指针而已.还是回头看指针部分吧
总体来说,如果对指针搞透了,结构体部分基本没有什么太难的.重点看11.6节
公用体和枚举,出题都比较少,做几套模拟题就行了.
离线shepherd
发帖
921
啄木币
962
鲜花
230
只看该作者 46楼 发表于: 2007-03-15
关于结构体变量的赋初值,一定要注意一下。除非是在定义的时候直接赋值,否则结构体变量是不能整体赋值的。
比如:
struct student
{
long int number;
char name[10];
}me = { 10000, "zhangli" };
或者
me.number = 10000;
me.name = "zhangli";
都是正确的。
但是写成这样me = { 10000, "zhangli" }; 则是错误的
离线shepherd
发帖
921
啄木币
962
鲜花
230
只看该作者 47楼 发表于: 2007-03-15
指向结构体数组的指针,重点关注一下引入“->”符号后的优先级和对应的运算意义。
270页有两点的注意事项,仔细理解一下吧。
有关结构体指针的参数传递,请看例子11.6
共用体和枚举部分,出题很少的。
typedef部分,通常出一个题吧。要习惯它那种奇怪的定义方法,呵呵。
离线shepherd
发帖
921
啄木币
962
鲜花
230
只看该作者 48楼 发表于: 2007-03-15
位运算通常就是练习二进制,没有太深的东西,以二级的水平大概不会明白位运算的强大吧呵呵。
位段要注意C中的数据类型定义。比如TurboC中INT类型是16位(如果是在WINDOWS的编译环境中,INT一般是32位),位段往往是同具体的编译环境联系在一起的。
文件部分不说了,记住fread和fwrite就可以了。
离线shepherd
发帖
921
啄木币
962
鲜花
230
只看该作者 49楼 发表于: 2007-03-15
最后以一个转贴结束这个帖子吧,呵呵。
这个内容二级考试不会考的,目的是让大家了解C的博大精深。

常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。因此,定义或说明常类型时必须进行初始化。

  一般常量和对象常量

  1. 一般常量

  一般常量是指简单类型的常量。这种常量在定义时,修饰符const可以用在类型说明符前,也可以用在类型说明符后。如:

  int const x=2;

  或

  const int x=2;

  定义或说明一个常数组可采用如下格式:

  <类型说明符> const <数组名>[<大小>]…

  或者

  const <类型说明符> <数组名>[<大小>]…

  例如:

  int const a[5]={1, 2, 3, 4, 5};

  2. 常对象

  常对象是指对象常量,定义格式如下:

  <类名> const <对象名>

  或者

  const <类名> <对象名>

  定义常对象时,同样要进行初始化,并且该对象不能再被更新,修饰符const可以放在类名后面,也可以放在类名前面。

  常指针和常引用

  1. 常指针

  使用const修饰指针时,由于const的位置不同,而含意不同。下面举两个例子,说明它们的区别。

  下面定义的一个指向字符串的常量指针:

  char * const prt1 = stringprt1;

  其中,ptr1是一个常量指针。因此,下面赋值是非法的。

  ptr1 = stringprt2;

  而下面的赋值是合法的:

  *ptr1 = "m";

  因为指针ptr1所指向的变量是可以更新的,不可更新的是常量指针ptr1所指的方向(别的字符串)。

  下面定义了一个指向字符串常量的指针:

  const * ptr2 = stringprt1;

  其中,ptr2是一个指向字符串常量的指针。ptr2所指向的字符串不能更新的,而ptr2是可以更新的。因此,

  *ptr2 = "x";

  是非法的,而:

  ptr2 = stringptr2;

  是合法的。

  所以,在使用const修饰指针时,应该注意const的位置。定义一个指向字符串的指针常量和定义一个指向字符串常量的指针时,const修饰符的位置不同,前者const放在*和指针名之间,后者const放在类型说明符前。

  2. 常引用

  使用const修饰符也可以说明引用,被说明的引用为常引用,该引用所引用的对象不能被更新。其定义格式如下:

  const <类型说明符> & <引用名>

  例如:

  const double & v;

  在实际应用中,常指针和常引用往往用来作函数的形参,这样的参数称为常参数。

  在C++面向对象的程序设计中,指针和引用使用得较多,其中使用const修饰的常指针和常引用用得更多。使用常参数则表明该函数不会更新某个参数所指向或所引用的对象,这样,在参数传递过程中就不需要执行拷贝初始化构造函数,这将会改善程序的运行效率。

  下面举一例子说明常指针作函数参数的作法。

#include
const int N = 6;
void print(const int *p, int n);

void main()
{
int array[N];
for (int i=0; i cin>>array;
print(array, N);
}

void print(const int *p, int n)
{
cout<<"{"<<*p;
for (int i=1; i cout<<","<<*(p+i);
cout<<"}"< }


  常成员函数

  使用const关键字进行说明的成员函数,称为常成员函数。只有常成员函数才有资格操作常量或常对象,没有使用const关键字说明的成员函数不能用来操作常对象。常成员函数说明格式如下:

  <类型说明符> <函数名> (<参数表>) const;

其中,const是加在函数说明后面的类型修饰符,它是函数类型的一个组成部分,因此,在函数实现部分也要带const关键字。下面举一例子说明常成员函数的特征。

#include
class R
{
public:
R(int r1, int r2) { R1=r1; R2=r2; }
void print();
void print() const;
private:
int R1, R2;
};

void R::print()
{
cout< }

void R::print() const
{
cout< }

void main()
{
R a(5, 4);
a.print();
const R b(20, 52);
b.print();
}


  该例子的输出结果为:

  5,4
  20;52

  该程序的类声明了两个成员函数,其类型是不同的(其实就是重载成员函数)。有带const修饰符的成员函数处理const常量,这也体现出函数重载的特点。

  常数据成员

  类型修饰符const不仅可以说明成员函数,也可以说明数据成员。

  由于const类型对象必须被初始化,并且不能更新,因此,在类中说明了const数据成员时,只能通过成员初始化列表的方式来生成构造函数对数据成员初始化。

  下面通过一个例子讲述使用成员初始化列表来生成构造函数。

#include
class A
{
public:
A(int i);
void print();
const int &r;
private:
const int a;
static const int b;
};

const int A::b=10;
A::A(int i):a(i), r(a)
{
}

void A::print()
{
cout< }

void main()
{
A a1(100), a2(0);
a1.print();
a2.print();
}


  该程序的运行结果为:

  100:10:100
   0:10:0

  在该程序中,说明了如下三个常类型数据成员:

  const int & r;

  const int a;

  static const int b;

  其中,r是常int型引用,a是常int型变量,b是静态常int型变量。

  程序中对静态数据成员b进行初始化。

  值得注意的是构造函数的格式如下所示:

  A(int i):a(i),r(a)
  {
  }

  其中,冒号后边是一个数据成员初始化列表,它包含两个初始化项,用逗号进行了分隔,因为数据成员a和r都是常类型的,需要采用初始化格式。
离线月夜冷霜
发帖
184
啄木币
424
鲜花
36
只看该作者 50楼 发表于: 2007-03-18
引用第9楼shepherd2006-09-12 08:40发表的:先大多数考生是栽在上机上,原因也很简单:没有充足的上机时间保证。即时碰巧抽到的题你做过,但是由于缺乏调试经验,也很难保证就能全对。

太正确了.问题是上机操作怎么过呢?问lz?谢谢!!
有高人说在八号楼的机子上有的,在那呢?
离线shepherd
发帖
921
啄木币
962
鲜花
230
只看该作者 51楼 发表于: 2007-03-21
对于上机,我只能说上机的时间越多,把握越大;其次才是方法的问题。
从网上多搜几套上机题,比较一下你就会发现,其实也就那么几类。
离线抱琴
发帖
1484
啄木币
0
鲜花
194
只看该作者 52楼 发表于: 2007-04-30
成绩什么时候出来???
发帖
500
啄木币
592
鲜花
88
只看该作者 53楼 发表于: 2007-05-28
07年9月的考试好象已经可以报名了,但不知何时到哪报名啊?
离线shepherd
发帖
921
啄木币
962
鲜花
230
只看该作者 54楼 发表于: 2007-05-29
通常是考试前四个月就开始报名了,具体的时间各个考点可能有所不同。
想报的XDJM可以到南区问一下。
最近事情比较多,回答问题有些慢呵呵
离线qmsummerz
发帖
84
啄木币
302
鲜花
13
只看该作者 55楼 发表于: 2007-06-13
到底是先考二级好还是先考三极好呢?
离线qmsummerz
发帖
84
啄木币
302
鲜花
13
只看该作者 56楼 发表于: 2007-06-14
二级证的有效期是多久啊?
离线shepherd
发帖
921
啄木币
962
鲜花
230
只看该作者 57楼 发表于: 2007-06-14
怎么考是你自己决定的事情啦,根据自己的实际情况来
有效期的事情,没有见过正式的说法,应该是不存在有效期的
离线shepherd
发帖
921
啄木币
962
鲜花
230
只看该作者 58楼 发表于: 2007-06-14
07年9月国家计算机等级考试报名时间地点

6月2号到6月26号,南区主楼8楼,周5下午,周6周日白天都可报名,什么都不用带(除了72元报名费)!

这个是转贴,我复制过来了
发帖
427
啄木币
391
鲜花
35
只看该作者 59楼 发表于: 2007-07-25
22楼的不会哦 解释一下吧
快速回复
限100 字节
 
上一个 下一个