a447219047
a447219047
采纳率66.7%
2016-11-19 06:45 阅读 5.4k
已采纳

编写函数fun,求出a到b之内能被7或者11整除

5

题目描述

编写函数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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2016-11-19 07:10
     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]);
    }
    
    点赞 5 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-11-19 07:13

    http://ideone.com/PJRZ9L
    在线验证
    输入 50 100
    输出 55 56 63 66 70 84 88 91 98 99

    点赞 评论 复制链接分享
  • qq_29326201 qq_29326201 2016-11-19 07:26

    #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;
    

    }

    点赞 评论 复制链接分享
  • lishichengyan lishichengyan 2016-11-19 11:49

    #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;
    }

    点赞 评论 复制链接分享
  • LOVE_CODE_LOVE_LIFE HannanKan 2016-11-19 12:06

    要求个数的话数学公式可解,代码如下:
    而且是最快的,要求具体值的话则用楼上的代码遍历即可

     #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;
    }
    
    点赞 评论 复制链接分享

相关推荐