计算机经典笔试题

1       编程基础
1.1    基本概念
1.         的理解:const char*, char const*, char*const的区别问题几乎是C++面试中每次    都会有的题目。 事实上这个概念谁都有只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。 const
char  * const cp; ( * 读成 pointer to )
cp is a const pointer to char
const char * p;
p is a pointer to const char;
char const * p;
同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。
2.         指针c
int *p[n];-----指针数组,每个元素均为指向整型数据的指针。
int (*)p[n];------p为指向一维数组的指针,这个一维数组有n个整型数据。
int *p();----------函数带回指针,指针指向返回的值。
int (*)p();------p为指向函数的指针。
3.         数组越界问题
下面这个程序执行后会有什么错误或者效果:
#define MAX 255
int main()
{
    unsigned char A[MAX],i;
    for (i=0;ihigh) return -1;
  mid=(low+high)/2;
  if(x==a[mid]) return mid;
  if(x2
解:
int f(int n)
{
        int i,s,s1,s2;
        s1=1;/*s1用于保存f(n-1)的值*/
        s2=1;/*s2用于保存f(n-2)的值*/
        s=1;
        for(i=3;ix[j+1]) 
                {
                    temp=x[j];
                    x[j]=x[j+1];
                    x[j+1]=temp;
                }
}
}
6.         语言 文件读写c
#include "stdio.h"
main()
{
        FILE *fp;
        char ch,filename[10];
        scanf("%s",filename);
        if((fp=fopen(filename,"w")==NULL)
        {
printf("cann't open filen");
exit(0);
  }
  ch=getchar();
  while(ch!='#')
  {
       fputc(ch,fp);
       putchar(ch);
       ch=getchar();
  }
  fclose(fp);
}
7.         编程winsocket
#include
#include
void main()
{
       WORDwVersionRequested;
       WSADATA wsaData;
       int err;
       wVersionRequested = MAKEWORD(1,1);
       err = WSAStartup(wVersionRequested,&wsaData);
       if( err != 0)
{
           return; 
       }
       if(LOBYTE( sion ) != 1||
           HIBYTE( sion) != 1)
{
            WSACleanup();
            return;
        }
       SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
       SOCKADDR_IN addrSrv;
       _addr.S_un.S_addr=htonl(INADDR_ANY);
       _family=AF_INET;
       _port=htons(6000);
       bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
       listen(sockSrv,5);

计算机经典笔试题