2010年二级C语言考试重点题解

需积分: 9 8 下载量 28 浏览量 更新于2024-10-27 收藏 94KB DOC 举报
"这是一个针对2010年二级C语言考试的练习题目集,包含了四个不同的编程题目,分别涉及计算低于平均分的分数、找出特定条件的整数、提取非偶数除数以及统计字符串中字母出现的次数。" 在C语言编程中,这四个题目覆盖了基本的数据操作、循环控制、条件判断以及数组处理等核心知识点。 1. 第1题要求编写一个函数`fun`,用于计算数组中低于平均分的分数。这个函数首先通过遍历整个数组求出平均分,然后再次遍历数组,将低于平均分的分数存储到另一个数组`below`中。这涉及到数组操作、循环控制、条件判断以及简单的数学运算。 ```c 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题要求找出1到100之间能被7或11整除,但不能同时被7和11整除的数。这个函数使用了一个双重条件判断,通过循环遍历1到100的整数来实现。这是对整数处理和条件判断的练习。 ```c void fun(int *a, int *n) { int i, j = 0; for (i = 2; i < 1000; i++) { if ((i % 7 == 0 || i % 11 == 0) && i % 77 != 0) { a[j++] = i; } } *n = j; } ``` 3. 第3题的`fun`函数需要找到所有能整除给定数`x`且本身不是偶数的除数。这里需要对数组的操作和整数性质的运用。函数首先创建一个临时数组记录非偶数,然后筛选出能整除`x`的数。 ```c 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; } ``` 4. 最后一题`fun`函数统计字符串`tt`中每个小写字母出现的次数。这里运用了字符转换和switch-case语句,通过对字符串逐字符处理,更新对应的计数数组。 ```c void fun(char *tt, int pp[]) { int i; for (i = 0; i < 26; i++) { pp[i] = 0; } while (*tt) { switch (*tt) { case 'a': pp[0]++; break; case 'b': pp[1]++; break; // ... 继续处理其他字母 case 'z': pp[25]++; break; } tt++; } } ``` 这些题目展示了C语言的基础编程技巧,包括数组、指针、循环、条件判断、函数定义与调用等,对于学习和准备二级C语言考试的学生来说,是非常有价值的练习。通过解决这些问题,学生可以增强对C语言的理解和编程能力。