C语言上机试题集:解题攻略

需积分: 9 8 下载量 128 浏览量 更新于2024-08-02 收藏 255KB DOC 举报
"这是一份针对C语言编程的上机试题集,包含了100道题目,旨在帮助学习者巩固和提升C语言的实际操作能力,特别是对于数组、条件判断、循环控制、函数运用等基础知识的掌握。" 1: 第1题 此题要求编写一个名为`fun`的函数,用于找出数组`score`中低于平均分的所有分数并存储在`below`数组中。首先计算数组`score`的平均分`aver`,然后遍历数组,如果当前元素小于平均分,将其存入`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`中。函数返回这些数的个数`n`。通过两个嵌套的循环实现,外层循环遍历1到100,内层循环检查能否被7和11整除,以及不能被77整除。 ```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`中,通过指针`n`返回这些除数的个数。这里先筛选出所有非偶数,然后检查它们是否能整除`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: 第4题 这题要求编写`fun`函数,统计输入字符串`tt`中每个小写字母出现的次数,结果存储在`pp`数组中。利用`switch`语句逐个处理字符,根据字母'a'到'z'的顺序累加对应的`pp`数组元素。 ```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语言的基本语法和逻辑思维。