2017届腾讯校园招聘笔试——最后一道编程题
2016-09-14 11:01
369 查看
前两天参加了腾讯的校园招聘笔试,题量比较大,选择题30道,没有简单的题目,都要仔细思考,大题四道,两道问答,两道编程,试卷总共时间120min。我是被虐了,反正。
当时对最后一道编程题一看就有思路,不难,但还是写错了,这点腾讯有点坑,试卷没有调试器,都不知道自己写错了还是写对了。下面是我的实现代码,还望各位读者不吝批评指正,毕竟第一次写博客公布代码!肯定有很多不规范处!
输入一个整数,输出等于该整数的质数对。举例:比如输入整数10,则小于10的质数有(2,3,5,7),输出结果为2(5+5,3+7)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 100
void FindPrime(int b[], int NUM,int &len)
{
int k = 0;
int number = 2;
int i;
for (number; number <= NUM; number++)
{ //1号for循环
//static int k = 0;
for (i = 2; i <= (int)sqrt((double)number); i++)
{ //2号for循环
if (number%i == 0)
{
break;
}
}
if (i>(int)sqrt((double)number))
{ //如果2号for循环结束时,if语句从来没执行,那么i的值肯定大于sqrt(number),所以用这个表达式来判断是否为素数
b[k] = number;
k++;
}
}
len = k;
}
int ResearchNumber(int b[],int NUM,int len)
{
int count = 0;
if (NUM % 2 == 0)
{
for (int i = 0; i < len; i++)
{
if (NUM / 2 == b[i])
{
count++;
}
}
}
for (int j = 0; j < len - 1; j++)
{
for (int k = j + 1; k < len; k++)
{
if (NUM == b[j] + b[k])
{
count++;
}
}
}
return count;
}
void main()
{
int b
= { 0 };//存储质数
int NUM;
printf("输入整数:");
scanf_s("%d", &NUM);
int len = 0;
int result = 0;
//找出小于该整数的质数存储在数组b[]中
FindPrime(b,NUM,len);
//找到质数对
result=ResearchNumber(b,NUM,len);
printf("输出小于该整数的质数:");
for (int j = 0; j < len; j++)
{
printf("%d ", b[j]);
}
printf("\n");
printf("输出质数对: %d\n", result);
system("pause");
}
当时对最后一道编程题一看就有思路,不难,但还是写错了,这点腾讯有点坑,试卷没有调试器,都不知道自己写错了还是写对了。下面是我的实现代码,还望各位读者不吝批评指正,毕竟第一次写博客公布代码!肯定有很多不规范处!
输入一个整数,输出等于该整数的质数对。举例:比如输入整数10,则小于10的质数有(2,3,5,7),输出结果为2(5+5,3+7)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 100
void FindPrime(int b[], int NUM,int &len)
{
int k = 0;
int number = 2;
int i;
for (number; number <= NUM; number++)
{ //1号for循环
//static int k = 0;
for (i = 2; i <= (int)sqrt((double)number); i++)
{ //2号for循环
if (number%i == 0)
{
break;
}
}
if (i>(int)sqrt((double)number))
{ //如果2号for循环结束时,if语句从来没执行,那么i的值肯定大于sqrt(number),所以用这个表达式来判断是否为素数
b[k] = number;
k++;
}
}
len = k;
}
int ResearchNumber(int b[],int NUM,int len)
{
int count = 0;
if (NUM % 2 == 0)
{
for (int i = 0; i < len; i++)
{
if (NUM / 2 == b[i])
{
count++;
}
}
}
for (int j = 0; j < len - 1; j++)
{
for (int k = j + 1; k < len; k++)
{
if (NUM == b[j] + b[k])
{
count++;
}
}
}
return count;
}
void main()
{
int b
= { 0 };//存储质数
int NUM;
printf("输入整数:");
scanf_s("%d", &NUM);
int len = 0;
int result = 0;
//找出小于该整数的质数存储在数组b[]中
FindPrime(b,NUM,len);
//找到质数对
result=ResearchNumber(b,NUM,len);
printf("输出小于该整数的质数:");
for (int j = 0; j < len; j++)
{
printf("%d ", b[j]);
}
printf("\n");
printf("输出质数对: %d\n", result);
system("pause");
}
相关文章推荐
- 昨天去搜狗笔试,最后一道编程题
- 某知名IT公司最近的一道笔试编程题(C#)
- 携程笔试中的一道编程题
- [360] 笔试题2012年最后一道大题
- 100盏灯经过一系列操作后最后还有多少盏灯亮着(百度的一道笔试题)
- 网易2018校招内推Android笔试编程题一道
- 关于NVDIA(英伟达)一道笔试编程题——蛇形阵列——的再思考
- [置顶] 2017.9.9网易校招笔试最后一道编程解答
- 某知名IT公司最近的一道笔试编程题
- 记录XYD笔试的一道基础编程题
- 2015腾讯在线笔试的一道编程题
- 分享一道笔试编程题
- NVDIA(英伟达)一道笔试笔试编程题
- 阿里巴巴2014校园招聘笔试最后一道题目
- 笔试最后两个编程题
- 一道JAVA笔试编程题
- 同花顺笔试碰到的一道前端编程题
- 阿里巴巴2014校园招聘笔试最后一道题目
- 一道生成不重复随机数字的C#笔试编程题
- 网易实习生笔试编程题1:对序列去重,只保存最后出现的元素