最容易出题,变化也最多的是数组(包括字符串)处理程序,正确解答这类试题要熟练掌握两点:一是引用数组元素的两个等价方法,即用数组首元素指针(数组名)和下标引用数组元素,及通过指向数组元素的指针间接引用数组的元素;二是一些常用的简单算法,如数组或字符串遍历、插入元素或删除元素,以及常用的排序方法等。对于文件处理程序,要注意文件当前的读/写位置,即对于读文件,注意当前读人的数据及前读头位置;对于写文件,要注意当前写入的数据。另外要特别指出的是,通过读程序,能发现程序执行的规律是非常有用的技术。但这个技术的掌握是建立在熟读大量的程序和自己编写过大量程序的基础上的。如一个程序是对数组的前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);
}
首先将二维数组a的初值写成每行3个元素,由于程序只提供9个初值,a只有3行:
1 2 3
4 5 6
7 8 9
程序用a[i][j]引用a的元素,所以外循环i是控制行的循环,内循环j是控制列的循环,这两重循环控制遍历整个数组 a的全部元素。条件 i==j表示当行下标与列下标相等时,即是 a的主对角钱上的元素时,将它们累计到变量s1,所以s1的值为15.条件i+j==2用于控制行下标与列下标之和为行列下标之和为某个常数的元素是同在某条右高左低斜线上的元素。对于3行3列的二维数组来说,就是副对角线上的元素。将这些元素累计于变量s2,所以s2的值也是15.
「例7」阅读下列程序,简述程序的主要功能。
main()
{ int i,s[10],*p=&s[9];
for(i=0;i<10;i++) scanf(“%d”,&s[i]);
for(;p
| 相关热词搜索 |
