C语言编程复习资料:找中间数与构建特殊矩阵

需积分: 9 2 下载量 140 浏览量 更新于2024-07-31 收藏 427KB DOC 举报
"2011年的C语言机试题目及答案,包含了50套练习题目,主要针对二级C语言考试。题目涉及程序填空,要求考生完善代码以实现特定功能,如找到数组中排序后的中间数并进行替换,以及构建特定规律的矩阵。" 在C语言中,上机考试常常会涉及到对基本编程概念和算法的掌握,如数组操作、条件判断、循环控制等。以下是对两个给定程序题目的详细解析: 1. 题目一要求在给定的9个正整数数组中找到中间数,并用这个中间数替换掉所有小于它的数。首先,我们需要理解如何找到中间数。代码中使用了两个嵌套循环,外层循环遍历数组的一半,内层循环用于找到当前层的最小值,并将其存储在`k`中。如果`k`不等于`i`,说明需要交换`b[i]`和`b[k]`的位置。在完成排序后,通过`b[N/2]`获取中间数`mid`。接下来,遍历数组`x`,如果元素小于`mid`,则用`mid`替换。这个过程体现了对数组的遍历、排序以及条件判断的应用。 ```c // 完善代码 t=b[i];b[i]=b[k];b[k]=t; mid=b[N/2]; if(x[i]<mid)x[i]=mid; ``` 2. 题目二的目标是创建一个N×N的矩阵,其元素按照特定模式递增填充。矩阵的每一层元素值递增,最外层为1,第二层为2,以此类推。实现这个功能的关键在于正确地控制循环和计算当前层的元素值。可以通过两层嵌套循环来完成,外层循环控制行,内层循环控制列。当前层的元素值由外层循环变量决定。 ```c // 完善代码 for(i=0; i<N; i++) { for(j=0; j<N; j++) { if((i==0)||(j==0)||(i==N-1)||(j==N-1)) // 控制最外层 printf("1 "); else { int layer = max(i, N-i-1); // 计算当前层 int value = layer + 1; // 当前层的值 printf("%d ", value); } } printf("\n"); } ``` 在这个题目中,我们需要注意计算当前层的索引,这可以通过`(i==0)||(j==0)||(i==N-1)||(j==N-1)`这样的条件判断实现,以及计算当前层的值,可以通过`max(i, N-i-1)`确定。 这两个题目展示了C语言中基础的数组操作、条件控制和逻辑推理,这些都是二级C语言考试中的常见考点。通过解答这类题目,考生可以巩固对C语言基础知识的理解和应用能力。