| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2249 人关注过本帖
标题:面试小题,有基础的同学来做做.无分,纯讨论.
只看楼主 加入收藏
ZQDragon
Rank: 2
等 级:论坛游民
帖 子:30
专家分:39
注 册:2010-6-8
收藏
得分:0 
分析发现:n=1000/7 +1000/11-1000/77;
int ans[n];
考虑到占用n很少,没必要动态分配
简单的思路:
int a=0,b=0,i=0;
while(i<n)
{
     a+=7;
     b+=11;
     if(a>=77&&a%77==0)
     ;
     else
     ans[i++]=a;

     if(b>=77&&b%77==0)
     ;
     else
     ans[i++]=b;
}     
2010-07-05 22:49
笨到家啦
Rank: 2
等 级:论坛游民
帖 子:19
专家分:73
注 册:2010-6-7
收藏
得分:0 
我怎么觉得你们说得那么高深,但我认为答案。。。
n=(int)1000/11+(int)1000/7-(int)1000/77
就OK了,至于程序怎么写,好象就不用再仔细写了。
--------------------
不好意思,没见到楼上的,想删除这一贴,但没找到这按鍵。

[ 本帖最后由 笨到家啦 于 2010-7-5 22:53 编辑 ]
2010-07-05 22:50
suntea
Rank: 2
等 级:论坛游民
帖 子:59
专家分:88
注 册:2010-6-24
收藏
得分:0 
动态数组的来了  欢迎借鉴, 下面可以讨论优化算法了.
程序代码:
#include <stdio.h>
#include <vector>
int fun(std::vector<int>& a,int b)
{
    for(int i=0;i<1000;i++)
    {
        if(i%7==0||i%11==0)
        {
            if(i%7==0&&i%11==0)    continue;
            else
            {
                a.push_back(i);
                b++;
            }
        }
    }
    return b;
}
main()
{
    std::vector<int> aa;
    int n = 0;
    n = fun(aa,n);
    printf("分别是:");
    for(int i=0;i<n;i++)
    {
        printf("%d 、",aa[i]);
    }
    printf("\n个数为:%d\n",n);
    return 0;
}

 
2010-07-05 22:58
束缚袭霜
Rank: 2
等 级:论坛游民
帖 子:21
专家分:30
注 册:2010-7-4
收藏
得分:0 
a=7,b=11,n=0;
while(a<1000 && b<1000){
a<b?a+=7,aa[n++]=a:b+=11,aa[n++]=b;
if(a==b)n--;
}

我是自学的,所以……
2010-07-06 00:10
束缚袭霜
Rank: 2
等 级:论坛游民
帖 子:21
专家分:30
注 册:2010-7-4
收藏
得分:0 
呃,初值赋错了

我是自学的,所以……
2010-07-06 00:11
方廷
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:47
专家分:176
注 册:2010-6-9
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
void main()
{
    //声明变量
    int *aa;
    int n;

    //声明函数fun
    int fun(int *aa);

    //分配空间
    n=1000/7+1000/11-1000/77;
    aa=(int *)malloc(n*sizeof(int));

    //调用函数fun
    n=fun(aa);

    //输出1~1000以内能被7或11整除,但不能同时被7和11整除的所有整数和这些数的个数
    printf("分别是:\n");
    for(int i=0; i<n; i++)
    {
        printf("%4d",aa[i]);
    }
    printf("\n个数为:%d\n",n);

    //释放空间
    free(aa);
}

//定义函数fun
int fun(int *a)
{
    int b=0;
    for(int i=7;i<1000;i++)
    {
        if(i%7||i%11)
        {
            if(!(i%7)||!(i%11))
            {
                a[b]=i;
                b++;
            }
        }
    }

    return b;
}
2010-07-06 00:44
shangerfei
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-5-6
收藏
得分:0 
er二楼的编的不错嘛!
2010-07-06 16:43
starjun14
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:266
专家分:136
注 册:2009-4-26
收藏
得分:0 
学习学习~~
2010-07-06 17:28
bitterain
Rank: 2
等 级:论坛游民
帖 子:19
专家分:70
注 册:2009-11-13
收藏
得分:0 
int fun(int *aa)
{
    int n=-1;
    for(int i=1;i<1001;i++)
    {
        if((i%7==0||i%11==0)&&(i%77!=0))
        {
            n++;
            *(aa+n)=i;
        }
        
    }
    return (n+1);//返回数组元素个数
}
2010-07-07 11:26
linjx0123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
收藏
得分:0 
上面大多数人的做法不好啊,明显效率不高,为啥一定要去求余,用乘法不是更好吗
程序代码:
#include<stdio.h>
#include<stdlib.h>
void main()
{
    int *aa;
    int n;

    //声明函数fun
    int fun(int *aa);

    //分配空间
    n=1000/7+1000/11-1000/77;
    aa=(int *)malloc(n*sizeof(int));

    //调用函数fun
    n=fun(aa);

    //输出1~1000以内能被7或11整除,但不能同时被7和11整除的所有整数和这些数的个数
    printf("分别是:\n");
    for(int i=0; i<n; i++)
    {
        printf("%4d",aa[i]);
    }
    printf("\n个数为:%d\n",n);

    //释放空间
    free(aa);
}


//定义函数fun
int fun(int a[])
{
    int count=0;
    int num=0,a7=1,a11=1;
    while(true)
    {
        int temp1 = 7*a7,
            temp2 = 11*a11;
        if(temp1==temp2){
            a7++;
            a11++;
        }else {
            num=temp1<temp2?temp1:temp2;
            if(num>1000)
                break;
            a[count]=num;
            count++;
            if(temp1==num)
                a7++;
            else
                a11++;
        }
    }
    return count;
}


2010-07-07 17:17
快速回复:面试小题,有基础的同学来做做.无分,纯讨论.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019094 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved