51Testing软件测试论坛

标题: 去面试测试人员,公司给了我两道程序算法题.. [打印本页]

作者: hero_yw    时间: 2007-3-29 13:37
标题: 去面试测试人员,公司给了我两道程序算法题..
去面试系统测试人员,公司给了我两道程序算法题,好久没写程序,都想不起来了,我要晕了。
1,写程序输出这段字符
********1
*******121
******12321
*****1234321
****123454321
***12345654321
**1234567654321
*123456787654321
12345678987654321

2,下面公式的每个字母代表一个0-9的数字,编程计算出每个字母是几?
fifteen
    ten
+  ten
-------
sixteen

[ 本帖最后由 hero_yw 于 2007-3-29 13:49 编辑 ]
作者: Eagle1983    时间: 2007-3-29 13:53
什么公司阿?题目这么BT。考开发的把
作者: shanxi    时间: 2007-3-29 14:10
0~9  十个数字
f
i
t
e
n
s
x
共7个

按位加,考虑进位
按照题目对齐形式无解:

3*n末位仍然是n,得出n=5或者0
=>如果n=5,有进位那么3*e+1末位仍然是e,e不存在
=>所以n=0,3*e末位仍然是e,得出e=5
        =>如果e=5,有进位那么e+2*t+1仍然是e,也就是6+2*t进位后仍是5

fift550
    t50
    t50
---------
sixt550

[ 本帖最后由 shanxi 于 2007-6-20 14:49 编辑 ]
作者: hero_yw    时间: 2007-3-29 16:16
唉,发现单单做业务层面上的测试真的没有什么前途。
作者: gs6431    时间: 2007-3-29 16:35
main ()
{
        int i,j,k,t;
        for(i=1;i<10;i++)
        {
                for(j=10-i;j>0;j--)
                        printf("*");
        for(k=1;k<=i;k++)
                    printf("%d",k);
                for(t=i-1;t>0;t--)
                    printf("%d",t);
                printf("\n");
        }

}
第一个题目的答案,可以在VC环境下运行输出
作者: gs6431    时间: 2007-3-29 16:54
原帖由 shanxi 于 2007-3-29 14:10 发表
0~9  十个数字
f
i
t
e
n
s
x
共7个

按位加,考虑进位



能不能详细说说啊 ?最好把答案贴出来,呵呵
我没看明白那个公式
作者: boliping    时间: 2007-3-29 17:21
标题: 回复 #5 gs6431 的帖子
强人
作者: stardust    时间: 2007-3-29 17:41
真的不错, 时常可以开动脑筋锻炼一下
作者: cleverman    时间: 2007-3-30 10:14
感觉第二道题不太对劲。
fifteen+ten+ten=sixteen吗?
作者: xxl    时间: 2007-3-30 13:04
for(int i = 1; i <= 9; i++)
          {
                  for(int j = 1; j <= 9 - i; j++)
                  {
                          System.out.print("*");
                  }

                  for(int m = 1; m <= i; m++)
                  {
                          System.out.print(m);
                  }

                  for(int n = i - 1; n >= 1; n--)
                  {
                          System.out.print(n);
                  }

                  System.out.println();
          }

第2题看不懂什么意思
作者: taoyi921    时间: 2007-3-30 14:00
第2道题好像无解????
作者: kolecat    时间: 2007-3-30 14:13
fifteen
    ten
+  ten
-------
sixteen

题目是不是有问题?  假设三个百位数上的字母相加(e+t+t),就算都是最大数9,也不过是27,进千为数2,这两位数进入千位后,居然保持t无变化?而万位数的 f 变成了 x ?
作者: smartman    时间: 2007-3-30 14:50
第二个是错的,要不是就为全零或者后四位为零  前面只要相等就可以。
作者: gothkia    时间: 2007-3-30 15:19
第二题好像错了
作者: pilouzi    时间: 2007-3-30 15:37
标题: 回复 #5 gs6431 的帖子
太有材了
佩服佩服
刚才我在编译器上运行了
完全正确!!!!
你是做测试的吗?
作者: gothkia    时间: 2007-3-30 15:52
原帖由 pilouzi 于 2007-3-30 15:37 发表
太有材了
佩服佩服
刚才我在编译器上运行了
完全正确!!!!
你是做测试的吗?

好像都了一个*吧。j=10-i,第一排9个*。基础的嵌套循环测试也要会点编程的~
作者: kevin_park315    时间: 2007-3-30 17:00
强!!!
作者: lizzi    时间: 2007-3-30 17:40
第二个有点难度,应该用递归算法,已经不记得了
作者: naonao    时间: 2007-3-30 18:10
public class test01
{
        public static void main(String[] args)
        {
                int m=9;
                for(int i=1;i<=m;i++)
                {               
                        int n=m-i;
                        if (n>0){
                                for        (int j=0;j<n;j++){
                                        System.out.print("*");       
                                }
                        }
                        int k=0;
                        for(k=k+1;k<=i;k++)
                        {
                                System.out.print(k);       
                        }
                        for(k=k-1;k>1;k--)
                        {
                                System.out.print(k-1);       
                        }
                        System.out.print("\n");
                }               

        }
}
作者: Eagle1983    时间: 2007-3-30 18:11
刚刚做了一下第一题 ,还真不简单。呵呵 要的到正确的结果 还真要 Debug,Debug,Debug......
>3层嵌套我头就晕了 哈哈 特别是层之间的变量还有联系,那就更晕了 看来得回去恶补一下C了。感觉写这些小程序蛮好玩的。
作者: godmap    时间: 2007-3-30 23:10
//第2题的意思还是没明白~~楼主能在解释一下吗?
/////////////////////////////////////////////////////////////////////////////////////
//1,写程序输出这段字符
//********1
//*******121
//******12321
//*****1234321
//****123454321
//***12345654321
//**1234567654321
//*123456787654321
//12345678987654321
/////////////////////////////////////////////////////////////////////////////////////
class Question1 {
        private int i = 9;
        private int z = i;
        private char s = '*';
       
        public void displayStar(char c, int j) {
                for(int k=0; k<j-1; k++)
                        System.out.print(c);
                       
        }
       
        public void displayNum(int j) {
                for(int k=0; k<j; k++) {
                        System.out.print(k+1);
                }
                for(int x=1; x<j; j--) {
                        System.out.print(j-1);
                }
                System.out.println();
        }
       
        public void displayStarAndNum() {
                for(int j=0; j<i; j++,z--) {
                        this.displayStar(s, z);
                        this.displayNum(j+1);
                }
        }
}

//2,下面公式的每个字母代表一个0-9的数字,编程计算出每个字母是几?
//////////////////////////////////////////////////////////////////
//fifteen
//    ten
//+  ten
//-------
//sixteen
//////////////////////////////////////////////////////////////////
class Question2 {
        private int[] n1;
        private int[] n2;
        private int[] n3;
        private int[] sum;
       
        public void getSum() {
  }
}



public class SolveQuestions {

        public static void main(String[] args) {
       
        new Question1().displayStarAndNum();
        new Question2().getSum();
       
        }
}

[ 本帖最后由 godmap 于 2007-3-30 23:13 编辑 ]
作者: lqp    时间: 2007-3-31 13:12
我刚出来,经历两家公司,但这两家公司都不需要懂得代码的,都是功能测试。我很想知道在哪些行业或者哪一类公司会要求测试人员懂代码呢?我们公司的产品都不算是小产品的,而且测试组规模也不算小,但都不用懂代码的测试人员都一样可以工作。懂不懂代码真的和测试有很大相关吗?
作者: wuwb379    时间: 2007-3-31 16:40
sdlkfj1
作者: meipaul    时间: 2007-3-31 21:58
sdlkfj8
作者: coldfire    时间: 2007-3-31 22:40
public class Test {

        public static void cal() {
                for (int n = 0; n <= 9; n++) {
                        int nY = 3 * n % 10;  //求余
                        if (n == nY) {
                                for (int e = 0; e <= 9; e++) {
                                        int eb = ((n * 3) / 10 + e * 3) % 10;
                                        int jb = ((n * 3) / 10 + e * 3) / 10;
                                        if (e == eb) {
                                                for (int t = 0; t <= 9; t++) {
                                                        int tb = (jb + e + 2 * t) % 10;
                                                        int p = (jb + e + 2 * t) / 10;
                                                        int g = (p + t);
                                                        if ((tb == e) && (g == t)) {
                                                                System.out.println("n= " + n + " e = " + e
                                                                                + " t=" + t);
                                                        }
                                                }
                                        }
                                }

                        }
                }

        }

        public static void main(String[] args) {
                cal();
        }

}

求出来就一堆零罢了,n,e,t 都是0,基它的很明显,不确定,只能确定t和X相等,s和f是相等的,不可能算出来具体的数值。
最后答案是:n,e,t是0, 1=<(f =s=x)<=9    0=<i<=9  就这样了,这题目可能有问题,要不就是拷下基础扎实不扎实,呵呵!

[ 本帖最后由 coldfire 于 2007-3-31 22:45 编辑 ]
作者: smilebear    时间: 2007-4-1 00:03
第一题:
#include <iostream.h>
void main()
{
  cout<<"********1"<<'\n';
  cout<<"*******121"<<'\n';
  ...
  cout<<"12345678987654321";
}

第二题:
#include <iostream.h>
void main()
{
  int e,f,i,n,s,t,x;
  long x1,x2,y;
  for(e=0;e<=9;e++)
  {
    for(f=0;f<=9;f++)
    {
      for(i=0;i<=9;i++)
      {
        for(n=0;n<=9;n++)
        {
          for(s=0;s<=9;s++)
          {
            for(t=0;t<=9;t++)
            {
              for(x=0;x<=9;x++)
              {
                x1=1010000*f+100000*i+1000*t+110*e+n;
                x2=100*t+10*e+n;
                y=1000000*s+100000*i+10000*x+1000*t+110*e+n;
                if((x1+2*x2)==y)
                {
                  cout<<"e= "<<e<<'\n';
                  cout<<"f= "<<f<<'\n';
                  cout<<"i= "<<i<<'\n';
                  cout<<"n= "<<n<<'\n';
                  cout<<"s= "<<s<<'\n';
                  cout<<"t= "<<t<<'\n';
                  cout<<"x= "<<x<<'\n';
                  break;
                }
              }
            }
          }
        }
      }
    }
  }
}

- -!!!
作者: flydream521    时间: 2007-4-1 00:40
第一题:

#include "stdio.h"
void main()
{
int i,j,k,m;

for (i=1;i<10;i++)
  {
    for(j=1;j<10-i;j++)
        {
          printf("*");
        }
   
    for(m=1;m<i+1;m++)       
        {
          printf("%d",m)
        }
           
    for(k=i;k>1;k--)
        {
          printf("%d",k-1)       
        }
    }       
                                
}

第二题是什么意思?
作者: flydream521    时间: 2007-4-1 00:58
忘记加上分号和换行符,补上:

#include "stdio.h"
void main()
{

int i,j,k,m;

for (i=1;i<10;i++)
  {
    for(j=1;j<10-i;j++)
        {
          printf("*");
        }
   
    for(m=1;m<i+1;m++)        
        {
          printf("%d",m);
        }
            
    for(k=i;k>1;k--)
        {
          printf("%d",k-1);        
        }
   
     printf("\n");
    }        
                                
}
作者: Eagle1983    时间: 2007-4-1 14:14
第一题:
#include <iostream.h>
void main()
{
  cout<<"********1"<<'\n';
  cout<<"*******121"<<'\n';
  ...
  cout<<"12345678987654321";
}

太幽默了吧 呵呵
作者: zhouchunlin    时间: 2007-4-1 14:29
第一题答案:

public class inputPractice {
public static void main(String[] args){
  
  int lineCount=9;
  for (int i=1; i<=lineCount; i++){
   
   int startCount=lineCount-i;
   for(int start=startCount; start>0; start--){
    System.out.print("*");
   }
   
      for (int number1=1; number1<i+1; number1++){
       System.out.print(String.valueOf(number1));
      }
   int k=i;
      for (int number2=1; number2<i; number2++){      
        System.out.print(String.valueOf(--k));              
      }
   System.out.print("\n");
  }
}
}
作者: dantaoyao    时间: 2007-4-1 19:36
这么多程序 有意思

第一题还是考察对for循环的理解和使用的
作者: xiaomengmao2007    时间: 2007-4-1 21:03
sdlkfj8
作者: yyjzxyghj    时间: 2007-4-2 09:29
虽然现在做测试,好久都没有接触编程方面的东东,那些东西看来都还给老师了
看来要加强温习一下罗!
作者: ihwks    时间: 2007-4-2 11:44
原帖由 smilebear 于 2007-4-1 00:03 发表
第一题:
#include
void main()
{
  cout


这个最牛!!也太有才了
作者: lovefei1027    时间: 2007-4-2 11:47
原帖由 pilouzi 于 2007-3-30 15:37 发表
太有材了
佩服佩服
刚才我在编译器上运行了
完全正确!!!!
你是做测试的吗?

#5的和题目要求有些不符合的,第二个for循环改为9-i就可以了
对于第二个题目25#已经说的很清楚了,也是关于for循环的,可能就是让写循环程序了
作者: I_hui    时间: 2007-4-2 15:10
晕了
!!
作者: ok-ok    时间: 2007-4-2 15:17
sdlkfj5 学习了 非常好的题目
作者: 鱼鳞    时间: 2007-4-2 16:38
望而怯步~
作者: 小小丫    时间: 2007-4-2 17:03
sdlkfj1 功能测试太没前途了,看了楼上那些有才的人
偶觉得很自卑
作者: 秋天的枫叶    时间: 2007-4-2 17:57
领教了,都是测试强人啊sdlkfj2
作者: hayerk    时间: 2007-4-2 18:49
由n+n+n=i*10+n(i=0,1),可知n=0或5。如果n=5,则十位有e+e+e+1=j*10+e(j=0,1),不管j为多少,上式中e都不可能为自然数,故n不等于5,即n=0。
由e+e+e=i*10+e(i=0,1),可知e=0或5。如果e=5,则百位有e+t+t+1=j*10+e(j=0,1),不管j为多少,上式中t都不可能为自然数,故e不等于5,即e=0。这样t+t=j*10(j=0,1),得t=5。
但是对于千位,t+1=t,出现矛盾。
作者: 蓝汐    时间: 2007-4-2 21:53
越来越喜欢这里了,决定一定好好好跟大家学习!
作者: mechenkai    时间: 2007-4-6 11:40
第一题会做 !
第二题不会。。。。。。
作者: bond21360005    时间: 2007-4-28 15:42
sdlkfj7 真是领教了,发现自己差得太远了!请问楼主这是什么公司出的面试题呀?
我在招聘会上做的面试题也没这么夸张啊。
作者: kanger01    时间: 2007-4-29 15:33
我也都还给老师了sdlkfj6
作者: xun1206    时间: 2007-4-30 08:40
学习了 非常好的题目
作者: overseaair    时间: 2007-5-1 11:04
标题: 感觉这里面好多可爱的美媚
sdlkfj1
作者: FLY000    时间: 2007-5-2 11:45
sdlkfj2
作者: jollychang    时间: 2009-3-24 19:58
  1. for k in 1..9
  2.         stringbefore=''
  3.         stringend=''
  4.         for l in 1..k
  5.                 stringbefore = stringbefore + l.to_s()
  6.         end
  7.         for l in 1..k-1
  8.                 stringend = stringend + (k-l).to_s()
  9.         end
  10.         puts  '*'*(9-k) +stringbefore +stringend
  11. end
复制代码
Ruby Code
作者: ducan    时间: 2009-3-24 21:14
#include "stdio.h"
main()
{
        int f,i,t,e,n,x,s;
        int fifteen,ten,sixteen;
        for(n=0;n<10;n++)
        {
                if(n!=e)
                for(e=0;e<10;e++)
                {
                        if(e!=f)
                        for(f=0;f<10;f++)
                        {
                                if(f!=i)
                                for(i=0;i<10;i++)
                                {
                                        if(i!=s)
                                        for(s=0;s<10;s++)
                                        {
                                                if(s!=t)
                                                for(t=0;t<10;t++)
                                                {
                                                        if(t!=x)
                                                        for(x=0;x<10;x++)
                                                                {
                fifteen=f*1000000+i*100000+f*10000+t*1000+e*100+e*10+n;
                ten=t*100+e*10+t*100+e*10+n;
                sixteen=s*1000000+i*100000+x*10000+t*1000+e*100+e*10+n;
                if(sixteen==(fifteen+ten*2))
                break;
                else
                {
                printf("没有正确答案");
                return 0;
                }
                                                                }
                                                }
                                        }
                                }
                        }
                }
        }
                printf("%4d%4d%4d%4d%4d%4d%4d",f,i,t,e,n,x,s);                             
}


/////////////没有正确的答案吧,如果我没有写错的话
作者: 小邓    时间: 2009-3-25 16:41
哇 都是强人啊 感觉测试不懂开发 太没有前途了啊
作者: sbinken    时间: 2009-3-25 17:07
第一道题我以前去华为面试做过
作者: kingerwt    时间: 2009-3-25 21:54
哇靠  做什么测试啊  需要考的这么。。。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2