06年南开大学C语言上机试题与解答

需积分: 3 2 下载量 72 浏览量 更新于2024-08-02 收藏 88KB DOC 举报
"06年南开大学C语言上机试题及解题方案" 这篇资料包含的是四道C语言编程题目,旨在帮助学习者巩固C语言基础知识。以下是每道题目的详细解析: 1. 第1题:计算低于平均分的成绩 这道题目要求编写一个名为`fun`的函数,该函数接受一个整数数组`score`,表示m个人的成绩,以及一个整数数组`below`,用于存放低于平均分的成绩。函数返回值为低于平均分的人数。实现的关键在于计算平均分和遍历数组,将低于平均分的成绩存储到`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题:找出能被7或11整除但不能同时被7和11整除的数 本题要求编写函数`fun`,该函数返回一个整数数组`a`,其中包含1到100内符合要求的数,并通过指针`n`返回这些数的个数。关键在于使用条件判断找到符合条件的数。 ```c void fun(int *a, int *n) { int i, j = 0; for (i = 2; i < 100; i++) if ((i % 7 == 0 || i % 11 == 0) && i % 77 != 0) a[j++] = i; *n = j; } ``` 3. 第3题:找出能整除x且非偶数的数 题目要求编写`fun`函数,它接收一个整数`x`,一个整数数组`pp`,以及一个指针`n`,返回能整除`x`且不是偶数的整数,并按从小到大的顺序存储在`pp`数组中。这里需要注意筛选出非偶数的因子。 ```c void fun(int x, int pp[], int *n) { int i = 1, j = 0, k = 0, *t = pp; for (i = 1; i <= x; i++) // 从1开始,因为0不是因子 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题:统计字符串中26个英文字母出现的次数 此题要求编写`fun`函数,输入一个字符串`tt`,输出一个整数数组`pp`,数组中每个元素代表对应字母('a'至'z')在字符串中的出现次数。通过`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; case 'c': pp[2]++; break; // ... 重复上述模式,直到 'z' case 'z': pp[25]++; break; } tt++; } } ``` 这四道题目涵盖了数组操作、循环遍历、条件判断、函数参数传递、计算平均值、整数因子查找、字符处理等多个C语言基础知识点,对于学习者来说,通过解决这些问题可以有效提高C语言编程能力。