南开大学计算机等级考试上机题目解析

需积分: 9 1 下载量 125 浏览量 更新于2024-07-31 收藏 252KB DOC 举报
"南开大学计算机等级考试上机题,包含两道编程题目,分别为第1题和第2题。第1题要求编写一个函数,找出数组中低于平均分的分数并存储到另一个数组中。第2题要求编写一个函数,找出1到100之间能被7或11整除但不能同时被7和11整除的数字,并存储到数组中。" 在第一题中,我们面对的是一个关于数组处理和计算平均分的问题。题目要求编写一个名为`fun`的函数,接收一个表示成绩的整数数组`score[]`、数组长度`m`以及一个用于存放低于平均分成绩的数组`below[]`。函数的主要任务是计算`score[]`中的平均分,并将所有低于平均分的分数存入`below[]`。给出的解决方案中,首先通过遍历整个`score[]`数组计算平均分`aver`,然后再次遍历数组,将低于平均分的元素存入`below[]`,同时返回低于平均分的分数个数`k`。 ```c intfun(intscore[],intm,intbelow[]) { inti,k=0,aver=0; for(i=0;i<m;i++) aver+=score[i]; aver/=m; for(i=0;i<m;i++) if(score[i]<aver) { below[k]=score[i]; k++; } returnk; } ``` 第二题的目标是找到1到100之间的数字,这些数字可以被7或11整除,但不能同时被7和11整除。为此,我们需要编写一个函数`fun`,它接受一个整数数组`a`来存放结果,并通过指针`n`返回满足条件的数字个数。给出的解答中,使用了一个嵌套的条件判断来检查每个数字是否符合要求。 ```c voidfun(int*a,int*n) { inti,j=0; for(i=2;i<1000;i++) // 注意:范围应从1开始,实际题目要求到100 if((i%7==0||i%11==0)&&i%77!=0) a[j++]=i; *n=j; } ``` 在`main()`函数中,这两个问题都会被测试。对于第一题,创建了一个包含10个元素的数组`score[]`并初始化了一些成绩,然后调用`fun`函数并输出结果。对于第二题,创建了一个同样大小的数组`a[]`,调用`fun`函数后,输出了符合条件的数字个数和这些数字本身。 这两题都是关于算法和数组操作的基础练习,旨在考察考生对C语言基础的掌握程度,包括数组操作、循环、条件判断以及基本的数学计算。解题思路清晰,代码简洁,是提高编程技能的良好示例。