华为招聘C语言笔试试题

  一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)

  1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。( )

  2、int (*ptr) (),则ptr是一维数组的名字。( )

  3、指针在任何情况下都可进行>,<,>=,<=,==运算。( )

  4、switch(c) 语句中c可以是int ,long,char ,float ,unsigned int 类型。( )

  5、#define print(x) printf("the no, "#x",is ")

  二、填空题(共30分)

  1、在windows下,写出运行结果,每空2分,共10分。

  char str[ ]= "Hello";

  char *p=str;

  int n=10;

  sizeof(str)=( )

  sizeof(p)=( )

  sizeof(n)=( )

  void func(char str[100])

  { }

  sizeof(str)=( )

  2、void setmemory(char **p, int num)

  { *p=(char *) malloc(num);}

  void test(void)

  { char *str=NULL;

  getmemory(&str,100);

  strcpy(str,"hello");

  printf(str);

  }

  运行test函数有什么结果?( )10分

  3、设int arr[]={6,7,8,9,10};

  int *ptr=arr;

  *(ptr++)+=123;

  printf("%d,%d",*ptr,*(++ptr));

  ( ) 10分

  二、编程题(第一小题20,第二小题30分)

  1、 不使用库函数,编写函数int strcmp(char *source, char *dest)

  相等返回0,不等返回-1;

  2、 写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1

  五、 阅读程序题(每个小题5分,共20分)

  1.阅读以下程序,概括地写出程序的功能。

  #i nclude

  double Exp(double x)

  { double sum=1.0;

  double term=x;

  double i=1 ;

  while (term>=1.0E-8)

  { sum+=term ;

  i++;

  term=term*x/i ;

  }

  return sum ;

  }

  void main()

  { double s;

  s=Exp(1.0)+Exp(2.0);

  cout.precision(8);

  cout<<"s="<<

  }

  2. 阅读程序,写出程序执行时输出结果。

  #i nclude

  const int SIZE=10;

  class stack

  { char stck[SIZE];

  int top;

  public:

  void init();

  void push(char ch);

  char pop();

  };

  void stack::init()

  { top=0; }

  void stack::push(char ch)

  { if(top==SIZE)

  { cout<<"Stack is full.\n";

  return ;

  }

  stck[top++]=ch;

  }

  char stack::pop()

  { if(top==0)

  { cout<<"Stack is empty.\n";

  return 0;

  }

  return stck[--top];

  }

  void main()

  { stack s1, s2;

  s1.init();

  s2.init();

  s1.push('a');

  s1.push('b');

  s1.push('c');

  s2.push('x');

  s2.push('y');

  s2.push('z');

  for(int i=0; i<3; i++)

本文已影响6827
上一篇:百度招聘笔试题及答案 下一篇:中国农业银行笔试试题

相关文章推荐

|||||