2017届腾讯校园招聘笔试——最后一道编程题

    xiaoxiao2022-06-23  25

        前两天参加了腾讯的校园招聘笔试,题量比较大,选择题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[N] = { 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"); }

    转载请注明原文地址: https://ju.6miu.com/read-1123222.html

    最新回复(0)