19届瓜子测试开发工程师校招-编程题

发表于:2018-9-14 14:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:heart_fox    来源:博客园

  考试时长:90分钟
  考试题型:选择题15道(包括单选与多选),编程题3道。
  考试范围:
  选择题涵盖面比较广,包括数据库的设计模式,结构型模式有哪几种,排序中的稳定排序,用户拨号认证的协议,TCP/IP对应OSI网络协议哪一层,Java与C++,数据库联合查询等。
  编程题1:给出两个数,输出最大公约数与最大公倍数
  1 #include <iostream>
  2 #include<stdio.h>
  3 using namespace std;
  4
  5 int main()
  6 {
  7     int m,n,a;
  8     while((cin>>m>>n)!=NULL)
  9     {
  10         while(m>0&&n>0&&m==n)
  11         {
  12             cout<<1<<endl;
  13             cout<<m<<endl;
  14             return 0;
  15         }
  16         while(m>0&&n>0&&m!=n)
  17         {
  18             for(int i=2;i<=m*n;i++)
  19             {
  20                 if(m%i==0&&n%i==0)
  21                 {
  22                     cout<<i<<endl;
  23                     cout<<m*n/i<<endl;
  24                 }
  25             }
  26             return 0;
  27         }
  28     }
  29     //return 0;
  30 }

  编程题2:数字和为sum的方法数
  题目:给定一个有n个正整数的数组A和一个整数sum,,求选择数组中部分数字和为sum的方案数。当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。
  输入:第一行为两个正整数n(1<=n<=1000),sum(1<=sum<=1000);
  第二行为n个正整数Ai,以空格隔开
  输出:输出所求的方案数
  例1:输入
  5 15
  5 5 10 2 3
  输出: 4
  1 #include <iostream>
  2 #include <stdio.h>
  3 using namespace std;
  4 typedef long long LL;
  5
  6 LL dp[1000][1000];
  7 int main()
  8 {
  9     int n,sum;
  10     scanf("%d %d",&n,&sum);
  11     int array[1000];
  12     for(int i=0;i<n;i++) cin>>array[i];
  13     while(n>=1&&n<=1000&&sum>=1&&sum<=1000)
  14     {
  15         for(int j=0;j<n;j++) dp[0][j]=0;
  16         dp[0][0]=1;
  17         for(int i=1;i<=n;i++)
  18         {
  19             for(int j=0;j<=sum;j++)
  20             {
  21                 dp[i][j]=dp[i-1][j];
  22                 if(j>=array[i-1]) dp[i][j] +=dp[i-1][j-array[i-1]];
  23             }
  24         }
  25         cout<<dp[n][sum]<<endl;
  26         return 0;
  27     }
  28 }

  编程题3:
  题目:有一堆石子共有N个。A B两个人轮流拿,A先拿。每次最少拿1颗,最多拿K颗,拿到最后1颗石子的人获胜。假设A,B都非常聪明,拿石子的过程不会出现失误。给出N和K,问最后谁能赢得比赛。假如N=3,K=2.无论A如何拿,B都可以拿到最后1颗石子。
  输入:第1行:一个数T,表示后面用作输入测试的数的数量。(1<=T<=10000)
  第2-T+1行:每行2个数N,K。中间用空格分隔。
  输出:共T行,如果A获胜输出A,如果B获胜输出B。
  例1:输入
  4
  3 2
  4 2
  7 3
  8 3
  输出
  B
  A
  A
  B
  1 #include <iostream>
  2
  3 using namespace std;
  4
  5 int main()
  6 {
  7     int t;
  8     cin>>t;
  9     int array[10000][2];
  10     for(int i=0;i<t;i++)
  11     {
  12         for(int j=0;j<2;j++) cin>>array[i][j];
  13     }
  14     for(int i=0;i<t;i++)
  15     {
  16         if(array[i][0]<=array[i][1])
  17         {
  18             cout<<"A"<<endl;
  19             continue;
  20         }
  21         else
  22         {
  23             array[i][0]%=(array[i][1]+1);
  24             if(array[i][0]==0)
  25                 cout<<"B\n";
  26             else
  27                 cout<<"A\n";
  28         }
  29
  30     }
  31     return 0;
  32 }


   上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号