C语言上机试题集:解题攻略
需积分: 9 72 浏览量
更新于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语言的基本语法和逻辑思维。
113 浏览量
2022-07-02 上传
143 浏览量
2022-07-14 上传
143 浏览量
2022-07-02 上传
zjs12345678
- 粉丝: 2
- 资源: 2