首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 今天的笔试题(分享) [已结贴,结贴人:smartdrvsky]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-29 18:47:55 楼主
    题1:
    int a = 10;
    int b = a++;
    int c = ++a;
    int d = 10 * a++;
    b = ? c = ? d = ?

    题2:
    已经整型数组a[10],写一个算法实现将数组数据由大至小排列

    题3:
    以下代码能否输出正确结果,如果不能,请说明理由
    # include stdio.h
    # include stdlib.h

    void getmemory(char *p)
    {
        p = NLL;
        p = (char* )malloc(100);
        memcpy("hello world",10);
    }
    void main()
    {
        char *str;
        getmemory(str);
        printf(%d,str);
    }

    题4
    已知某医疗机构总人数为16,不管是否包括A,下列情况总是成立
    a:护士人数多于医生人数
    b:男医生人数多于男护士
    c:女医生人数小于女护士
    d:女医生至少有一人
    问A的性别和职业

    题5
    用C语言写一个函数求子串在主串的的位置,不区分大小写
    例(acbcd,bc)返回 2
    (abcde,De)返回3
    (abcdbC,bc)返回4
    函数体 int Index(str* source,str* find)

    题6
    已经结构体
    struct linknode
    {
        int iData;
        struct linknode* pNext; 
    }
    写一个函数删除值为n的结点,如果头节点为空,返回NULL,否则返回该结点指针
    函数体
    linknode* deletenode(linknode* pHead, int n)

    题7
    已知第一行与第二行相加结果为第三行
    D O N A L D
    G E R A L D
    -----------
    R E B O R T
    其中D = 5 ,每个字母代表0~9中的一个数,问这些字母代表什么


    这些题是我下午在华科笔试的一套题,任记忆拿出来分享,有兴趣的说下自己的答案,呆会我把自己的结果与大伙相比。
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • VBSpine
    • 等级:
    发表于:2008-03-29 19:14:171楼 得分:0
    都不是很难,楼主要是觉得自己对了,那就应该是对的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-29 19:26:572楼 得分:0
    楼上的在北京,鉴定完毕,重点做一下第六题,楼上的,谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-29 21:37:483楼 得分:0
    D O N A L D
    G E R A L D
    -----------
    R E B O R T

    d=5
    ->
    t=0

    o+e=e? t=0 ->e!=0
    e=1
    o=9
    ->a=4

    r%2==1
    r->[3,7]
    r>5
    ->r=7
    ->l=8,g=2

    n,b ->[3,6]
    n=6
    b=3

    5 9 6 4 8 5
    2 1 7 4 8 5
    -----------
    7 1 3 9 7 0


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-29 22:33:184楼 得分:0
    错了
    楼上的
    应该是
    596485
    127485
    723970
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-29 22:38:215楼 得分:0
    路过看看.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 00:52:366楼 得分:0
    luguo
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 09:09:287楼 得分:0
    等待答案
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 09:26:398楼 得分:0
    就是看看,高手们给坐坐吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bm1408
    • 等级:
    发表于:2008-03-30 09:52:469楼 得分:0
    我C++用了三年,学了4年,
    比起你来,我真是......唉
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 10:50:1310楼 得分:0
    ls要跟谁比呢?!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 11:02:5211楼 得分:0
    linkNode * deleteNode(linkNode * pHeader,int n)
    {
      linkNode * temp;
      for(temp = pHeader;temp->pNext != NULL;temp = temp->pNext)
      {
          if(temp->iData == n)
            return temp;
      }
      return NULL;
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 13:11:5312楼 得分:0
    6.
    C/C++ code
    linkNode * deleteNode(linkNode * pHeader,int n) { if(!pHead) return NULL; linkNode *pfirst,*p; for(p=pHeader;p->pNext!=NULL;pfirst=p,p=p->pNext;) { if(p->iData==n) { pfirst->pNext=p->pNext; return temp; } } return NULL; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 16:34:5213楼 得分:0
    若头节点的值为n的话:pHeader->iData==n, 程序是不对的,要另外考虑,且pfirst->pNext=p->pNext;会core dump的

    -----------------------------------------------------------------
    引用 12 楼 studyall123 的回复:
    6.

    C/C++ codelinkNode * deleteNode(linkNode * pHeader,int n)
    {
        if(!pHead)
          return NULL;
        linkNode *pfirst,*p;
        for(p=pHeader;p->pNext!=NULL;pfirst=p,p=p->pNext;)
          {
               
                if(p->iData==n)
                {
                    pfirst->pNext=p->pNext;
                    return temp;
                }
          }
        return NULL;
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 17:42:5314楼 得分:0
    我也感觉都不是很难,我这烂的水平都能做大半.....继续学习ING
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 17:45:0515楼 得分:0
    -_- 我觉得很简单  没想到我都会做 我还是高中生 -_-!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 18:19:4516楼 得分:0
    第七题我的思路:
    D=5&&T=0->R%2=1;                                          ///////D=5,T=0
    O!=0->O+E=10+E-1->O=9;                                /////////T=0.D=5,O=9
    (A+A)%10=9或者9-1。。。此处可分开讨论结果A=4;                //////T=0,A=4,D=5,O=9
    则L+L=10+R-1,
    D+G+1=R"这里不考虑溢出"即5+1+G=R,R=7或者8,但是R%2=1->R=7,G=1;////T=0,G=1,A=4,D=5,R=7,O=9
    L+L+1=10+R->L=8                                          ////T=0,G=1,A=4,D=5,R=7,L=8,O=9

    到此刻还有{B,E,N}未定{2,3,6}未出
    N+R=B+10->N+7=B+10->N=B+3->N=6,B=3->E=2;          ////T=0,G=1,E=2,B=3,A=4,D=5,N=6,R=7,L=8,O=9
                      596485
                      127485
                      -------
                      723970

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 19:13:2617楼 得分:0
    void sort(int *arr)
    {
    int temp = 0;
    for (int i = 0;i < 11;i++)
    {
    for (int ii =0 ;ii <i; ii++)
    {
    if (*(arr+i) > *(arr+ii))
    {
    temp = *(arr+i);
    *(arr+i) = *(arr+ii);
    *(arr+ii) = temp;

    }

    }
    }

    }


    int main()
    {
    int arr[] = {23,544,2,4,51,5,43,1,513,5,5};
    sort(arr);

    for (int i =0; i <11;i++)
    {
    printf("%d\n",arr[i]);
    }
    return 0;
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 20:08:3018楼 得分:0
    晕啊  智力题我不行啊  还是老老实实搞代码去........

    5 9 8 4 6 5
    7 2 3 4 6 5
    -----------
    3 2 1 9 3 0

    D=5 ,T=0
    R=2L+1       
    O+E=E    O=9,N+R>10 ,A=4 则L+L>10,A+A后无进位
    N+R>10 ,L+L>10    若L=6 R=3,R=(5+1+G)%10  G=7  若N=8,B=1,E=2
    究举法一次就得到这个

    貌似跟你们的不一样啊 .........  但是自己验证起来似乎是对的  哪位挑下骨头先
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 20:25:3019楼 得分:0
    题四好像有多种解吧

    如果:
    a:护士人数多于医生人数  8>7
    b:男医生人数多于男护士  2>1
    c:女医生人数小于女护士  5 <7
    d:女医生至少有一人      5
    此时A为女护士


    ...........其他的情况不考虑了...... 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 21:02:0920楼 得分:0
    这题目是什么啊,第一题那个a是全局变量还是做一个a的值就改变啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 21:25:1921楼 得分:0
    char* getmemory(char *p)
    {
      // p = NULL;
        p = (char* )malloc(100 * sizeof(char));
        memcpy(p,"hello world",12);
    return p;
    }

    void main()
    {
        char *str = NULL;
        //str = (char* )malloc(100 * sizeof(char));
        str = getmemory(str);
        printf("%s",str);
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 21:29:0622楼 得分:0
    呵呵我水平较低只做点简单的题。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-30 23:32:4023楼 得分:0
    学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-31 01:40:1924楼 得分:0
    题7的解是唯一的:

    已知 D = 5
    先看个位相加,直接推出 T = 0 并且十位有进位

    万位,O + E = E,显然万位有进位并且 O = 9,首位也有进位
    百位,A + A + 1 = 9 ,A又不能是9,所以 A = 4

    十位,R是个奇数
    再结合首位R大于6,因为前面9 = O了,所以 R = 7,G = 1
    回头看十位,注意进位,得出L = 8

    千位,N + 7 = B > 10,数字就剩下2 3 6,所以只有N = 6,B = 3

    幸运的是其他数字都被占了,所以 E = 2

    综上,最后结果是
    5 9 6 4 8 5
    +1 2 7 4 8 5
    -------------
    7 2 3 9 7 0
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-31 09:10:0025楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-31 11:06:4126楼 得分:0
    4,24 正确
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-31 12:20:3027楼 得分:0
    其实我觉得最难的是第五题,我是楼主,各位有没有用改进KMP算法写的代码,公布一下?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lgg201
    • 等级:
    发表于:2008-03-31 12:30:3728楼 得分:0
    C/C++ code
    //题1: int a = 10; //a=10 int b = a++; //b=10;a=11 int c = ++a; //c=11;a=11 int d = 10 * a++; //d=110;a=12 b = ? c = ? d = ? //b=10;c=11;d=110

    不知道对不对,呵呵.第二题还没看.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-31 12:43:2529楼 得分:0
    引用 18 楼 zmlovelx 的回复:
    晕啊  智力题我不行啊  还是老老实实搞代码去........

    5 9 8 4 6 5
    7 2 3 4 6 5
    ----------- 
    3 2 1 9 3 0
     
    D=5 ,T=0
    R=2L+1         
    O+E=E    O=9,N+R>10 ,A=4 则L+L>10,A+A后无进位
    N+R>10 ,L+L>10    若L=6 R=3,R=(5+1+G)%10  G=7  若N=8,B=1,E=2
    究举法一次就得到这个

    貌似跟你们的不一样啊 .........  但是自己验证起来似乎是对的  哪位挑下骨头先


    突然发觉我的最高位进了一位  所以错了 ..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-31 12:49:3130楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lgg201
    • 等级:
    发表于:2008-03-31 13:09:2631楼 得分:0
    题7
    已知第一行与第二行相加结果为第三行
    D O N A L D
    G E R A L D
    -----------
    R E B O R T
    其中D = 5 ,每个字母代表0~9中的一个数,问这些字母代表什么

    答案:
    5 9 6 4 8 5
    1 2 7 4 8 5
    -----------
    7 2 3 9 7 0

    1 2 3 4 5 6 7 8 9 0
    -------------------
    G E B A D N R L O T

    分析过程:

    D O N A L D  //D=5;推出:T=0;
    G E R A L D  //O+E=E;推出:O=0 ¦9;由于T=0,所以.O=9;
    ----------- 
    R E B O R T


    5 9 N A L 5  //D=5;D+G=R;推出:G=0 ¦1 ¦2 ¦3 ¦4,由于T=0,G=1 ¦2 ¦3 ¦4;
    G E R A L 5  //G=1 ¦2 ¦3 ¦4,D=5;推出:R=D+G=6 ¦7 ¦8 ¦9,由于O=9,所以,R=6 ¦7 ¦8;
    -----------  //L+L+1(进位)=R;即2*L+1=R,所以,R肯定是奇数,故R=7;
    R E B 9 R 0  //2*L+1=R ¦1R;R=7;所以,L=3 ¦L=8;


    5 9 N A L 5  //同上,百位结果为奇数,加数为2*A,所以,十位必然向百位产生进位.故L=8;
    G E 7 A L 5
    -----------
    7 E B 9 7 0


    5 9 N A 8 5
    G E 7 A 8 5
    -----------
    7 E B 9 7 0  //9+E=E ¦1E,显然,9+E!=E;所以,9+E=1E,向十万位产生进位.即5+G+1=7,所以,G=1;


    5 9 N A 8 5
    1 E 7 A 8 5
    -----------
    7 E B 9 7 0  //2*A+1=9 ¦19;推出:A=4 ¦9;由于O=9,所以,A=4;


    5 9 N 4 8 5
    1 E 7 4 8 5
    -----------  //以下剩余3个字母:N,E,B;3个数字:2,3,6;并且由于百位,十位,个位运算与高位无关.而最高位也只得到一个次高位的进位.所以,简化该式.
    7 E B 9 7 0

    简化后结果:
      9 N  //设N=2,则B=9,与O=9重复,得到矛盾;
      E 7  //设N=3,则B=0,与T=0重复,得到矛盾;
    -----  //所以,N=6,得到B=3,E=2;
    1 E B

    最后答案:
    5 9 6 4 8 5
    1 2 7 4 8 5
    -----------
    7 2 3 9 7 0

    1 2 3 4 5 6 7 8 9 0
    -------------------
    G E B A D N R L O T
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lgg201
    • 等级:
    发表于:2008-03-31 13:10:5132楼 得分:0
    引用 29 楼 zmlovelx 的回复:
    引用 18 楼 zmlovelx 的回复:
    晕啊  智力题我不行啊  还是老老实实搞代码去........ 

    5 9 8 4 6 5 
    7 2 3 4 6 5 
    ----------- 
    3 2 1 9 3 0 
     
    D=5 ,T=0 
    R=2L+1         
    O+E=E    O=9,N+R>10 ,A=4 则L+L>10,A+A后无进位 
    N+R>10 ,L+L>10    若L=6 R=3,R=(5+1+G)%10  G=7  若N=8,B=1,E=2 
    究举法一次就得到这个 

    貌似跟你们的不一样啊 .........  但是自己验证起来似乎是对的  哪位挑下骨头先



    错误.请看31楼.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-31 13:21:0933楼 得分:0
    C/C++ code
    //题1:
    int a = 10;    //a=10
    int b = a++;    //b=10;a=11
    int c = ++a;    //c=12;a=12
    int d = 10 * a++;  //d=120;a=13
    b = ? c = ? d = ?    //b=10;c=12;d=120