您现在的位置: 中国IT实验室 >> 软件水平考试 >> 特别推荐 >> 文章正文
面向对象程序设计考试心得

中国IT实验室整理  2008-3-7  保存本文  推荐给好友  QQ上看本站  收藏本站


  为统计字符指针s所指字符串包含的某字符的出现次数,必须用一个循环顺序考察整个字符串。由从指针s所指字符串的首字符开始,每考察一个字符后,指针s后移一个字符位置,考察循环直至字符率结束终止。所以填写在空框中的正确代码可写成* S! =‘\ 0’。由于字符串束符‘\ 0’的代码为 8位全0,其值为 0,正确解答也可写成* S!= 0,或更简洁地写成*s.

  「例4」在内存中存储‘A’要占用____字节,存储“A”又要占用____字节。

  由于C语言规定字符只占1个字节,一个具体的字符当然也只占1个字节。字符串“A”要有1个字节用于存储字符‘A’,另需要1个字节存储字符串的结束符,所以它要占用连续的2个字节。

  「例5」设整型变量a、b的值均为3,执行语句:

  b= a++, b++, ++a;

  后,a的值为____,b的值为____.

  该试题的表达式书写形式一般不会直接出现在实际应用程序中,但作为考核考生对有关表达式的计算规则,也不失为是一个很有意义的试题。赋值表达式自右至左计算,而逗号运算符的优先级最低,并且逗号表达式自左至右逐一计算,并以最后子表达式的值为逗号表达式的结果。上述表达式的计算顺序可用以下3个表达式语句等价表示:

  b=a++;b++;++a;

  由以上一系列表达式知,变量b的最终值与其原来值无关,表达式b= a+十是先计算a++。表达式a+十的值是变量a的原先值3,但又让变量a增1后变为4.然后表达式b++又使变量b增1,变成4.而计算++a的值,是让a增1,使a的值变为5.所以上述表达式使变量a的值变为5,b的值变为4.

  如上述表达式改写为:

  b+=(a++,b++,++a);

  请读者回答执行该表达式后,变量a和b的值又分别为多少。

  3.程序分析题

  程序分析题要求考生阅读程序,回答程序的输出结果,或指出程序的功能。回答这类问题,要求考生将自己当作一台假想的计算机,模拟执行序。

  对于这类试题常有两种可用的方法。一是从程序的初值、循环结构、条件等发现程序的规律厂是完全从模拟执行出发读程序,求出程序的输出结果。如采用后一种方法,由于程序执行的动态性,程序中的有关变量,随着程序的执行,变量的值就会不断变化。一般来说,随时记住全部变量的当前值是非常困难的。一个行之有效的方法是用一个变量表,将程序中的全部变量罗列在该表中,某个变量值的变化记录在该变量当前值的栏中,这样就能方便地列出各个变量的动态变化过程。在这里,考生要当心函数形参及函数的局部变量与实参变量及程序的外部全局变量同名的情况。为了区别它们,对于函数形参和局部变量可以标上它所属的函数名,以与同名的实参变量及外部全局变量相区别。由于试题程序总是完成某种有一定意义的计算工作。一般来说,程序的执行过程舍有某种规律存在。如能找出程序的规律,就不需要逐句阅读程序的语句,能直接导出程序的结果。程序的规律从以下几个方面着手:有关变量的初值,特别是数组的初值;程序的循环控制结构,特别是遍历数组的循环,它的循环控制变量将控制数组元素下标的变化;循环体中的语句的条件,一般条件有两种形式,一种是由数组元素值的大小描述,另一种是由元素的下标值描述,前者用于对其值满足某种条件的元素进行指定的计算,后者用于对满足条件的某些位置上的元素进行指定的计算。

  最容易出题,变化也最多的是数组(包括字符串)处理程序,正确解答这类试题要熟练掌握两点:一是引用数组元素的两个等价方法,即用数组首元素指针(数组名)和下标引用数组元素,及通过指向数组元素的指针间接引用数组的元素;二是一些常用的简单算法,如数组或字符串遍历、插入元素或删除元素,以及常用的排序方法等。对于文件处理程序,要注意文件当前的读/写位置,即对于读文件,注意当前读人的数据及前读头位置;对于写文件,要注意当前写入的数据。另外要特别指出的是,通过读程序,能发现程序执行的规律是非常有用的技术。但这个技术的掌握是建立在熟读大量的程序和自己编写过大量程序的基础上的。如一个程序是对数组的前n个元素执行某种操作。考生在阅读这种程序时,不妨假定输入的n值为4或5,将n等于4或5的结果类推到任意的n.

  「例6」阅读下列程序,写出程序运行后的输出结果。

  # include <stdio.h>

  main()

  {int a[][3]={1,2,3,4,5,6,7,8,9};

  int i,j,s1= 0,s2= 0;

  for(i= 0;i<3, i++)

  for(j=0;j<3;j++){

  if(i==j)sl+=a[i][j];

  if(i+j==2) s2+=a[i][j];

  }

  printf(“sl=%ds2=%d\n”, sl,sZ);

  }

上一页  [1] [2] [3] [4] [5] 下一页  





 相关文章  热门文章
没有相关文章

 文章评论


认证培训
热门专题       more
相关下载
论坛新帖
博 客