题目:编写一个函数,求1~m之间(含m)能被7或11整除的所有整数并放在数组a中,在main函数中输出这些数和这些数的个数。
例如:若m的值为50,则程序输出:
7 11 14 21 22 28 33 35 42 44 49
总数:11
思路:
- 声明一个数组
a
存储1到50的整数。 - 使用循环填充数组,每个数组元素的值为数组下标加1。
- 输出数组中的元素,每行显示5个。
- 使用指针
p
遍历数组,调用函数hanser
判断是否能被7或11整除。 - 如果能被整除,输出该元素,同时递增
t
计数器。 - 输出符合条件的整数的个数
t
。
代码:
#include <stdio.h>
#define m 50//个数
bool hanser(int* p1)
{
bool f = false;
if (*p1 % 7 == 0 || *p1 % 11 == 0)
f = true;
return f;
}
void main()
{
int a[m], i;
bool f;
int* p = a, t = 0;//t为总数
for (i = 0; i < m; i++)
{
*(p + i) = i + 1;
printf("%5d", *(p + i));
if ((i + 1) % 5 == 0) printf("\n");
}
printf("能被7或11整除的所有整数有: \n");
p = a;
for (i = 0; i < m; i++)
{
f = hanser(p);
if (f)
{
t++;
printf("%5d", *p);
}
p++;
}
printf("\n");
printf("t=%d", t);
}
-
宏定义:
- 使用
#define m 50
定义了一个宏,表示整数数组的个数。
- 使用
-
函数
hanser
:- 定义了一个返回布尔值的函数
hanser
,接受一个整数指针作为参数。 - 函数判断指针所指向的整数是否能被7或11整除,如果可以返回
true
,否则返回false
。
- 定义了一个返回布尔值的函数
-
主函数 (
main
):- 声明一个整数数组
a
,用于存储1到50的整数。 - 使用指针
p
指向数组的首地址,同时声明变量t
用于存储满足条件的整数的个数。
- 声明一个整数数组
-
填充数组并输出:
- 使用循环填充数组
a
,同时输出数组中的元素,每行显示5个。 - 每个数组元素的值为数组下标加1。
- 使用循环填充数组
-
查找能被7或11整除的整数:
- 重新将指针
p
指向数组的首地址,使用循环遍历数组。 - 调用函数
hanser
判断当前元素是否能被7或11整除。 - 如果能被整除,输出该元素,并递增
t
计数器。
- 重新将指针
-
输出符合条件的整数个数:
- 输出
t
的值,表示满足条件的整数的个数。
- 输出