2012年南开100
1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 答案: int fun(int score[],int m,int below[]) { int i,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++; } return k; } 2: 第2题 请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。 答案: void fun(int *a, int *n) { int i,j=0; for(i=2;i<1000;i++) if ((i%7==0 || i==0) && iw!=0) a[j++]=i; *n=j; } 3: 第3题 请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 答案: void fun(int x, int pp[ ], int *n) { int i=1,j=0;k=0,*t=pp; for(i=0;i<=x;i++) if(i%2!=0) { t[j]=I; j++; } for(i=0;i<j;i++) if(x%t[i]==0) { pp[k]=t[i]; k++; } *n=k; } 【知识点详解】 1. 计算平均值与筛选数组元素: 在第一题中,我们需要计算数组`score`中所有元素的平均值,并找出低于平均分的元素存储到`below`数组中。这个过程涉及了数组操作、循环迭代以及条件判断。通过遍历数组并累加成绩来计算平均值,然后再次遍历数组,如果当前元素小于平均值,则将其存入`below`数组。最后返回低于平均分的元素个数。 2. 满足特定条件的数的筛选: 第二题要求找到1到100之间能被7或11整除,但不能同时被7和11整除的数。这里使用了两个嵌套循环,外层循环遍历1到1000,内层循环用于检查数是否满足条件。通过`if`语句判断当前数除以7、11的余数,同时确保它不能被7和11的最小公倍数77整除。符合条件的数存储到数组`a`中,并通过`n`返回数量。 3. 找出非偶数的整除数: 第三题的任务是找出能整除给定数`x`且非偶数的整数。初始化一个数组`t`用于临时存储非偶数,再遍历1到`x`,筛选出非偶数添加到`t`。接着,遍历`t`数组,检查每个元素是否能整除`x`,若能则添加到结果数组`pp`中。最后返回`pp`数组的大小即满足条件的数的个数。 4. 字符串中字母频率统计: 在第四题中,我们需要统计字符串`tt`中每个小写字母出现的次数。为此,定义了一个整型数组`pp`用于存储计数,遍历字符串,根据字符转换为数组下标来增加相应的计数。使用`switch`语句实现字母到下标的映射。 5. 寻找素数: 第五题要求找出大于`m`且紧邻的`k`个素数。从`m+1`开始遍历,检查每个数是否为素数,通过一个内层循环判断是否有因子,若有则非素数,否则累加计数。当找到`k`个素数时,将其存入`xx`数组并结束搜索。 6. 删除字符串中的指定字符: 最后一题要求创建一个函数,删除字符串中指定下标的字符。输入参数包括原始字符串`a`,目标字符串`b`,以及要删除的字符的下标`n`。函数需要复制`a`到`b`,跳过指定下标的字符。此题需要理解字符串的本质,即以空字符`\0`结尾,并注意处理边界条件,确保正确复制和删除字符。 以上题目涉及的C语言知识点包括:数组操作、循环结构(for和while)、条件判断(if和switch)、指针操作、字符串处理、数学运算(如取模、平均值计算)以及基本的算法设计(如筛选、统计)。这些知识点是C语言编程的基础,对理解和解决实际问题至关重要。
剩余23页未读,继续阅读
- shenjie12062013-05-13解答还不错,可以,有单步注释更好
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助