C语言笔试题及参考答案-东软集团
C语言笔试题及参考答案-东软集团
1、局部变量能否和全局变量重名?
答:能,局部会屏蔽全局。要用全局变量,需要使用":: "
局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。
2、如何引用一个已经定义过的全局变量?
答:extern ,可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。
3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?
答:可以,在不同的C文件中以stati c形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错4、语句for( ;1 ;)有什么问题?它是什么意思?
答:和while(1)相同。
5、do……while和while……do有什么区别?
答:前一个循环一遍再判断,后一个判断以后再循环
6、请写出下列代码的输出内容
#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;
}
答:10,12,120
7、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用
的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
8、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)中。
9、设有以下说明和定义:
typedef union {long i; int k[5]; char c;} DA TE;
struct data { int cat; DA TE cow; double dog;} too;
DA TE max;
则语句printf( "%d ",sizeof(struct date)+sizeof(max));的执行结果是:___52____
答:DA TE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20
data是一个struct, 每个变量分开占用空间. 依次为int4 + DA TE20 + double8 = 32.
所以结果是20 + 32 = 52.
当然...在某些16位编辑器下, int可能是2字节,那么结果是int2 + DA TE10 + double8 = 20 10、队列和栈有什么区别?
队列先进先出,栈后进先出
11、写出下列代码的输出内容
#include
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)
{
INCp= &inc;
int temp =p(arg1);
fun( &temp,&arg1, arg2);
printf( "%d\n ",*arg2);
}
main()
{
int a;
show(multi,10, &a);
}
答:110
11、请找出下面代码中的所以错误
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”
1、#include "string.h "
2、main()
3、{
4、char*src= "hello,world ";
5、char* dest=NULL;
6、int len=strlen(src);
7、dest=(char*)malloc(len);
8、char* d=dest;
9、char* s=src[len];
10、while(len--!=0)
11、d++=s--;
12、printf( "%s ",dest);
13、return 0;
14、}
答:
方法1:
int main()
{
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( "%s\n ",dest);
free(dest);// 使用完,应当释放空间,以免造成内存汇泄露
return 0;
}
方法2:
#include
#include
main()
{
char str[]= "hello,world ";
int len=strlen(str);
char t;
for(int i=0; i {
str[i]=str[len-i-1]; str[len-i-1]=t;
}
printf( "%s ",str);
return 0;
}
12。对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
答案:c用宏定义,c++用inline
13。软件测试都有那些种类?
答案:黑盒:针对系统功能的测试白合:测试函数功能,各函数接口
14。确定模块的功能和模块的接口是在软件设计的那个队段完成的?
答案:概要设计阶段
15。enum string
{
x1,
x2,
x3=10,
x4,
x5,
}x;
问x;
答案:取值在0。1。10。11。12中的一个
16。unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
请问p1+5= ;
p2+20= ;
答案:801005;810014。不要忘记了这个是16进制的数字,p2要加20变为16进制就是14 选择题:
1.Ethternet链接到Internet用到以下那个协议?
A.HDLC;
B.ARP;
C.UDP;
D.TCP;
E.ID
2.属于网络层协议的是:
A.TCP;
B.IP;
C.ICMP;
D.X.25
3.Windows消息调度机制是:
A.指令队列;
B.指令堆栈;
C.消息队列;
D.消息堆栈;
答案:b,a,c
二找错题:
1.请问下面程序有什么错误?
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;
答案:把循环语句内外换一下
2。以下是求一个数的平方的程序,请找出错误:
#define SQUARE(a) ((a)*(a))
int a=5;
int b;
b=SQUARE(a++);
答案:这个没有问题,s(a++),就是((a++)×(a++))唯一要注意的就是计算后a =7了
3。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;
}
.......}答案:要释放内存
东软Java笔试题答案
Java面向对象程序设计 考试卷 一、选择题(没有注明多选,则为单选) 1、下列变量定义错误的是 A.int a; B.double b=; C.boolean b=true; D.float f=; 2、6+5%3+2的值是 A. 2 B. 1 C.9 D.10 3、对于一个三位的正整数 n,取出它的十位数字k(k为整型)的表达式是 A.k = n / 10 % 10 arseFloat(str); 4、下边程序运行的结果是?实例化子类对象要看父类 A. Base { Base() { "Base"); } B.程序运行但没有任何输出 C.程序编译失败 D.程序抛出异常
B.Hello91 C. D.程序编译失败 7、下列说法正确的是? C A.一个子类可以有多个父类,一个父类也可以有多个子类 B.一个子类可以有多个父类,但一个父类只可以有一个子类 C.一个子类可以有一个父类,但一个父类可以有多个子类 D.上述说法都不对 B.在第6行产生一个运行时异常 C.在第6行产生一个编译错误 D.在第2行产生一个编译错误 B.i=10 C.程序有编译错误 D.i=true
B.byte C.long D.double B.Not Equal C.编译失败 D.程序没有任何输出结果 D.double 不行 E.object B.-987 C.33 14、程序输出的结果是?
B.BD C.E ACD D.ABCD C.程序编译错误 D.程序运行时抛出异常 C.编译失败,错误在第2行
D.编译失败,错误在第6行 17、下面表达式计算的结果和返回值类型分别是? + ())); 0-1之间的小数 A. B. C.float D.double E.一个随机数 B. 1 C.42 D.43 答题卡 二、编程题 注意:书写清晰,看不清楚不给分,注意字体大小,写不下可以写在背面,标清题号。
C语言期末考试题(含答案)
《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是() A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中() A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是() A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是() A )x1=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:floata=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不.相符的是() A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是() A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue 7.在while (!x )语句中的!x 与下面条件表达式等价的是() A)x!=0B)x==1C)x!=1D)x==0
8、有以下程序: #include
嵌入式C语言经典笔试题目
嵌入式c语言经典笔试题目 1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 .写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B)((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3)懂得在宏中小心地把参数用括号括起来 4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3.预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,
东软集团面试题及答案
东软集团面试题及答案 1堆和栈那个是对程序员透明的? 2请结合具体实例阐述一下面向对象中"多态"的概念。 答案:同一操作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的结果,它有两种: T编译时多态----通过overload来实现,系统在编译时,根据传递的参数和返回的类型等信息决定实现何种操作 T运行时多态----通过override来实现,根据运行时具体对象的类型决定调用哪个方法。 给我面试的人很有亲和力,我没有感到有压力。 首先是自我介绍;他根据你自己介绍的情况来问你问题,我主要是 说得现在正在做的青软实训内部管理系统。 你在项目组里主要负责什么?是怎么做的? 主要负责页面前台展示,我现在设计页面框架,用的Struts-tile;把页 面分为4 咅B分,sidebar,header,footer,c on tex然后把 sidebar,header,footer 这些每个页面都要用的写成一个整体,放在配置文件中,每个页面都引用他,这样就不用变了。变得就是con text部分。另外在sidebar里面,用
javascript来实现导航栏的弹出功能。 用什么方法可以检测一个环行链表? 首先可以在data 里面初始化一个数据,然后向下循环,可以找到这条数据的话,就是环行链表,否则就不是;但这个链表不一定是完全的链表,里面可能有分支,该怎么检测?设置一个循环,条件设为true,如果可以结束就不是,不能结束里面就有环。 那这样的话怎么让他跳出循环呢?我也不知道,那请教一下吧。 你看看如果next引用如果相同的话是不是就是环行链表?对,是那你想个办法来实现他吧。 把这个next引用,写进一个list,以后都把next引用和list里面的内容进行比较,如果有相同的就是环,没有就不是。 但如果链表很大,而你做的是嵌入式项目,有内存溢出,该怎么检测呢? 呵呵, 我想不出来了。 1. 2.自我介绍,(注自我介绍中的自我经历可能会成为他的考点) 3.我在自我介绍中说了我参加过数学建模, 他问了我我们建的什么模型,我给他介绍了一下。主要考点是你的思路问题。 4.单链表若最后一个节点指向前面的某个节点, 请问怎么检测出现了环?主要是考察你对问题有无解决方案,不对也无所谓,最后他一定会把你难倒。怎么也要说上几句,不说那就over 了。 5.Fi nal 和fin ally 的区别? 6.Java的垃圾回收机制?
c语言笔试题(答案)(精心整理)
笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 ) 2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void) { char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S 问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 )
东软集团招聘笔试试题
东软集团招聘笔试试题(11) 第一部分(通用能力类) 1 、某学校2006 年度毕业学生7650 名,比上年度增长 2 % . 其中本科毕业生比上年度减少2 % . 而研究生毕业生数量比上年度增加10 % , 那么,这所高校今年毕业的本科生有: A .3920人 B .4410人 C .4900人 D .5490人 2 、现有边长1 米的一个木质正方体,已知将其放入水里,将有0 . 6 米浸入水中.如果将其分割成边长0. 25 米的小正方体,并将所有的小正方体都放入水中,直接和水接触的表内积总量为: A .3. 4平方米 B .9. 6平方米 C .13. 6平方米 D .16 平方米 3 、把144张卡片平均分成若干盒,每盒在10 张到40 张之间,则共有()种不同的分法。 A .4 B .5 C .6 D .7 4 、从一副完整的扑克牌中.至少抽出()张牌.才能保证至少6 张牌的花色相同。 A . 2 1 B . 22 C . 23 D . 24 5、小明和小强参加同一次考试,如果小明答对的题目占题目总数的3 / 4 .小强答对了27 道题,他们两人都答对的题目占题目总数的2 / 3 ,那么两人都没有答对的题目共有: A . 3道 B . 4道 C . 5道 D .6 道 6、甲乙两人在一条椭圆型田径跑道上练习快跑和慢跑,甲的速度为3M/S,乙的速度为7M/S,他们在同一点同向跑步,经过100S第一次相遇,若他们反向跑,多少秒后第一次相遇() A 30 B 40 C 50 D70 7、有一堆钢管,最下面一层有30根,逐层向上递减一根,这堆钢管最少有多少根?()A 450 B 455 C 460 D465 8、甲乙丙三名羽毛球选手训练共用了48个羽毛球,其中甲比乙多用了4个,乙比丙多用了4个,他们三个用的羽毛球数之比为()A 5:4:3 B 6:5:4 C 4:3:2 D 3:2:1 9、 10、
C语言笔试题带答案6doc
2014-06-13 06:30:01 阅读( 135 ) 标签: 一、选择题(1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)在数据结构中,从逻辑上可以把数据结构分为_______。 A)动态结构和静态结构 B)紧凑结构和非紧凑结构 C)线性结构和非线性结构D)内部结构和外部结构 答案:C 评析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。 (2)若进栈序列为l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是_______。 A)1,4,3,2 B)2,3,4,l C)3,1,4,2 D)3,4, 2,1
答案:C 评析:栈是一种后进先出表,选项c中,先出栈的是3,说明此时栈内必然有1,2,由于l 先于2进栈,所以l不可能在2之前出栈,故选项C这种出栈序列是不可能的。 (3)排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_______。 A)希尔排序B)冒泡排序C)插入排序D)选择排序 答案:A 评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 (4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为_______。 A)2 B)3 C)4 D)5 答案:C
评析:二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边子表按相同的方法继续查找。本题中,与ll比较的关键码分别为15,8,10,12四个。 (5)对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。 A)n-1 B)n C)n+l D)2n 答案:C 评析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。 (6)在软件开发过程中,软件结构设计是描述_______。 A)数据存储结构 B)软件体系结构C)软件结构测试D)软件控制过程 答案:B
c语言笔试题目及答案
c语言笔试题目及答案 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面是c语言笔试题目及答案,请参考。 c语言笔试题目及答案 一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选 项涂写在答题卡相应位置上,答在试卷上不得分。 (1)数据的存储结构是指________。 A)存储在外存中的数据 B)数据所占的存储空间量 C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示 答案:D 评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。 (2)下列关于栈的描述中错误的是________。 A)栈是先进后出的线性表
B)栈只能顺序存储 C)栈具有记忆作用 D)对栈的插入与删除操作中,不需要改变栈底指针 答案:B 评析:栈是一种特殊的线性表,又称先进后出表(FILO—First In Last Out)。 (3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ________。 A)冒泡排序为n2 B)冒泡排序为n C)快速排序为n D)快速排序为n(n一1)/2 答案:D 评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。 (4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为________。 A)log2n B)n/2 C)n D)n+l 答案:C 评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较
东软笔试题0715
1,下列选项中正确的有:(E) A Boolean b = null; B char c = "a"; C int i = 257; D float f = 1.7; E int a=10; 2,选择输出结果正确的是:() package Test; public class CeShi { public static void main(String[] args) { System.out.println(args[2]); } } C:出现异常:https://www.360docs.net/doc/f315942830.html,ng.ArrayIndexOutOfBoundsException: 2 3,对线性表,在下列哪种情况下应当采用链表表示( B )。 A)经常需要占据一片连续的存储空间 B)经常需要进行插入和删除操作 C)经常需要随机地存取元素 D)表中元素的个数不变 4,一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是( C ) A. 2 3 1 B. 3 2 1 C. 3 1 2 D. 1 2 3 5,队列的--插入--操作时在队列的---队尾----进行,--删除--操作是在队列的---队首--进行; 6,二叉树第 k 层最多有 2的k-1次方个节点 7,下面排序算法中,待排序数据已有序时花费时间最少的是(A)排序 A插入 B冒泡 C快速 D选择 8,有关Servlet的生命周期说法正确错误的有 (A) A. Servlet的生命周期由Servlet实例控制 B. init()方法在创建完Servlet实例后对其进行初始化,传递的参数为实现ServletContext接口的对象 C. service()方法响应客户端发出的请求 D. destroy()方法释放Servlet实例 9,在a.jsp中有代码片断如下: