2011上半年计算机考试C语言试题解析

需积分: 1 0 下载量 168 浏览量 更新于2024-07-31 收藏 579KB DOC 举报
"2011年上半年的计算机考试试题,主要涵盖C++编程相关的知识点,包括矩阵元素移动和数组处理的编程题目。" 在提供的2011年上半年二级C上机题库中,有两个编程题目,都涉及到数组操作。首先,让我们详细分析第一个程序填空题。 题目要求实现一个函数`fun`,该函数接受一个N×N的矩阵和一个整数m,将矩阵的每一行元素向右移动m个位置,左侧置为0。在给定的代码中,`fun`函数已经定义了一个二维数组`t`来存储矩阵,并有一个循环结构来遍历每一行。我们需要填写三个下划线处的内容来完成功能。 1. 第一处下划线(___1___):此处的循环条件应该是遍历矩阵的所有行,即`i<N`。由于循环变量`i`初始化为0,因此此处无需修改,保持`for(i=0;i<N;i++)`不变。 2. 第二处下划线(___2___):在内层循环中,我们是要将当前元素移到右边的位置,因此`j+1`表示当前元素的右边位置,填入`1`,使得`t[i][j+1]=t[i][j];`。 3. 第三处下划线(___3___):外层循环结束后,我们需要将左侧m个元素置为0。所以此处的`j<`后面应该填入`N-m`,使得`for(j=0;j<N-m;j++)`,这样可以确保只将前m个元素置零。 修复后的代码如下: ```c void fun(int(*t)[N], int m) { int i, j; for (i = 0; i < N; i++) // 不改动 { for (j = N - 1 - m; j >= 0; j--) t[i][j + 1] = t[i][j]; // 填写1 for (j = 0; j < N - m; j++) // 填写3 t[i][j] = 0; } } ``` 第二个题目涉及的函数`fun`需要从输入数组中删除奇数,保留偶数,并返回偶数的个数。这个题目需要两个主要步骤:遍历数组并判断元素是否为偶数,然后重新组织数组。 1. 首先,定义一个计数器`count`来记录偶数的数量,初始化为0。 2. 使用一个`while`循环遍历数组,检查每个元素是否为偶数。如果是偶数,将其添加到新数组的对应位置(即a[0]、a[1]等),并增加计数器`count`。 3. 当遍历完所有元素后,返回计数器`count`作为偶数的个数。 注意,此题目的代码没有给出,因此无法提供具体的代码填充建议。但根据描述,可以自行设计解决方案。 这两个题目都展示了C++编程中基本的数组操作和逻辑判断能力,对于学习C++语言的人来说,理解和解决这些题目是非常基础且重要的。通过练习这样的题目,可以提升对数组、指针和循环结构的理解,以及在实际问题中应用这些概念的能力。