| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2251 人关注过本帖
标题:面试小题,有基础的同学来做做.无分,纯讨论.
只看楼主 加入收藏
suntea
Rank: 2
等 级:论坛游民
帖 子:59
专家分:88
注 册:2010-6-24
结帖率:100%
收藏
 问题点数:0 回复次数:25 
面试小题,有基础的同学来做做.无分,纯讨论.
请编写函数 fun ,它的功能是求出1~1000以内能被7或11整除,但不能同时被7和11整除的所有整数,并将它们保存到数组 aa中,通过n 返回这些数的个数.


稍后给出我写的.
搜索更多相关主题的帖子: 基础 同学 面试 
2010-07-05 21:12
suntea
Rank: 2
等 级:论坛游民
帖 子:59
专家分:88
注 册:2010-6-24
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

int fun(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[b] = i;
                b++;
            }
        }
    }
    return b;
}
main()
{
    int* aa = (int*)calloc(1,sizeof(int));
    int n = 0;
    n = fun(aa,n);
    printf("分别是:");
    for(int i=0;i<n;i++)
    {
        printf("%d 、",aa[i]);
    }
    printf("\n个数为:%d\n",n);
//    free(aa);
    return 0;
}
2010-07-05 21:26
parkour
Rank: 2
等 级:论坛游民
帖 子:63
专家分:39
注 册:2009-1-3
收藏
得分:0 
这个我觉得要考的不是程序的正确性

而是代码的精简和算法的优劣

但是一涉及到这个我就觉得很无助
2010-07-05 21:28
moondark
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:158
注 册:2009-9-6
收藏
得分:0 
int fun(int a,int b)
{
  int n=0;
  int aa[b-a];
  for(i=a;i<=b;i++)
 {
    if(i%77!=0)
    {
       if(i%7==0||i%11==0)
       {
         aa[n]=i;
         n++;
       }
    }
 }
  return n;
}
这里取a=1,b=1000,不过这里浪费了空间,你可以用动态分配数组。。。
2010-07-05 21:30
moondark
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:158
注 册:2009-9-6
收藏
得分:0 
先判断能不能同时被7和11整除可以提高效率。。
2010-07-05 21:32
parkour
Rank: 2
等 级:论坛游民
帖 子:63
专家分:39
注 册:2009-1-3
收藏
得分:0 
if( (i%7==0) || (i%11==0) )

我记得没错的话(i%7==0) 为真的话后面的就不判断了把
2010-07-05 21:35
suntea
Rank: 2
等 级:论坛游民
帖 子:59
专家分:88
注 册:2010-6-24
收藏
得分:0 
  ...
学c基础时候,就tm看热闹了.

现在搞的好多东西都不记得...什么动态数组,那东西怎么建的..
2010-07-05 21:35
pbreak
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:83
专家分:558
注 册:2007-5-10
收藏
得分:0 
int n = 0;
int aa[1000];
int fun()
{
    int i = 1;
    int j = 0;
    while ((j = (i++) * 7) < 1000)
    {
        if( (j % 11) != 0 )
            aa[n++] = j;
        j = j + (4*(i - 1));
        if( (j < 1000) && (j % 7 != 0) )
            aa[n++] = j;
    }
    return n;
}

int main(int argc, char*[])
{

    printf("%d\n",fun());
    for (int i = 0 ; i < n ; ++i)
    {
        printf("%d\t",aa[i]);
    }
    printf("\n");
    return 0;
}
2010-07-05 21:38
suntea
Rank: 2
等 级:论坛游民
帖 子:59
专家分:88
注 册:2010-6-24
收藏
得分:0 
觉得这题考的就是动态数组的使用;

申请aa[1000]  无错,  但是老板肯定不会要这样的人...

谁能来写个Array[]的呢?

2010-07-05 21:43
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
收藏
得分:0 
是不是可以这样算??
先求(int)1000%11得出一个数,然后用这个数向下每减一个数来乘于11是否是7的倍数,如果是,便说明可以给两者整除。

#include "stdio.h"
int main()
{
  int b=0,i,n,;
  n=(int)1000/11;
  int a[n];/*定义数组a大小;*/
  for(i=n;i>=1;i--){
     if(i*11%7==0){
        a[b]=i*11;
        b++;
     }
  }

getch();
}

这样不用从1到1000每一个的试,是不是可以节省CPU?
2010-07-05 21:55
快速回复:面试小题,有基础的同学来做做.无分,纯讨论.
数据加载中...
 
   



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

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