锁定老帖子 主题:月薪16000的一道笔试题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (16)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-26
最后修改:2011-10-26
正龍天罡 写道 linux-common:~/gang # vi x-1.c
#include <stdio.h> int main() { int x; int i, j; scanf("%d",&x); for(i=0; x; i++) { x++; } i++; for(j=0; i; j++) { i++; } printf("x-1=%d\n", j); } ~ ~ :sh linux-common:~/gang # gcc x-1.c linux-common:~/gang # ./a.out 1 x-1=0 linux-common:~/gang # ./a.out 65 x-1=64 linux-common:~/gang # ./a.out 0 x-1=-1 linux-common:~/gang # ./a.out -11 x-1=-12 linux-common:~/gang # 这够慢的.............. |
|
返回顶楼 | |
发表时间:2011-10-26
elam 写道 这种题目真无聊
function calc(x) { var j; for(var i = 0; i < x;i++) { j = i } return j; } 顶!看了前面那些人写的都什么乱七八糟的东西!还自以为写的很好! |
|
返回顶楼 | |
发表时间:2011-10-26
如题:请仅使用变量声明,赋值,++,及从0开始的for循环实现一个函数f(x),在x为不小于1的整数类型的情况下,使其返回值等于x-1.
小弟愚见, java 代码: package someTest; public class TestFunc { public static void main(String[] args) { System.out.println(getLastValue(0)); } private static int getLastValue(int x){ int a=-1;//如果返回-1,代表x无效 for(int n=0;n+1==1 && x>=1;n++){//n+1==1 执行一次 ,x>=1 判断x是否满足 大于等于1 a=x-1; } return a; } } |
|
返回顶楼 | |
发表时间:2011-10-26
最后修改:2011-10-26
function f( v ){ var t = 0 ,t1=-1; for(;t<=v;){ if(t==v){ return t1 }else{ t++ ;t1++; } } } 这种方法很巧妙啊。。。 |
|
返回顶楼 | |
发表时间:2011-10-26
thanq 写道 function f( v ){
var t = 0 ,t1=-1; for(;t<=v;){ if(t==v){ return t1 }else{ t++ ;t1++; } } } 你这肯定不对把,不能使用if |
|
返回顶楼 | |
发表时间:2011-10-26
thanq 写道 function f( v ){
var t = 0 ,t1=-1; for(;t<=v;){ if(t==v){ return t1 }else{ t++ ;t1++; } } } 正解 |
|
返回顶楼 | |
发表时间:2011-10-26
给个java版的
public static int f( int x ){ int y = x; for( int i = 0; i < Integer.MAX_VALUE; i ++ ){ y ++; } y++; for( int i = 0; i < Integer.MAX_VALUE; i ++ ){ y ++; } System.out.println( "结果:" + x + " -> " + y ); return y; } public static void main( String[] ss ){ f( Integer.MAX_VALUE ); f( 100 ); f( 1 ); } 结果:2147483647 -> 2147483646 结果:100 -> 99 结果:1 -> 0 |
|
返回顶楼 | |
发表时间:2011-10-26
dsine 写道 给个java版的
public static int f( int x ){ int y = x; for( int i = 0; i < Integer.MAX_VALUE; i ++ ){ y ++; } y++; for( int i = 0; i < Integer.MAX_VALUE; i ++ ){ y ++; } System.out.println( "结果:" + x + " -> " + y ); return y; } public static void main( String[] ss ){ f( Integer.MAX_VALUE ); f( 100 ); f( 1 ); } 结果:2147483647 -> 2147483646 结果:100 -> 99 结果:1 -> 0 难点在于> < 这样的操作符号是不让用的,我目前还没有想到如何产生一个boolean值。 |
|
返回顶楼 | |
发表时间:2011-10-26
利用整型溢出,数据反复循环,非0即真条件,来实现。demo代码实现如下:
#include <stdlib.h> int descOne(int x){ int k=0; int i=x; for(;i;i++){ k++; } //执行到这k,是x 的相反数, for(x=k++;k;k++){下面k到0,x要做两次++才可以到原始x-2.因k++到0退出了,外面再做一次x++就可以了 x++; x++; } x++; return x; } int main(int arvgs,char** args){ int a=atoi(args[1]); printf("%d\n",descOne(a)); } |
|
返回顶楼 | |
发表时间:2011-10-26
是来装X的吗?
f(x) == x - 1 是这样理解吗? 2 == 2 + 1 - 1 ? 数手指就可以,还1W6。做总监还有考虑这题么?1W6都是零的。 |
|
返回顶楼 | |