几道c笔试题(含参考答案).doc_第1页
几道c笔试题(含参考答案).doc_第2页
几道c笔试题(含参考答案).doc_第3页
几道c笔试题(含参考答案).doc_第4页
几道c笔试题(含参考答案).doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.What is displayed when f() is called given the code:class Number public:string type;Number(): type(“void”) explicit Number(short) : type(“short”) Number(int) : type(“int”) ;void Show(const Number& n) cout n.type; void f()short s = 42;Show(s);a) voidb) shortc) intd) None of the above2. Which is the correct output for the following codedouble dArray2 = 4, 8, *p, *q;p = &dArray0;q = p + 1;cout q p endl;cout (int)q (int)p endl;a) 1 and 8b) 8 and 4c) 4 and 8d) 8 and 1第一个选C;虽然传入的是short类型,但是short类型的构造函数被生命被explicit,也就是只能显示类型转换,不能使用隐式类型转换。第二个选A;第一个是指针加减,按照的是指向地址类型的加减,只跟类型位置有关,q和p指向的数据类型以实际数据类型来算差一个位置,因此是1。而第二个加减是实际指针值得加减,在内存中一个double类型占据8个字节,因此是8c/c+某大公司的两道笔试题(含参考答案 )1.一群人围成一圈,123的报数,报3者出列,求最后一个人。2.利用链表实现将两个有序队列A和B合并到有序队列H中,不准增加其他空间。请提供全一点的程序第一题:/ kickout.cpp : Defines the entry point for the console application./#include “stdafx.h”#include “malloc.h”#include “stdio.h”int main()int m,n;int kickouts = 0;int *p = NULL;int i ,j;i=j=0;printf(“Please input m,n:”);scanf(“%d,%d”,&m,&n);while(ndata data)h-data = a-data;a = a-next;else if (a-data = b-data)h-data = a-data;a = a-next;b = b-next;elseh-data = b-data;b = b-nexth = h-next;if (a = NULL)while (b != NULL)h-data = b-data;h = h-next;b = b-next;elsewhile(a != NULL)h-data = a-next;h = h-next;a = a-next;C语言面试题1。编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。char * search(char *cpSource, char ch)char *cpTemp=NULL, *cpDest=NULL;int iTemp, iCount=0;while(*cpSource)if(*cpSource = ch)iTemp = 0;cpTemp = cpSource;while(*cpSource = ch)+iTemp, +cpSource;if(iTemp iCount)iCount = iTemp, cpDest = cpTemp;if(!*cpSource)break;+cpSource;return cpDest;2。请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值。int search(char *cpSource, int n, char ch)int i;for(i=0; ireturn i;一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?将这个指针指向的next节点值copy到本节点,将next指向next-next,并随后删除原next指向的节点。#include void foo(int m, int n)printf(“m=%d, n=%dn”, m, n);int main()int b = 3;foo(b+=3, +b);printf(“b=%dn”, b);return 0;输出:m=7,n=4,b=7(VC6.0)这种方式和编译器中得函数调用关系相关即先后入栈顺序。不过不同编译器得处理不同。也是因为C标准中对这种方式说明为未定义,所以各个编译器厂商都有自己得理解,所以最后产生得结果完全不同。因为这样,所以遇见这种函数,我们首先要考虑我们得编译器会如何处理这样得函数,其次看函数得调用方式,不同得调用方式,可能产生不同得结果。最后是看编译器优化。2.写一函数,实现删除字符串str1中含有的字符串str2.第二个就是利用一个KMP匹配算法找到str2然后删除(用链表实现的话,便捷于数组)/*雅虎笔试题(字符串操作)给定字符串A和B,输出A和B中的最大公共子串。比如A=”aocdfe” B=”pmcdfa” 则输出”cdf”*/Author: azhen#include#include#includechar *commanstring(char shortstring, char longstring)int i, j;char *substring=malloc(256);if(strstr(longstring, shortstring)!=NULL) /如果,那么返回shortstringreturn shortstring;for(i=strlen(shortstring)-1;i0; i) /否则,开始循环计算for(j=0; jstrlen(str2) /将短的字符串放前面comman=commanstring(str2, str1);elsecomman=commanstring(str1, str2);printf(“the longest comman string is: %sn”, comman);11.写一个函数比较两个字符串str1和str2的大小,若相等返回0,若str1大于str2返回1,若str1小于str2返回1int strcmp ( const char * src,const char * dst)int ret = 0 ;while( ! (ret = *(unsigned char *)src *(unsigned char *)dst) & *dst)+src;+dst;if ( ret 0 )ret = 1 ;return( ret );3,求1000!的未尾有几个0(用素数相乘的方法来做,如72=2*2*2*3*3);求出1-1000里,能被5整除的数的个数n1,能被25整除的数的个数n2,能被125整除的数的个数n3,能被625整除的数的个数n4.1000!末尾的零的个数=n1+n2+n3+n4;#include#define NUM 1000int find5(int num)int ret=0;while(num%5=0)num/=5;ret+;return ret;int main()int result=0;int i;for(i=5;i=NUM;i+=5)result+=find5(i);printf(” the total zero number is %dn”,result);return 0;用C语言写个函数,完成去掉字符串左边的空格,把右边的空格用0填充。调用之,然后打印出来。C语言基础笔试题 1、C语言程序的基本单位是_ A) 程序行 B) 语句 C) 函数 D) 字符、C、12、C语言程序的三种基本结构是_ A、顺序结构,选择结构,循环结构 B、递归结构,循环结构,转移结构 C、嵌套结构,递归结构,顺序结构 D、循环结构,转移结构,顺序结构、A、13、C语言规定,程序中各函数之间 A) 既允许直接递归调用也允许间接递归调用 B) 不允许直接递归调用也不允许间接递归调用 C) 允许直接递归调用不允许间接递归调用 D) 不允许直接递归调用允许间接递归调用、A、14、C语言中可处理的文件类型是( ) A) 文本文件和数据文件 B)文本文件和二进制文件 C) 数据文件和二进制文件 D)数据代码文件、B、15、C语言可执行程序的开始执行点是( ) A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数、C、16、C语言提供的合法的数据类型关键字是 A)double B) short C) integer D) char、B、17、C语言中,运算对象必须是整型数的运算符是 A) % B) C) %和 D) * *、A、18、C语言中函数返回值的类型是由( )决定。 A) return语句中的表达式类型 B) 调用函数的主调函数类型 C) 调用函数时临时 D) 定义函数时所指定的函数类型、D、19、C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为_。 A、 该数组的长度。 B、 该数组的元素个数。 C、 该数组中各元素的值。 D、 该数组的首地址。、D、110、C语言中数组下标的下限是_。 A、1 B、0 C、视具体情况 D、无固定下限、B、111、C语言中提供的合法关键字是_ A、swith B、cher C、case D、default、D、112、C语言中文件的存取方式是_。 A、顺序存取 B、随机存取 C、顺序存取、随机存取均可 D、顺序存取、随机存取均不可、C、113、C语言中最简单的数据类型包括 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型、B、114、sizeof(float)是( ) A) 一种函数调用 B) 一个不合法的表示形式 C) 一个整型表达式 D) 一个浮点表达式、C、115、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是 A) input x,y,z; B) scanf(“%d%d%d”,&x,&y,&z); C) scanf(“%d%d%d”,x,y,z); D) read(“%d%d%d”,&x,&y,&z);、B、116、表达式:10!=9的值是 A) true B) 非零值 C) 0 D) 1、D、117、表示关系x=y=z的c语言表达式为 A) (X=Y)&(Y=Z) B) (X=Y)AND(Y=Z) C) (X=Y=Z) D) (X=Y)&(Y=Z)、A、118、程序片段:在TC20中, int i=65536; printf(%d,i);的输出结果是_ A) 65536 B) 0 C) 有语法错误,无输出结果 D) -1、B、119、当调用函数时,实参是一个数组名,则向函数传送的是_ A) 数组的长度 B) 数组的首地址 C) 数组每一个元素的地址 D) 数组每个元素中的值、B、120、对嵌套子程序调用说法正确的是_。 A、 外层子程序可以调用所有的内层子程序 B、 内层了程序只可以调用包含本身的外层子程序,不可以隔层调用 C、 外分程序必须能完全套住内分程序 D、 以上说法均不正确、C、121、对于基类型相同的两个指针变量之间,不能进行的运算是 A) B) = C) + D) -、C、122、合法的C语言中,合法的长整型常数是 A) t B) A C) 65 D) A、A、123、假定int类型变量占用两个字节,其有定义:int x10=0,2,4;,则数组x在内存中所占字节数是 A) 3 B) 6 C) 10 D) 20、D、124、假定有以下变量定义: int k=7 ,x=12; 则能使值为3的表达式是 A x%=(k%=5) B x%=(k-k%5) C x%=k-k%5 D (x%=k)-(k%=5)、D、125、请读程序片段(字符串内没有空格): printf(%d,strlen(ATS0121);的输出结果是 A) 11 B) 10 C) 9 D) 8 、C、126、请选出合法的C语言赋值语句 A) a=b=58 B) i+; C) a=58,b=58 D) k=int(a+b);、B、127、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是 A) -3 B) 9 C) -12 D) 6、C、128、若int类型占两个字节,则以下语句输出为_。 int k=-1; printf(%d,u%,k,k); A、-1,-1 B、-1,65536 C、-1,32768 D、-1,65535、D、129、若变量a是int类型,并执行了语句:a=A+1、6;,则正确的叙述是 A) a的值是字符C B) a的值是浮点型 C) 不允许字符型和浮点型相加 D) a的值是字符A的ASCII值加上1。、D、130、若变量已正确说明为float类型,要通过语句scanf(%f %f %f ,&a,&b,&c);给a赋于10、0,b赋予22、0,c赋予33、0,不正确的输入形式是: A) 10 B) 10、0,22、0,33、0 22 33 C) 10、0 D) 10 22 22、0 33、0 33、B、131、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为 A) a0 B) !a C) a=0 D) a、B、132、若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是 A)1 B)2 C)2、0 D)2、5、C、133、若有定义:int a=8,b=5,c;,执行语句c=a/b+0、4;后,c的值为 A) 1、4 B) 1 C) 2、0 D) 2、B、134、若有定义:int x,y;char a,b,c;并有以下输入数据(此处 代表换行符,/u代表空格): 1u2 AuBuC 则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C 的正确程序段是 A) scanf(“x=%d y+%d”,&x,&y);a=getchar();b=getchar();c=getchar(); B) scanf(“%d %d”,&x,&y);a=getchar();b=getchar();c=getchar(); C) scanf(“%d%d%c%c%c,&x,&y,&a,&b,&c); D) scanf(“%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&c);、D、135、若有定义和语句: char s10:s=”abcd”;printf(“%s”,s); 则结果是(以下u代表空格) A) 输出abcd B) 输出a C) 输出abcduuuuu D) 编译不通过、D、136、若有以下程序段, int c1=1,c2=2,c3; c3=1、0/c2*c1; 则执行后,c3中的值是 A) 0 B) 0、5 C) 1 D) 2、A、137、若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c值的类型为 A) float B) int C) char D) double、D、138、若有以下定义和语句 char c1=b,c2=e; printf(“%d,%c”,c2-c1,c2-a+”A”); 则输出结果是: A)2,M B)3,E C)2,E D)输出项与对应的格式控制不一致,输出结果不确定、B、139、若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b);在此函数调用语句中实参的个数是 A)3 B)4 C)5 D)6、A、140、若执行下面的程序时从键盘上输入3和4,则输出是_ A) 14 B) 16 C) 18 D) 20 main( ) int a,b,s; scanf(“%d %d”,&a,&b); s=a; if(a、B、141、若执行下面的程序时从键盘上输入5,则输出是 A) 7 B) 6 C) 5 D) 4 main() int x; scanf(“%d”,&x); if(x+5) printf(“%d”,x); else printf(“%d”,x);、B、142、若执行以下程序时从键盘上输入9,则输出结果是 A) 11 B) 10 C) 9 D) 8 main( ) int n; scanf(“%d”,&n); if(n+、B、143、设 a、b、c、d、m、n均为 int型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式 (m=ab)&(n=cd)运算后,n的值为_ A) 0 B) 1 C) 2 D) 3、C、144、设 int a=12,则执行完语句 a+=a-=a*a后,a的值是 A) 552 B) 264 C) 144 D) -264、D、145、设 int b=2;表达式(b2)/(b1)的值是 A) 0 B) 2 C) 4 D) 8、A、146、设a,b和c都是int型变量,且a=3,b=4,c=5,则下列表达式中,值为0的表达式是_ A)a&b B)ay)+(y!=z)|(x+y)&(y-z) A、0 B、1 C、-1 D、6、B、149、设x和y均为int 型变量,则以下语句:x+=y;y=x-y;y=x-y;x-=y;的功能是 A、把x 和y按从大到小排列 B、把x和y按从小到大排列 C、无确定结果 D、交换x和y中的值、D、150、设有 int x=11; 则表达式 (x+ * 1/3) 的值是 A) 3 B) 4 C) 11 D) 12、A、1南京-四达荣合C/C+笔试题 一:填空:2. int i = 10, j = 10, k = 3, k /= i + j, k = _.3. 现有函数Setattr(int a, int b, int c). 已知b无初始值, a的初始值等于1, c的初始值等于0, 那么此函数的声明形式为:_.4. 在C中,预编译定义的关键字是_, 常量定义的关键字是:_.5. 在C中,检测字符串长度的函数是:_, 拷贝字符串的函数是:_,比较两个字符串的函数是:_,连接字符串的函数是:_,使用这些函数需调用的头文件是:_.6. 已知字符串char topic = “hello,hello hello money!”, sizeof(topic) = _, strlen(topic)=_.二:问答题:1. main函数的参数argc和argv的作用是什么?如何获得某个应用程序的第三个命令行参数.2. if( n = 10) 1.if( 10 = n) 2哪一种写法是正确的, 为什么?3. -1.const char *p;-2.char const *p;-3.char * const p;-4 const char * const p;请描述一下以上四种写法的区别.三:分析题:考点:函数的按值传递及引用传递.多态(基类指针指向派生类对象, 基类引用指向派生类对象).函数重载,静态成员(静态方法).四.编程题.1. 已知字符串操作函数中有字符串拷贝函数strcpy().现有自定义字符串拷贝函数Strcpy的声明: char* Strcpy(char* strDest, const char* strSrc).-1.实现该自定义字符串拷贝函数.-2.该函数具备拷贝字符串的功能,为什么要返回char*型变量.2.已知一个链表中存放了10个数,请对该链表进行逆置.以下是该链表结点的声明:struct nodeint num;struct node* next;3.1.为一个整型数组添加一组随机数.2.分区排序:从数组中任意选取一个数作为参照数,遍历该数组,将大于此数的数的数放在一边, 将小于此数的数的数放在另一边, 依次类推,完成排序.上海C语言面试题 C方向1.在X86系统中,如下变量在内存中的字节存放顺序。DWORD Value1=0x8010011cUINT Value2=128012.ASCII和Unicode有什么区别?汉字是如何显示的?3.说出你最熟悉的三种排序方法,用你最熟悉的语言写出其中一种。5.是否了解MVC模式,其中M、V、C各表示什么?6.列举出你曾经用过或者了解的几种设计模式?7.int iVal1 = 0, iVal2 = 0;int * ipVal;ipVal = &iVal1; What is the Value of ipVal = *ipVal =ipVal = (int*)iVal1; What is the Value of ipVal = *ipVal =iVal2 = (int)&iVal1; What is the Value of ipVal = *ipVal =8.void SwapAB(int A, int B)A=B;B=A;int main()int A,B;A=1;B=2;SwapAB(A,B);return 0; / A= ?, B= ?What is the value of A and B ?What is the difference between STRUCTURE and OBJECT ORIENTED PROGRAMMING ?What is the diff

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论