用c语言编写函数fun,求出a到b之内能被7或者11整除,但不能同时7和11整除的所有正数,并将它们放在数组中,函数返回这些数的个数。编写main函数,输入a,b的值并调用函数fun进行运算。
时间: 2024-12-12 21:18:00 浏览: 24
C语言程序设计-计算出k以内最大的10个能被13或17整除的自然数之和;(k〈3000);.c
5星 · 资源好评率100%
在C语言中,你可以编写如下的`fun`函数来完成这个任务:
```c
#include <stdio.h>
int* fun(int a, int b) {
int count = 0;
int num = a; // 开始从a遍历
int* arr = (int*)malloc((b - a + 1) * sizeof(int)); // 为存储结果分配内存
while (num <= b) {
if (num % 7 == 0 || num % 11 == 0) { // 判断数字是否符合条件
if (num % 7 != 0 && num % 11 != 0) { // 如果不是7和11的倍数
arr[count] = num; // 将数字存入数组
count++;
}
}
num++; // 移动到下一个数字
}
arr[count] = '\0'; // 添加空字符作为数组结束标记
return arr;
}
// 主函数 main
int main() {
int a, b;
printf("请输入范围的起始值(a): ");
scanf("%d", &a);
printf("请输入范围的结束值(b): ");
scanf("%d", &b);
int* result = fun(a, b); // 调用fun函数
if (result) {
printf("符合条件的数字有:\n");
for (int i = 0; result[i] != '\0'; i++) {
printf("%d ", result[i]);
}
printf("\n共有%d个这样的数字.\n", count);
free(result); // 释放内存
} else {
printf("函数运行错误!\n");
}
return 0;
}
```
在这个程序中,我们首先创建了一个函数`fun`,它接收两个参数a和b,然后在给定范围内检查每个数字是否满足条件。符合条件的数字会被添加到动态分配的数组中,最后返回该数组以及其中元素的数量。在主函数`main`中,我们获取用户输入的a和b,调用`fun`函数,并处理返回的结果。
阅读全文