论坛首页 编程语言技术论坛

月薪16000的一道笔试题

浏览 52826 次
精华帖 (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 #

这够慢的..............
0 请登录后投票
   发表时间:2011-10-26  
elam 写道
这种题目真无聊
function calc(x)
{
    var j;
    for(var i = 0; i < x;i++) {
        j = i
    }
    return j;
}


顶!看了前面那些人写的都什么乱七八糟的东西!还自以为写的很好!
0 请登录后投票
   发表时间: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;
	}
}
0 请登录后投票
   发表时间: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++; 
    } 
  } 
} 

这种方法很巧妙啊。。。
0 请登录后投票
   发表时间:2011-10-26  
thanq 写道
function f( v ){
  var t = 0 ,t1=-1;
  for(;t<=v;){
    if(t==v){
      return t1
    }else{
      t++ ;t1++;
    }
  }
}

你这肯定不对把,不能使用if
0 请登录后投票
   发表时间:2011-10-26  
thanq 写道
function f( v ){
  var t = 0 ,t1=-1;
  for(;t<=v;){
    if(t==v){
      return t1
    }else{
      t++ ;t1++;
    }
  }
}

正解
0 请登录后投票
   发表时间: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
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值。
0 请登录后投票
   发表时间: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));
}
0 请登录后投票
   发表时间:2011-10-26  
是来装X的吗?

f(x) == x - 1  是这样理解吗?   2 == 2 + 1 - 1 ?  
数手指就可以,还1W6。做总监还有考虑这题么?1W6都是零的。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics