题目描述
编写函数fun,求出a到b之内能被7或者11整除,但不能同时被7和11整除的所有正数,并将他们放在数组中,函数返回这些数的个数。编写main函数,输入a,b的值并调用函数进行运算。
编写函数fun,求出a到b之内能被7或者11整除
输入
从键盘输入a,b的值(1<=a<=b<1000),用以下格式字符串输入a,b的值:
scanf("%d%d",&a,&b);
输出
用以下格式字符串输出数组中的元素的值:"%d "(注意:%d后面有一个空格)
样例输入1:
1 20 <回车>
样例输出1:
7 11 14
样例输入2:
50 100 <回车>
样例输出2:
55 56 63 66 70 84 88 91 98 99
int fun(int a, int b, int arr[])
{
int n = 0;
for (int i = (a > 0 ? a : 1); i <= b; i++)
{
if ((i % 7 == 0 || i % 11 == 0) && (i % 77 != 0))
{
arr[n] = i;
n++;
}
}
return n;
}
int main()
{
int a, b;
int * arr = (int *)malloc(sizeof(int) * (a - b + 1));
scanf("%d%d",&a,&b);
int n = fun(a, b, arr);
for (int i = 0; i < n; i++) printf("%d ", arr[i]);
}
#include
#include
#include
#include
using namespace std;
int fun(int a, int b, int[]);
int main()
{
printf("请输入两个数:\n");
int a = 0;
int b = 0;
int buf[1024] = {0};
scanf("%d%d", &a, &b);
int ret = fun(a, b, buf);
printf("符合条件的个数有%d个\n", ret);
printf("符合条件的数是:\n");
for(int i = 0; i < ret; i++)
{
printf("%d ", buf[i]);
}
printf("\n");
return 0;
}
int fun(int a, int b, int buf[])
{
int num = 0;
for (int i = a; i < b; i++)
{
if ((i % 7 == 0 && i % 11 != 0) || (i % 7 != 0 && i % 11 == 0))
{
buf[num] = i;
num++;
}
}
return num;
}
http://ideone.com/PJRZ9L
在线验证
输入 50 100
输出 55 56 63 66 70 84 88 91 98 99
#include
int count=0;
int *fun(int a,int b);
int main(void){
int a,b,index;
int *result;
scanf("%d%d",&a,&b);
result=fun(a,b);
for(index=0;index<count;index++)
printf("%d ",result[index]);
}
int *fun(int a,int b){
int array[1000];
int num;
for(num=a;num<=b;num++){
if((num%7==0)||(num%11)==(0&&num%77!=0))
array[count++]=num;
}
return array;
}
要求个数的话数学公式可解,代码如下:
而且是最快的,要求具体值的话则用楼上的代码遍历即可
#include<stdio.h>
#include<string.h>
int fun(int a1, int a2){
int k1 = ((a1 % 7 == 0) ? a1 : (a1 + 7 - a1 % 7)),
k2 = ((a1 % 11 == 0) ? a1 : (a1 + 11 - a1 % 11)),
k3= ((a1 % 77 == 0) ? a1 : (a1 + 77 - a1 % 77));
int s1 = ((a2 - a2 % 7) - k1) / 7 + 1,
s2 = ((a2 - a2 % 11) - k2)/ 11 + 1,
s3 = ((a2 - a2 % 77)-k3) / 77 + 1;
return s1 + s2 - s3 * 2;
}
int main(){
int a, b;
scanf_s("%d %d", &a, &b);
printf("%d", fun(a, b));
return 0;
}