2011年南开C语言编程题解析:求解特定整数与数组操作

需积分: 9 1 下载量 34 浏览量 更新于2024-07-27 收藏 103KB DOC 举报
"2011年南开大学计算机二级C语言考试的100题练习,涵盖了数组、条件判断、循环控制等基础知识。" 在2011年的南开大学计算机二级C语言考试中,有几道题目涉及到基本的编程概念和技巧,主要考察了考生对数组操作、条件判断、循环控制以及函数设计的理解和应用。 1. 第1题要求编写一个函数`fun`,其功能是找出一个包含m个成绩的数组`score`中低于平均分的分数,并将这些分数存储在`below`数组中。该题主要涉及数组遍历、计算平均值以及条件判断。首先,通过一个循环计算平均分,然后再次遍历数组,判断每个元素是否低于平均分,如果满足条件则将其存入`below`数组,并更新计数器`k`。最后返回低于平均分的分数个数。 ```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题的目标是编写一个函数`fun`,找出1到100之间能被7或11整除,但不能同时被7和11整除的数字,并将这些数字放入数组`a`。这道题考察了模运算(取余)和逻辑运算符的运用。使用两个嵌套循环,外层循环遍历2到1000,内层循环用于检查是否符合题目条件。符合条件的数字添加到数组`a`,并通过指针`n`返回个数。 ```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`且不是偶数的数,按从小到大的顺序存入`pp`数组。该题主要考察了整数除法、奇偶性判断以及数组的操作。首先初始化一个数组`t`,存储所有非偶数的整数,接着将能整除`x`的非偶数除数存入`pp`数组,最后通过指针`n`返回除数个数。 ```c void fun(int x, int pp[], int *n) { int i = 1, j = 0, k = 0, *t = pp; for (i = 1; 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. 第4题要求编写一个函数`fun`,统计字符串`tt`中26个小写字母各自的出现次数,并将结果存入`pp`数组。这道题主要涉及字符处理和计数。通过一个循环遍历字符串,对每个字符进行判断,使用`switch`语句来累加对应字母的计数。 ```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; // ... (继续统计其他24个字母) case 'z': pp[25]++; break; } tt++; } } ``` 以上四题分别考察了数组操作、逻辑判断、整数除法和字符处理,这些都是C语言基础编程的重要组成部分。通过对这些题目的解答,考生可以加深对C语言基本语法和程序设计思路的理解。