17、请编写函数fun,它的功能是: 求出 1 到 1000 之间能被 7 或11整除、但不能同时被 7 和 11 整除的所有整数并将它们放在a所指的数组中,通过 n 返回这些数的个数。 用c语言并且用函数调用不能使用初始化
时间: 2024-03-12 08:42:53 浏览: 69
好的,下面是符合要求的C语言函数fun的实现代码:
```c
#include <stdio.h>
int fun(int *a, int size) {
int n = 0;
for (int i = 1; i <= 1000; i++) {
if ((i % 7 == 0 || i % 11 == 0) && !(i % 7 == 0 && i % 11 == 0)) {
if (n < size) {
a[n++] = i;
} else {
printf("Error: The size of array a is not enough!\n");
break;
}
}
}
return n;
}
int main() {
int a[1000];
int n = fun(a, sizeof(a) / sizeof(int));
printf("The number of integers: %d\n", n);
printf("The integers are: ");
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
该函数的参数为一个指向整型数组的指针a和数组的大小size。函数内部遍历1到1000之间的所有整数,如果满足条件“能被7或11整除、但不能同时被7和11整除”,就将该整数保存到数组a中,并将n的值加1。如果数组a已经存满了所有符合条件的整数,就输出一个错误信息并退出循环。最后函数返回保存到数组中的整数的个数。
在主函数中,我们定义一个长度为1000的整型数组a,并将其作为参数传递给函数fun。为了防止数组溢出,我们还将数组的大小通过sizeof运算符动态计算得到,并作为参数传递给函数。最后,我们输出符合条件的整数的个数和所有整数。
值得注意的是,由于本题要求不能使用初始化,因此我们在函数内部需要判断数组a是否已经存满了所有符合条件的整数,以避免数组溢出。
阅读全文