c语言笔试重点

来源:互联网 发布:高中课程教学视频软件 编辑:程序博客网 时间:2024/04/25 22:02
  1.   const char *const *keywords(keywords是1个普通的指针,指向1个指向常量的常量指针)                                             const char const *keywords(keywords是1个普通的指针,指向1个char常量) 

        const char *const  keywords(keywords是1个常量指针,指向1个char常量)                                                               const char const  keywords(keywords是1个char常量) 

        const char const * keywords=char const * keywords       const char const keywords=const char keywords


   2.  求输出 

     int inc(int a)  

    {
   return(++a);
            }  int multi(int*a,int*b,int*c)
  {
   return(*c=*a**b);
  }
  typedef int(FUNC1) (int in);
  typedef int(FUNC2) (int*,int*,int*);

  void show(FUNC2 fun,int arg1, int*arg2)
  {
   FUNC1 p=inc;
   int temp =p(arg1);
   fun(&temp,&arg1, arg2);
   printf("%dn",*arg2);
  }

  main()
  {
   int a;
   show(multi,10,&a);
   return 0;
  }
  输出 110

3. 把一个字符串倒序,如“abcd”倒序后变为“dcba”
      int main(void)
    {
   char* src = "hello,world";
   int len = strlen(src);
   char* dest = (char*)malloc(len+1);//要为0分配一个空间
   char* d = dest;
   char* s = &src[len-1];//指向最后一个字符
   while( len-- != 0 )
   *d++=*s--;
   *d = 0;//尾部要加0
   printf("%sn",dest);
   free(dest);// 使用完,应当释放空间,以免造成内存汇泄露
   return 0;
    }
     
      另一种:
     int main(void)
   {
   char str[]="hello,world";
   int len=strlen(str);
   char t;
   for(int i=0; i   {
    t=str[i];
    str[i]=str[len-i-1]; str[len-i-1]=t;
   }
   printf("%s",str);
   return 0;
     }

4.用两个栈实现一个队列的功能?
设2个栈为A,B, 一开始均为空.

  入队:
  将新元素push入栈A;

  出队:
  (1)判断栈B是否为空;
  (2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;
  (3)将栈B的栈顶元素pop出;

5.   enum string
    {
   x1,
   x2,
   x3=10,
   x4,
   x5,
    }x;

  问x= 0x801005,0x8010f4 ;
    


  6.
    unsigned char *p1;
  unsigned long *p2;
  p1=(unsigned char *)0x801000;
  p2=(unsigned long *)0x810000;

  请问p1+5= ;
    p2+5= ;

7.
     unsigned short hash(unsigned short key)
  {
    return (key>>)%256
    }

  请问hash(16),hash(256)的值分别是:

   A.1.16;B.8.32;C.4.16;D.1.32

8.
   请问下面程序有什么错误?

  int a[60][250][1000],i,j,k;
  for(k=0;k<=1000;k++)
  for(j=0;j<250;j++)
  for(i=0;i<60;i++)
  a[i][j][k]=0;

9.
    以下是求一个数的平方的程序,请找出错误:

  #define SQUARE(a)((a)*(a))
  int a=5;
  int b;
  b=SQUARE(a++);

10.
  typedef unsigned char BYTE
  int examply_fun(BYTE gt_len; BYTE *gt_code)
  {
   BYTE *gt_buf;
   gt_buf=(BYTE *)MALLOC(Max_GT_Length);
   ......
   if(gt_len>Max_GT_Length)
   {
    return GT_Length_ERROR;
   }
   .......
  }

11.
    #define Max_CB 500
  void LmiQueryCSmd(Struct MSgCB * pmsg)
  {
   unsigned char ucCmdNum;
   ......
  for(ucCmdNum=0;ucCmdNum
   {
    ......;
   }