刚从7点做到8点,一个钟的在线笔试,投递三七互娱的PHP开发工程师岗位,虽然希望渺茫还是试试吧。题目有2大类,30道选择2道简答题(编程题),选择题涵盖PHP,数据库,数据结构(二叉树及遍历)操作系统,计算机网络,c语言等,简答题是判断ip地址合法性和判断一个数是否为三七数(只有3和7两个因子)。。。我做过的几道编程题都没考,尴尬。。感觉写的一般般,三七数没写过,就自己想法是直接将该整数不断除以3和7(在可以除的情况下,直到最后除不尽,看剩下值是否为1,为1则返回true,否则返回false。时间有点急没写好,下面是我用c++写的一个判断函数。)。。
判断一个整数是否出来3和7还有其他因子,无得话即为'三七数',有的话则不是。1默认是。
3,7,9,21是“三七数”,6不是(6=2*3)
bool judeg37(int num){
if (num <= 0) return false;
while (num){
if (num % 3 == 0)
num /= 3;
if (num % 7 == 0)
num /= 7;
if (num % 3 && num % 7)
break;
}
if (num == 1){
return true;
}
else{//不等于1说明还有其他因子
return false;
}
}
下面分享一道印象深刻的奇葩题:
题目代码:
int func(int x, int y){
return x + y;
}
int main()
{
cout << func((3,5,4),(4,5)) << endl;
system("pause");
return 0;
}
vs2013运行结果是:9.
我还是不造原因何在!望知道的说明下,谢谢!
不过经过测试发现:
func((3,5,7),(4,1)) = 8 =7+1
所以可能是跟最后两个数有关吧。。。
下面是另一段代码段:
for (int i = -1, j = 0; j = 0; i++, j++)
{
j++;
printf("%d\n", j);
}
以上输出啥???
结果是啥也没输出。因为进入循环的条件是 j = 0 并不是 j == 0,由于 j = 0 返回false,所以不进入循环;当 j = n(n!=0)即可返回true并进入循环将该值加一。