|
我爱你公交网 学校地址网 邮编查询 院校信息网 面试网 笔试网 |
c/c++软件开发求职试题集合点击下载:c/c++软件开发求职试题集合PDF版 、c/c++软件开发求职试题集合Word版 简答题:(1)用<<,>>,|,&实现一个word(2个字节)的高低位交换!!(2)类classb从classa派生,如果classa中定义并实现虚函数int func(void),classb中也实现该函数,那么上述变量a->func()将调用哪个类里面的函数?如果int func(void)不是虚函数,情况如何?为什么? (3)编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是把接到的这组字符串转换成十进制数字.并将十进制数字返回. (4)写一个程序,把一个100以内的自然数分解因数。(自然数分解因数就是将一个自然数分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以加快计算速度) (5)执行下述程序的输出结果是__________________。 #include < stdio.h> char b[]="abcdef"; main() { char *bp; for (bp=b;*bp;bp+=2) printf("%s",bp); printf("\n"); } (6)用 100 元钱买 100 支笔,其中钢笔 3 元 / 支,圆珠笔 2 元 / 支,铅笔 0.5 元 / 支,问钢笔、圆珠笔和铅笔可以各买多少支 ? (7)完成字符串拷贝可以使用 sprintf、strcpy 及 memcpy 函数,请问这些函数有什么区别,你喜欢使用哪个,为什么? (8)main() { int s=10,k=10; do {s=s-3;k--;} while (s>1); printf( “ k=%d ” ,k); }程序运行的结果是 ____________ (9)下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(isr),请评论一下这段代码的错误。 __interrupt double compute_area (double radius) { double area = pi * radius * radius; printf(" area = %f", area); return area; } (10)阅读下列程序,回答问题。 # include main () { int a,b,m,n; scanf ( “ %d%d \ n ” , %a, %b); m=1; n=1; if (a>0) m=m+n; if (a else if (a==b) n=5; else n=m+n; printf ( “ m=%d n=%d \ n ” , m, n); } 当输入为 : -1 -2< 回车 > 时,写出程序的运行结果。 (11)编写子函数:(1)用冒泡法将一个数组排成升序的函数---sub1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---sub2。主函数:①输入任意10个正整数给数组;②调用sub1对数组进行排序;③从键盘输入一个正整数,调用sub2将其插入该数组。 (12)执行下列程序后,输出结果为 _______ 。 #include fun (int x) { int p; if ((x==0||(x==1)) return (3); p=x-fun(x-2); return p; } main() {printf( ″ %d \ n ″ ,fun(9)); } (13)编写strcpy函数: 已知strcpy函数的原型是 char *strcpy(char *strdest, const char *strsrc); 其中strdest是目的字符串,strsrc是源字符串。 (1)不调用c++/c的字符串库函数,请编写函数 strcpy (2)strcpy能把strsrc的内容复制到strdest,为什么还要char * 类型的返回值? (14)如何引用一个已经定义过的全局变量? (15)有一个整数n,写一个函数f(n),返回0到n之间出现的\"1\"的个数。比如f(13)=6,现在f(1)=1,问下一个最大的f(n)=n的n是什么? (16)static函数与普通函数有什么区别? (17)阅读下列程序,将输出结果写到各题右侧的空白处。 main( ) { int a[3][3]={1,4,17,3,6,19,2,5,18},i,s=0; for (i=0;i< s=s+a[i][2-i]; printf(″s=%d\n″,s); } (18)不用乘法或加法给一个数增加7倍。 (19)一堆数在一个集合中,总共2n个,问如何将这些数分成a,b两分,每分n个,要求a中的数均小于b中的数,需要考虑时间复杂度。 (20)找错 void test1() { char string[10]; char* str1=\"0123456789\"; strcpy(string, str1); } void test2() { char string[10], str1[10]; for(i=0; i<10;i++) { str1[i] ='a'; } strcpy(string, str1); } void test3(char* str1) { char string[10]; if(strlen(str1)<=10) { strcpy(string, str1); } } (21)不允许使用系统时间,写出一个随机数生成函数。 (22)编写子函数:(1)用冒泡法将一个数组排成升序的函数---sub1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---sub2。主函数:①输入任意10个正整数给数组;②调用sub1对数组进行排序;③从键盘输入一个正整数,调用sub2将其插入该数组。 (23)解二次方程:a*x*x+b*x+c int quadratic( double a,double b,double c,double& x1,double& x2); 返回值:解的个数 (24)全局变量定义在可被多个.c文件包含的头文件中可不可以?为什么? (25)以下程序的功能是用选择法对数组a中的整数由小到大进行排序。 void sort(int b[],int n) { int i,j,t; for(i = 0;i< - 1;i ++) for(______;j< ++) if(b[i]_____b[j]) {t = b[i];_____________;b[j]=t;} } main() { int a[]={5,8,6,2,7,4,1,3}; int i; sort(a,8); for(i = 0;i<8;i ++ ) printf(″﹪5d″,a[i]); printf(″\ n″); } 补充完整。 (26)#include void f1(x,y,z) int x,int y,int z; {x=x*x ; y=y*y; z=x+y; printf( ″ (1)x=%d y=%d z=%d \ n ″, x,y,z); } void f2(x,y,z) int *x,int *y,int *z; { *x=(*x)*(*x);*y=(*y)*(*y);*z=*x+*y; } void main() { int x=2,y=3,z=0; f1(x,y,z); printf( ″ (2)x=%d y=%d z=%d \ n ″ ,x,y,z); f2(&x,&y,&z); printf( ″ (3)x=%d y=%d z=%d \ n ″ ,x,y,z); } 运行结果如下: (27)以下程序的功能是用选择法对数组a中的整数由小到大进行排序。 void sort(int b[],int n) { int i,j,t; for(i = 0;i< - 1;i ++) for(______;j< ++) if(b[i]_____b[j]) {t = b[i];_____________;b[j]=t;} } main() { int a[]={5,8,6,2,7,4,1,3}; int i; sort(a,8); for(i = 0;i<8;i ++ ) printf(″﹪5d″,a[i]); printf(″\ n″); } 补充完整。 (28)阅读下列程序,回答问题。 #include int fun(int n); void main() { printf( ″ the fun of 3 is %d \ n ″ , fun(3)); printf( ″ the fun of 4 is %d \ n ″ , fun(4)); } int fun(int n) { int result=1; while (n > 1) result *=n--; return result; } 程序的运行结果是什么 ? (29)耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。 (30)简述头文件的功能,并列出两个头文件的名称。 (31)char * getstr() { char *tmp; tmp = \"123\" return tmp; } void main() { printf(\"%s\", getstr()); } 会输出123吗?123创建在堆上还是栈上呢?123的空间是什么时候释放的? (32)#include void main() { int c; while ((c=getchar())!= ′\ n ′ ) switch(c - ′ 2 ′ ) { case 0: case 1:putchar(c+4);break; case 2:putchar(c+4);break; case 3:putchar(c+3);break; default:putchar(c+2);break; } printf( ″\ n ″ ); } 运行时输入: 2473 ,输出结果: (33)main 函数执行以前,还会执行什么代码? (34)给你一个32位的六进制数,写一个程序让它倒序输出。 (35)循环的有序数组(比如1,2,3,4,5,-3,-2,-1这种数列)里查找一个数。 (36)将一个1m-10m的文件,逆序存储到另一个文件,就是前一个文件的最后一个字符存到新文件的第一个字符,以此类推。 (37)有200个正整数,且每个数均在1000至9999之间。请编制函数,其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。 (38)write a program to remove all comments from a c program. don't forget to handle quoted strings and character constants properly. c comments do not nest. (39)将任意证书n分解成多个互不相同的正整数的和,并打印所有可能的组合方式。例如n=6,组合方式有1+5,2+4,1+2+3。 (40)consider the following code: #include #include int main(int argc, char *argv[]) { int i = 1; char buf[4]; strcpy(buf, \"aaaa\"); printf(\"%d\n\", i); return 0; } a) when compiled and executed on x86, why does this program usually not output what the programmer intended? b) name several ways in which the security problem that causes this program not to output what the programmer intended can be prevented without changing the code. (41)char * p1; void * p2; int p3; char p4[10]; sizeof(p1...p4) =? (42)在一个文件中有 10g 个整数,乱序排列,要求找出中位数。内存限制为 2g。只写出思路即可。 (43)下面的程序或程序段存在一个错误或不妥处请在其下划一条线,并将改正的内容写到每小题后的空白处 main() { int a,*p; a=20; p=a; printf(“a=%d”,*p); } (44)write a function escape(s,t) that converts characters like newline and tab into visible escape sequences like \n and \t as it copies the string t to s . use a switch . write a function for the other direction as well, converting escape sequences into the real characters. (45)现有两个文件, a)数据文件a,格式为:关键词、ip地址、时间,记录条数为1000万左右,该文件是无序排列的。 b)数据文件b是关键词id到关键词的对应表文件,格式为:id、关键词,记录条数在100万左右,也是无序排列的。该对应表中的记录是一一对应的,不存在id或者关键词重复的情况。 要求将数据文件a对应的关键词替换为b中的id,生成新的数据文件c,数据文件c的格式为:关键词id、ip地址、时间。 请设计一个程序,实现上述功能,并分析时间复杂度和空间复杂度。运行程序所使用的服务器的内存为1g,硬盘足够大。(至少要给出关键算法和设计思路) (46)写一个生成随机数的类(或者函数)。 (47)现有两个文件, a)数据文件a,格式为:关键词、ip地址、时间,记录条数为1000万左右,该文件是无序排列的。 b)数据文件b是关键词id到关键词的对应表文件,格式为:id、关键词,记录条数在100万左右,也是无序排列的。该对应表中的记录是一一对应的,不存在id或者关键词重复的情况。 要求将数据文件a对应的关键词替换为b中的id,生成新的数据文件c,数据文件c的格式为:关键词id、ip地址、时间。 请设计一个程序,实现上述功能,并分析时间复杂度和空间复杂度。运行程序所使用的服务器的内存为1g,硬盘足够大。(至少要给出关键算法和设计思路) (48)char **p, a[16][8]; 问:p=a是否会导致程序在以后出现问题?为什么? (49)c++中的空类,默认产生哪些类成员函数? (50)输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。 如输入:56439,输出:5位数 5,6,4,3,9 9,3,4,6,5 (51)#include 和 #include “filename.h” 有什么区别? (52)程序填空 把文本文件 d1.dat 复制到文本文件 d2.dat 中,要求仅复制 d1.dat 中的英文字符。 #include void main() { _______ char ch; fpd1=fopen( ″ d1.dat ″ , ″ r ″ );_______ while(fscanf(fpd1, ″ %c ″ ,&ch)_______) if(_______||ch>= ′ a ′ &&ch<= ′ z ′ )fprintf(fpd2, ″ %c ″ ,ch); fclose(fpd1);fclose(fpd2); } (53)下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(isr),请评论一下这段代码的错误。 __interrupt double compute_area (double radius) { double area = pi * radius * radius; printf(" area = %f", area); return area; } (54)四个小孩正在花园里玩追捕游戏。一个小孩扮演逃亡者,其余三个小孩做追捕者。花园是一块由n行m列方格组成的草地,花园周围有木栏包围着,不能走出,花园里面还有一些障碍物不能够通过。游戏可以进行许多回合,每个回合分成两轮,第一轮追捕者可以进行追捕行动,第二轮逃亡者可以根据前一轮追捕者的行动开展逃亡旅程。在第一轮里,三个追捕者必须在三人中选择一个人向某个相邻的方格走一步,只有在三个人都没有可以走的相邻方格时,他们才允许选择停留在原地。在第二轮里,逃亡者也必须选择某个相邻的方格走一步,如果逃亡者没有任何可走的方格,那么逃亡者就被捕了。四个小孩都不允许走到有障碍物或其他人的方格上,也不能走出花园,因而,四个小孩总是会位于不同的方格上面。 这些小孩都是非常聪明的,三个追捕者也是团结一致的。追捕者如果有可以捉到逃亡者的方法,那么他们就一定不会错过。逃亡者如果有不被捕获的方法,那么他也不会犯错。除此之外,追捕者会希望尽快地捉到逃亡者,而逃亡者即使在会被捕获的情况下也会尽可能地拖延时间。给定花园的障碍物的分布图和四个小孩的初始位置,你知道追捕者有方法捉到逃亡者吗?如果有,他们要经过多少轮后才能捉到逃亡者呢? (55)阅读下列程序,将输出结果写到各题右侧的空白处。 main( ) { int x=20,y=40,*p; p=&x;printf(″%d,″,*p); *p=x+10; p=&y;printf(″%d\n″,*p); *p=y+20; printf(″%d,%d\n″,x,y); } (56)char * const p; char const * p const char *p 上述三个有什么区别? (57)模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用a、b、c、d表示,当选某候选人时直接输入其编号(编号由计算机随机产生),若输入的不是a、b、c、d则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数。 (58) write a program that prints a list of all words in a document, and, for each word, a list of the line numbers on which it occurs. remove noise words like "the", "and," and so on. (59)请编写一个 c 函数,该函数在一个字符串中找到可能的最长的子字符串,该字符串是由同一字符组成的。 (60)apartment在com中有什么用?为什么要引入? (61)c/c++编译器中虚表是如何完成的? (62)#include void main() { int k=0; char c= ′ a ′ ; do { switch (c++) { case ′ a ′ :k++; break; case ′ b ′ :k--; case ′ c ′ :k+=2;break; case ′ d ′ :k=k%2;break; case ′ e ′ :k=k*10;break; default:k=k/3; } k++; } while(c< ′ g ′ ); printf( ″ k=%d \ n ″ ,k); } 输出结果: _______ (63)用 100 元钱买 100 支笔,其中钢笔 3 元 / 支,圆珠笔 2 元 / 支,铅笔 0.5 元 / 支,问钢笔、圆珠笔和铅笔可以各买多少支 ? (64)你觉得c程序中为什么会有main(),有没有想过exit,return,或什么都不做也可以让程序正常终止? (65)write a program to count blanks, tabs, and newlines. (66)#include class value { public: value(int nval) {m_nval=nval;printf(\"call value::value(int nvalue)n\");} ~value() {printf(\"call value::~value()n\");} value& operator=(int nval) { m_nval=nval; printf(\"call value::operator=n\"); return *this; } void dump() {printf(\"value::m_nval=%dn\",m_nval);} protected: int m_nval; }; class base { public: base() {init();} virtual ~base() {release();} virtual void init() {printf(\"call base::init()n\");} virtual void release() {printf(\"call base::release()n\");} virtual void dump() {printf(\"call base::dump()n\");} }; class derive:public base { public:derive() {printf(\"call derive::derive()n\");} ~derive() {printf(\"call derive::~derive()n\");} virtual void init() {m_val=2;printf(\"call derive::init()n\");} virtual void release() {printf(\"call derive::release()n\");} virtual void dump() {m_val.dump();} protected: static value m_val; }; value derive::m_val=0; void destroyobj(base* pob) { pob->dump(); delete pob; } void main() { derive *pob=new derive; destroyobj(pob); } 写出结果 (67)定义 int **a[3][4], 则变量占有的内存空间为: (68)apartment在com中有什么用?为什么要引入? (69)不允许使用系统时间,写出一个随机数生成函数。 (70)写一个函数,将其中的t都转换成4个空格。 (71)头文件中的 ifndef/define/endif 干什么用? (72)以下为windows nt下的32位c++程序,请计算sizeof的值: char str[] = “hello” ; char *p = str ; int n = 10; 请计算 sizeof (str ) = sizeof ( p ) = sizeof ( n ) = void func ( char str[100]) { 请计算 sizeof( str ) = } void *p = malloc( 100 ); 请计算 sizeof ( p ) = (73)write a recursive version of the function reverse(s) , which reverses the string s in place. (74)已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。 (75)用两个栈实现一个队列的功能? (76)void getmemory(char **p,int num) { *p=(char *)malloc(num); } int main() { char *str=null; getmemory(&str,100); strcpy(str,"hello"); free(str); if(str!=null) { strcpy(str,"world"); } printf("\n str is %s",str); getchar(); } 问输出结果是什么? (77)全局变量定义在可被多个.c文件包含的头文件中可不可以?为什么? (78)怎样在复杂的各种形式的网页中提取mp3下载的结构化数据? (79)main主函数执行完毕后,是否可能会再执行一段代码? (80)写一段程序,找出数组中第k大小的数,输出数所在的位置。例如{2,4,3,4,7}中,第一大的数是7,位置在4。第二大、第三大的数都是4,位置在1、3随便输出哪一个均可。 (81)在主函数中输入6个字符串,用另一个函数对他们按从小到大的顺序,然后在主函数中输出这6个已经排好序的字符串。要求使用指针数组进行处理。 (82)在c++ 程序中调用被 c编译器编译后的函数,为什么要加 extern “c”声明? (83)打印一个n*n的方阵,n为每边字符的个数( 3〈n〈20 ),要求最外层为“x”,第二层为“y”,从第三层起每层依次打印数字0,1,2,3,... 例子:当n =5,打印出下面的图形: x x x x x x y y y x x y 0 y x x y y y x x x x x x (84)下面的声明都是什么意思? const int a; int const a; const int *a; int * const a; int const * a const; (85)多线程中的同步机制是什么,有什么优缺点? (86)main 主函数执行完毕后,是否可能会再执行一段代码,给出说明? (87)main 函数执行以前,还会执行什么代码? (88)如果只想让程序有一个实例运行,不能运行两个。像winamp一样,只能开一个窗口,怎样实现? (89)请写出下列代码的输出内容: #include main() { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } (90)char * const p; char const * p const char *p 上述三个有什么区别? (91)main 主函数执行完毕后,是否可能会再执行一段代码,给出说明? (92)在一个文件中有 10g 个整数,乱序排列,要求找出中位数。内存限制为 2g。只写出思路即可。 (93)循环的有序数组(比如1,2,3,4,5,-3,-2,-1这种数列)里查找一个数。 (94)函数invert的功能是使一个字符串按逆序存放。请填空。 void invert(char s[1]) { char t; int i,j; for (i=0,j=strlen(s);i< j;i++,j--) } t=s[i]; ______________________; s[j-1]=t; } } (95)将一个1m-10m的文件,逆序存储到另一个文件,就是前一个文件的最后一个字符存到新文件的第一个字符,以此类推。 (96)#include \"stdafx.h\" #define sqr(x) x*x int main(int argc, char* argv[]) { int a = 10; int k = 2; int m = 1; a /= sqr(k+m)/sqr(k+m); printf(\"%d\n\",a); return 0; } 这道题目的结果是什么? (97)根据蒙特卡洛算法计算圆周率 double pi( dowrd dwcount/*测试次数*/ ); 返回值:pi (98)下面的声明都是什么意思? const int a; int const a; const int *a; int * const a; int const * a const; (99)const 有什么用途?(请至少说明两种) (100)执行下述程序的输出结果是__________________。 #include < stdio.h> char b[]="abcdef"; main() { char *bp; for (bp=b;*bp;bp+=2) printf("%s",bp); printf("\n"); } (101)双向链表的删除结点 。 (102)描述内存分配方式以及它们的区别? (103) write a program that prints a list of all words in a document, and, for each word, a list of the line numbers on which it occurs. remove noise words like "the", "and," and so on. (104)建立一个链表,每个结点包括:学号、姓名、性别、年龄,输入一个学号,如果链表中的结点包括该学号,则输出该结点内容后,并将其结点删去。 (105)何谓全局变量 ? 为什么它能用于函数数据传递 ? (106)编写一个在二叉排序树中查找大小为第k的元素的算法。 (107)类的静态成员和非静态成员有何区别? (108)关键字volatile有什么含意?并举出三个不同的例子? (109)写一段程序,找出数组中第k大小的数,输出数所在的位置。例如{2,4,3,4,7}中,第一大的数是7,位置在4。第二大、第三大的数都是4,位置在1、3随便输出哪一个均可。 (110)写一个2分查找的算法。 (111)write the program expr , which evaluates a reverse polish expression from the command line, where each operator or operand is a separate argument. for example, expr 2 3 4 + * evaluates 2 x (3 + 4). (112)const 有什么用途?(请至少说明两种) (113)用最简单的方法判断一个数是否是2的指数次幂。 (114)重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别? (115)输入一字符串,检查是否回文 (回文是指正反序相同,如,level),若是则输出“yes”,否则输出“no”。 (116)write a program to print a histogram of the lengths of words in its input. it is easy to draw the histogram with the bars horizontal; a vertical orientation is more challenging. (117)给定一个集合a=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含),指定任意一个正整数k,请用a中的元素组成一个大于k的最小正整数。 * 比如,a=[1,0] k=21 那么输出结构应该为100 (118)用一种算法使通用字符串相匹配。 (119)write a recursive version of the function reverse(s) , which reverses the string s in place. (120)阅读下列程序段,简述其主要功能。 #include #include void main() { char a[100],b[100],*p,*q; int m; gets(a); scanf(“%d”,&m); p=a;q=b; for(p=p+m-1);*p!='\0';p++,q++) *q=*p; *q='\0'; printf(“%s\n”,b); } (121)write a function expand(s1,s2) that expands shorthand notations like a-z in the string s1 into the equivalent complete list abc...xyz in s2 . allow for letters of either case and digits, and be prepared to handle cases like a-b-c and a-z0-9 and -a-z . arrange that a leading or trailing - is taken literally. (122)write a program to remove all trailing blanks and tabs from each line of input, and to delete entirely blank lines. (123)两个单向链表,有可能交叉,请设计算法判断是否交叉,如果交叉,返回交叉点!算法复杂度o(n) (124)有一个unsigned long型整数,先要分别将其前2个字节和后2个字节用为两个unsigned int型整数输出(设一个int型数据占2个字节),试编写一函数partition实现上述要求。要求在主函数输入该long型整数,在函数 partition中输出结果。 (125)巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数,且首尾两数字之和也为一个素数。编程打印出所有的排法。 (126)write a program to count blanks, tabs, and newlines. (127)write a function rightrot(x,n) that returns the value of the integer x rotated to the right by n bit positions. (128)security 公司的网络管理工程师mr. leak最近发现有不少来自公司外部ip的请求,试图非法访问公司内部资源,为了不影响数据访问流程。他不得不写一个高效的程序——一个工作在ipv4上的防火墙,如果请求来自非授权的ip地址,则将请求丢弃。为了便于管理,通过文本文件ip.txt来配置授权的ip地址,文件格式为每行(’/n’)一个 ip地址(或ip段),范围不超过一个b类。例如: 162.105.91.163 59.66.105.0 59.66.105.255 211.71.0.0 211.71.255.255 限制:ip段的起止地址间以空格隔开。文件不超过10万行,内存不超过4m字节。 要求:请编写一个程序,读入ip.txt文件。并从标准输入接受一个ip地址。如果该地址在授权范围内,则在标准输出上打印y,否则打印n.如果输入为一个空行,程序结束。 请给出思路(文字描述),完成代码,分析你采用算法的优劣。请列举测试方法和思路 (129)现有两个文件, a)数据文件a,格式为:关键词、ip地址、时间,记录条数为1000万左右,该文件是无序排列的。 b)数据文件b是关键词id到关键词的对应表文件,格式为:id、关键词,记录条数在100万左右,也是无序排列的。该对应表中的记录是一一对应的,不存在id或者关键词重复的情况。 要求将数据文件a对应的关键词替换为b中的id,生成新的数据文件c,数据文件c的格式为:关键词id、ip地址、时间。 请设计一个程序,实现上述功能,并分析时间复杂度和空间复杂度。运行程序所使用的服务器的内存为1g,硬盘足够大。(至少要给出关键算法和设计思路) (130)执行printf("%d\n",(int)(2.5+3.0)/3);的输出结果是________________。 (131)write a program that prints out the distinct words in its input sorted into decreasing order of frequency of occurrence.precede each word by its count. (132)将一个链表逆序. (133)设计一函数,求整数区间[a,b]和[c,d]的交集。 (134)将一个n进制数转换成m进制数。 (135)const 有什么用途?(请至少说明两种) (136)一个文本文件有多行,每行为一个url。请编写代码,统计出url中的文件名及出现次数。 a) 文件名不包括域名、路径和url参数,例如http://www.ourday.cn/bbs/forumdisplay.php?fid=18中的文件名是forumdisplay。 b) 部分url可能没有文件名,例如http://www.ourday.cn/,这类统计为“空文件名”。 c) 出现在不同url中的相同文件名视为同一文件名,例如http://www.ourday.cn/index.php和ftp://ftp.ourday.cn/index.php为同一文件名 文件内容示例如下: http://www.ourday.cn/bbs/redirect.php?tid=480&goto=lastpost#lastpost http://www.ourday.cn/index.php ftp://ftp.ourday.cn/index.php http://www.ourday.cn/bbs/index.php?k=8 http://www.ourday.cn/bbs/forumdisplay.php?fid=16 http://www.ourday.cn/bbs/viewthread.php?tid=444&extra=page%3d1 http://www.ourday.cn/ http://www.ourday.com.cn/ (137)write a program to remove all trailing blanks and tabs from each line of input, and to delete entirely blank lines. (138)写一个程序,读入一个 3 × 3 的矩阵,输出它的转置。(注:转置是将原矩阵的行列互换) (139)找出一个文件中的特定单词,并打印包含该词的行。 (140)下面的代码有什么问题? char *_strdup( const char *strsource ) { static char str[max_str_len]; strcpy(str, strsource); return str; } (141)security 公司的网络管理工程师mr. leak最近发现有不少来自公司外部ip的请求,试图非法访问公司内部资源,为了不影响数据访问流程。他不得不写一个高效的程序——一个工作在ipv4上的防火墙,如果请求来自非授权的ip地址,则将请求丢弃。为了便于管理,通过文本文件ip.txt来配置授权的ip地址,文件格式为每行(’/n’)一个 ip地址(或ip段),范围不超过一个b类。例如: 162.105.91.163 59.66.105.0 59.66.105.255 211.71.0.0 211.71.255.255 限制:ip段的起止地址间以空格隔开。文件不超过10万行,内存不超过4m字节。 要求:请编写一个程序,读入ip.txt文件。并从标准输入接受一个ip地址。如果该地址在授权范围内,则在标准输出上打印y,否则打印n.如果输入为一个空行,程序结束。 请给出思路(文字描述),完成代码,分析你采用算法的优劣。请列举测试方法和思路 (142)不用中间变量,实现int a,b的交换。 (143)根据蒙特卡洛算法计算圆周率 double pi( dowrd dwcount/*测试次数*/ ); 返回值:pi (144)面向对象是什么意思,c++是如何实现的; (145)已知一个数组table,用一个宏定义,求出数据的元素个数。 (146)x=x+1,x+=1,x++,为这三个语句的效率排序。并说明为什么。 (147)谈谈com的线程模型。然后讨论进程内/外组件的差别。 (148)插入一个节点到一个有序链表。 (149)全局变量定义在可被多个.c文件包含的头文件中可不可以?为什么? (150)写一个方法(函数):判断一个单链表中是是否有环? (151)写一个单向链表的排序算法. (152)类classb从classa派生,如果classa中定义并实现虚函数int func(void),classb中也实现该函数,那么上述变量a->func()将调用哪个类里面的函数?如果int func(void)不是虚函数,情况如何?为什么? (153)在一个文件中有 10g 个整数,乱序排列,要求找出中位数。内存限制为 2g。只写出思路即可。 (154)假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间。此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式,那么你能找到不用这种方式的算法吗? (155)面向对象是什么意思,c++是如何实现的; (156)下面的程序或程序段存在一个错误或不妥处请在其下划一条线,并将改正的内容写到每小题后的空白处 main() { int a,*p; a=20; p=a; printf(“a=%d”,*p); } (157)无符号整数乘法,乘数为32bit,结果为64bit 提示:32bit整数分解为16bit相乘 void multiply( dword dwfirst, dword dwsecond, dword& dwhigh, dword& dwlower ); (158)c/c++编译器中虚表是如何完成的? (159)请编写一个 c 函数,该函数给出一个字节中被置 1 的位的个数,并请给出该题的至少一个不同解法。 (160)static全局变量与普通的全局变量有什么区别? 来源:笔试网 http://www.ipmao.com/ ;面试网 http://www.mianshiwang.com/ 选择题:(1)设int a,b;为使变量a和b分别获得数据10和20,则下列正确的是a.scanf(″%d,%d″,&a,&b);输入数据:10,20< 回车> b.scanf(″%d,%d″,&a,&b);输入数据:10 20< 回车> c.scanf(″%d,%d″,&a,&b);输入数据:a=10,b=20< 回车> d.scanf(″%d,%d″,a,b);输入数据:10,20< 回车> (2)sizeof(double)是 a.函数调用 b.int型表达式 c.double型表达式 d.非法表达式 (3)使用语句scanf(″a=%f, b=%f″, &a, &b);输入变量a、b的值(□代表空格),正确的是 a.1.25,2.4 b.1.25□2.4 c.a=1.25, b=2.4 d.a=1.25□b=2.4 (4)若变量a,b已正确定义并赋值,符合 c 语言语法的表达式是 a.a=b=a+1 b.a ≤ b c.a ≥ b d.a ≠ b (5)设int(*p)( );,则p是 a.一维数组的指针变量 b.函数的指针变量 c.二级指针变量 d.字符串的指针变量 (6)下列各语句中,能够且仅输出整型变量 a 、 b 中最大值的是 a.printf( ″ %d \ n ″ ,(a>b)?a,b); b.(a>b)? printf( ″ %d ″ ,a);printf( ″ %d ″ ,b); c.printf( ″ %d ″ ,if(a>b)a else b); d.printf( ″ %d \ n ″ ,(a>b)?a:b); (7)下列各语句定义了数组,其中一个不正确的是 a.static int a [ 5 ] ,b [ 2 ][ 3 ] ; b.char no [ 30 ] ,rec [ 30,6 ]; c.int x [] ={2,4,6,8,10}; d.int x [ 10 ] ={1,2,3,4,5} ; (8)设int a;,则语句for(a=0;a= =0;a++);和语句for(a=0;a=0;a++);执行循环的次数分别是 a.0,0 b.0,1 c.1,0 d.1,1 (9)下列格式符中,可以用于以 8 进制形式输出整数的是 a.%d b.%8d c.%o d.%1d (10)对语句“ int a [ 10 ] ,*p=a; ”,下列表述中哪一个是正确的 a.*p 被赋初值为 a 数组的首地址 b.*p 被赋初值为数组元素 a [ 0 ]的地址 c.p 被赋初值为数组元素 a [ 1 ]的地址 d.p 被赋初值为数组元素 a [ 0 ]的地址 (11)设宏定义#define p(x) x/x ,则执行语句printf(″%d\n″,p(4+6));后的输出结果是 a.1 b.8.5 c.11 d.11.5 (12)设int a=9, b=6, c;,执行语句c=a/b+0. 8;后c的值是 a.1 b.1. 8 c.2 d.2. 3 (13)执行语句“ k=5 ∧ 3 ;”后,变量 k 的当前值是 a.15 b.125 c.8 d.6 (14)设int a=9,b=20;则printf(″%d,%d\n″,a--,--b);的输出结果是 a.9,19 b.9,20 c.10,19 d.10,20 (15)设 char s[6],*ps=s;, 则正确的赋值语句是 a.s= " 12345 " ; b.*s= " 12345 " ; c.ps= " 12345 " ; d.*ps= " 12345 " ; (16)正确的c语言用户自定义标识符是 a.print b.float c.when d.random﹪2 (17)常数的书写格式决定了常数的类型和值, 0x1011 是 a.8 进制整型常量 b.字符常量 c.16 进制整型常数 d.2 进制整型常数 (18)设int a=9, b=6, c;,执行语句c=a/b+0.8;后c的值是 a.1 b.1.8 c.2 d.2.3 (19)结构型变量占用内存的字节数是 a.各成员占用内存字节数之和 b.第一个成员占用的内存字节数 c.占用内存最大成员所需的字节数 d.最后一个成员占用的内存字节数 (20)设int a=10, b=20, c=30;条件表达式a< b? a=5∶c的值是 a.5 b.10 c.20 d.30 (21)16 位二进制所表示的无符号整数,其相应的十进制数范围是 a.0~65536 b.1~65536 c.1~65535 d.0~65535 (22)下列定义正确的是 a.anum t={a,b}x; b.enum t{1,2}x; c.anum {′+′,′-′}x; d.enum t{a,b}x; (23)设指针x指向的整型变量值为万,则"printf("%d\n",++ *x);"的输出是 a.23 b.24 c.25 d.26 (24)在 c 语言程序中,用关键字 ( ) 定义长整型变量。 a.long b.float c.double d.char (25)执行下述程序的输出结果是( )。 #include < stdio.h> int m=13; int fun(int x,int y) { int m=3;; return (x*y-m); } main() { int a=7,b=5; printf ("%d\n",fun(a,b)/m); } a.1 b.2 c.7 d.10 (26)执行语句printf(″%x″, -1);后输出结果是 a.-1 b.-ffff c.1 d.ffff (27)执行下列程序 int a = 3, b = 4; void fun(int x1, int x2) {printf(″﹪d, ﹪d \ n″, x1 + x2, b);} main() {int a = 5, b = 6;fun(a, b);} 后输出的结果是 a.3,4 b.11,1 c.11,4 d.11,6 (28)以“w”方式打开文本文件a:\aa.dat,若该文件已存在,则 a.新写入数据被追加到文件末尾 b.文件被清空,从文件头开始存放新写入数据 c.显示出错信息 d.新写入数据被插入到文件首部 (29)设宏定义#define p(x) x/x ,则执行语句printf(″%d\n″,p(4+6));后的输出结果是 a.1 b.8.5 c.11 d.11.5 (30)在下列有关宏替换的叙述中,正确的说法是 a.宏替换占用运行时间 b.宏名有类型 c.带参数的宏替换和函数等价 d.宏替换只是字符替换 (31)宏定义“# define p(x,y,z) x=y*z ;”的宏替换“p(a,x+5,y - 3.1)”应为 a.a=x+5*y - 3.1 b.a=(x+5)*(y - 3.1); c.a=x+5*y - 3.1 d.a=(x+5)*(y - 3.1) (32)若定义了int b[][3]={1 ,2,3,4,5,6,7};,则b数组第一维的长度是 a.2 b.3 c.4 d.无确定值 (33)若定义了unsigned short a=32768;,则执行printf(″a=%d″,a);语句的输出结果是 a.a=-32768 b.a=-1 c.a=32768 d.数据类型不一致,出错 (34)设int a=9, b=6, c;,执行语句c=a/b+0.8;后c的值是 a.1 b.1.8 c.2 d.2.3 (35)设enum week {sun, mon, tue, wed, thu, fri, sat}day;,正确的赋值语句是 a.sun=0; b.sun=day; c.mon=sun+1; d.day=sun; (36)设int x=10, a=0, b=25;,条件表达式x<1?a+10:b的值是 a.0 b.1 c.10 d.25 (37)设有如下变量说明语句 char c[8]="beijing",*s=c; int i;; 则下面四个程序段中,有错误的是 a.printf("%s\n",s); b.printf("%s\n",*s); c.for (i=0;i<7;i++) printf("%c",c[i]); printf("\n"); d.for (i=0;i<7;i++) printf("%c",s[i]); printf("\n"); (38)c语言中计算a的3次方,正确的表达是 a.a^3 b.pow(a,3) c.a**3 d.power(a,3) (39)无条件转移语句的一般形式是:goto语句标号;,其中的语句标号可以是 a.整型数 b.标识符 c.保留字 d.实型数 (40)执行语句“ k=5 | 3; ”后,变量 k 的当前值是 a.1 b.8 c.7 d.2 (41)执行printf(″%d\n″,strlen(″t\″066\xee\n″));语句的输出结果是 a.7 b.12 c.13 d.输出项不合法,无正常输出 (42)设enum color {purple, black, red, white} d;, 若将d赋值为枚举常量red,则正确的是 a.d=(enum color)2; b.d=(enum color)3; c.d=″red″; d.d=color; (43)设函数定义如下: float f1 (float a, float b) { return (a+b); } 若有float x=1.1, y=2.2;,则以下语句中正确的函数调用是 a.printf (″%f″, f1(x)); b.printf (″%f″,f1(&x, y)); c.printf (″%f″,f1(*x,*y)); d.printf (″%f″,f1(x, y)); (44)文件 a.dat 中依次存放 0-9 十个字符 #include” stdio.h” main() { file*p; int i; char c; p=fopen(”a.dat”,”r”); for(i=0; i<4;i++) c=fgetc(p); fclose(p); printf(”%c\n”,c); }程序运行结果为 a.0123 b.3 c.4 d.0 (45)数组定义为“ int a [ 4 ] ; ”,表达式 ( ) 是错误的。 a.*a b.a [ 0 ] c.a d.a++ (46)设int a=7,b=8;则printf″%d,%d″,a+b,a,b,a+b;的输出是 a.7,15 b.8,15 c.15,7 d.出错 (47)执行语句“ k=14 ∧ 15; ”后,变量 k 的当前值是 a.1 b.8 c.7 d.2 (48)不正确的标识符是 a._a2 b.2ai c.a2_i d.int (49)若定义了int a;char b;float c;,则表达式a*b-c的类型是 a.float b.int c.char d.double (50)若变量a 的类型为t,则在程序中 a.可以通过new(a),得到指向a且类型为t的指针 b.可以有多个类型为t的指针变量指向a c.只能有一个类型为t的指针变量指向a d.可以通过new(a),得到指向t类型变量的指针a (51)下面各程序段中,( )是计算1到100之间所有奇数之和。 a.sum:=0; for n:=1 to 50 do sum:=sum+(2*n+1); b.sum:=0; for n:=1 to 50 do sum:=sum+(2*n-1); c.sum:=0; for n:=1 to 50 do sum:=sum+n+1; d.sum:=0 for n:=1 to 50 do sum:=sum+n-1 (52)下列关于c语言的叙述错误的是 a.英文字母大小写不加以区分 b.不同类型的变量可以出现在同一个表达式中 c.在赋值表达式中赋值号两边的类型可以不同 d.某些运算符在不同的场合可以有不同的含义 (53)c语言的保留字是 a.define b.enum c.main d.include (54)下列数据中,不是c语言常量的是 a.′\n′ b.″a″ c.e-2 d.012 (55)设 int x[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p=x, k;且0≤k<10, 则对数组元素x[k]的错误引用是 a.p+k b.*(x+k) c.x[p-x+k] d.*(&x[k]) (56)设typedef char *point;point p,q[3],*r;,则p、q和r分别是字符型的 a.变量、一维数组和指针变量 b.变量、二维数组和指针变量 c.指针变量、一维数组指针和二级指针变量 d.指针变量、一维指针数组和二级指针变量 (57)执行下列语句 int a=8,b=7,c=6; if(ac){a=c;c=b;} printf(″%d,%d,%d\n″,a,b,c); 后输出的结果是 a.6,7,7 b.6,7,8 c.8,7,6 d.8,7,8 (58)设 char s[6],*ps=s;, 则正确的赋值语句是 a.s= " 12345 " ; b.*s= " 12345 " ; c.ps= " 12345 " ; d.*ps= " 12345 " ; (59)假定a和b为int型变量,则执行下述语句组后,b的值为 a=1; b=10; do { b-=a; a++; } while (b--<0); a.9 b.-2 c.-1 d.8 (60)执行下述程序的输出结果是( )。 #include < stdio.h> main() { int w=5; fun(w); printf("\n") } fun (int k) { if (k>0) fun (k-1); printf ("%d ",k); } a.54321 b.012345 c.12345 d.543210 (61)设 int a[ ]={1,2,3,4,5},*p=a;则数组元素的正确表示是 a.a[2] b.&(a+1) c.a[5] d.&p (62)执行语句“ for(d=0;d!=60; d+=0.6) s+=d; ”时, a.循环在 d 等于 60 时终止 b.循环在 d 大于 60 时终止 c.循环在 d 小于 60 时终止 d.循环在 d 大于 60 后继续 (63)若变量已正确定义且 k 的值是 4 ,计算表达式 (j=k++) 后, ( ) 是正确的。 a.j=4,k=5 b.j=4,k=4 c.j=5,k=4 d.j=5,k=5 (64)下列说法中错误的是 a.c语言中循环嵌套的层数没有限定 b.c语言中的内部函数只能在本文件中被调用 c.用typedef语句定义的数据类型名称必须是大写字母 d.c语言中的continue语句,可以通过改变程序的结构而省略 (65)下列标识符中,不是c语言保留字的是 a.char b.while c.min d.default (66)以下对枚举类型的定义中正确的是 a.enum a={one,two,three}; b.enum a{one=9,two=-1,three}; c.enum a={"one","two","three"}; d.enum a{"one","two","three"}; (67)自动型变量分配在 a.内存的数据区中 b.cpu 的通用寄存器中 c.内存的程序区中 d.内存的堆栈区中 (68)设宏定义#define pi 3.1415926,用宏名pi替换的是 a.算术表达式 b.字符串 c.单精度实型数 d.双精度实型数 (69)不正确的标识符是 a._a2 b.2ai c.a2_i d.int (70)函数调用语句fun1,2,3,4;中参数的个数是 a.1 b.2 c.3 d.4 (71)对语句“ int a [ 10 ] ,*p=a; ”,下列表述中哪一个是正确的 a.*p 被赋初值为 a 数组的首地址 b.*p 被赋初值为数组元素 a [ 0 ]的地址 c.p 被赋初值为数组元素 a [ 1 ]的地址 d.p 被赋初值为数组元素 a [ 0 ]的地址 (72)在c语言中,有值函数的数据类型是指 a.函数形式参数的数据类型 b.函数返回值的数据类型 c.调用该函数时的实参的数据类型 d.任意指定的数据类型 (73)下列程序的运行结果是( ) # define a 5 # define b a+1 main( ) {int a; a=b; printf(″%d\n″a--); } a.6 b.5 c.4 d.出错 (74)设 char s[6],*ps=s;, 则正确的赋值语句是 a.s= " 12345 " ; b.*s= " 12345 " ; c.ps= " 12345 " ; d.*ps= " 12345 " ; (75)变量的指针含意是指变量的 a.值 b.地址 c.存储 d.名字 (76)下列错误的是 a.char s[]=″china″; b.char s[10]={″china″}; c.char s[10]; s=″china″; d.char s[10]={′c′, ′h′, ′i′,;′n′, ′a′}; (77)下列各语句定义了数组,其中哪一个是正确的 a.char a [ 10 ] ,*p=a [ 0 ] b.int d [ 2 ][] ={1,2,3,4,5,6}; c.float x [][ 3 ] ={{1,2},{4,6,8},{10}}; d.int m [][] ={ ″ no - 1 ″ , ″ no - 2 ″ , ″ no - 3 ″ }; (78)若定义了int a,x,y;,则下列语句中不正确的是 a.x=3,y=5; b.++x c.x=y+=x*30; d.a=y+x=30; (79)表达式 !x||a==b 等效于 a.!((x||a)==b) b.!(x||y)==b c.!(x||(a==b)) d.(!x)||(a==b) (80)在软件生命周期中,下列哪个说法是不准确的? a.软件生命周期分为计划、开发和运行三个阶段 b.在计划阶段要进行问题焉醛和需求分析 c.在开发后期要进行编写代码和软件测试 d.在运行阶段主要是进行软件维护 (81) 来源:笔试网 http://www.ipmao.com/ ; 面试网 http://www.mianshiwang.com/ |
|
||
| 粤ICP备08124962号 | |||