计算机经典笔试题1

    技术2022-05-11  26

    1       编程基础1.1    基本概念1.         的理解:const char*, char const*, char*const的区别问题几乎是C++面试中每次    都会有的题目。 事实上这个概念谁都有只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。 constchar  * 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.         指针cint *p[n];-----指针数组,每个元素均为指向整型数据的指针。int (*)p[n];------p为指向一维数组的指针,这个一维数组有n个整型数据。int *p();----------函数带回指针,指针指向返回的值。int (*)p();------p为指向函数的指针。3.         数组越界问题下面这个程序执行后会有什么错误或者效果:#define MAX 255int 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].key)                  {                    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 file/n");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( wsaData.wVersion ) != 1||           HIBYTE( wsaData.wVersion) != 1){            WSACleanup();            return;        }       SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);       SOCKADDR_IN addrSrv;       addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);       addrSrv.sin_family=AF_INET;       addrSrv.sin_port=htons(6000);       bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));       listen(sockSrv,5);

           SOCKADDR_IN addrClient;       int len=sizeof(SOCKADDR);       while(1)       {            SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);            char sendBuf[100];            sprint(sendBuf,"Welcome %s to http://www.yjbys.com/",           inet_ntoa(addrClient.sin_addr));            send(sockConn,sendBuf,strlen(sendBuf)+1,0);            char recvBuf[100];           recv(sockConn,recvBuf);            printf("%s/n",recvBuf);            closesocket(sockConn);            WSACleanup();       }  }注:这是Server端;File->New->Win32 Console Application,工程名:TcpSrv;然后,File->New->C++ Source File,文件名:TcpSrv;在该工程的Setting的Link的Object/library modules项要加入ws2_32.lib#include #include void main(){        WORDwVersionRequested;        WSADATA wsaData;        int err;         wVersionRequested = MAKEWORD(1,1);        err = WSAStartup(wVersionRequested,&wsaData);        if( err != 0){            return;          }        if(LOBYTE( wsaData.wVersion ) != 1||            HIBYTE( wsaData.wVersion) != 1){            WSACleanup();            return;        }        SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);        SOCKADDR_IN addrSrv;        addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");         addrSrv.sin_family=AF_INET;        addrSrv.sin_porthtons(6000);        connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));char recvBuf[100];recv(sockClient,recvBuf,100,0);printf("%s/n",recvBuf);send(sockClient,"This is zhangsan",strlen("This is zhangsan")+1,0);          closesocket(sockClient);        WSACleanup();}注:这是Client端;File->New->Win32 Console Application,工程名:TcpClient;然后,File->New->C++ Source File,文件名:TcpClient;同理,在该工程的Setting的Link的Object/library modules项要加入ws2_32.lib8.         类的知识C++#include class human{public:human(){ human_num++;};static int human_num;~human(){human_num--;print();}void print(){cout该信息出自应届毕业生求职网YJBYS.COM:http://www.yjbys.com


    最新回复(0)