企业笔试真题
4、关键字static,在模块内的static变量、在模块内的static函数、在函数体内的static变量,请分别描述其作用是什么?3、给出两个单向链表的头指针,比如pHead1、pHead2,判断这两个链表是否相交,两个链表均不带环。A、main()函数里的i是一个未定义值B、main()函数的i为1。1、有以下程序段,其中的变量已定义为 int 类型,则程序段的输出结果是()。4、以下可以将
一、选择题【30分】
1、有以下程序段,其中的变量已定义为 int 类型,则程序段的输出结果是( )。【2分】
sum = pad = 5;
pAd = sum++, pAd++, ++pAd;
printf( “%d\n”, pad );
A、4 B、5 C、6 D、7
2、有以下程序,则程序运行后的输出结果是( )。【2分】
#include <stdio.h>
#include <math.h>
int main(void)
{
int a=1, b=4, c=2;
double x=10.5, y=4.0, z;
z = ( a+b )/c + sqrt( y ) * 1.2 / c + x;
printf("%f\n", z);
}
A、13.700000 B、14.000000 C、15.400000 D、14.900000
3、设有定义:int x=11,y=12,z=0;,以下表达式值不等于 12 的是( )。
A、 (z,x,y) B、(z=x,y) C、z=(x,y) D、 z=(x==y)
4、以下可以将任意一个两位整数n的个位数与十位数对换的表达式为( )。【2分】
A、(n-n/10*10)*10+n/10 B、n-n/10*10+n/10 C、n/10+(n-n/10) D、(n-n/10)*10+(n/10)
5、设有以下程序段 int y; y=rand() % 30+1; 则变量 y 的取值范围是( )。【2分】
A、1<y<30 B、0≤y≤30 C、 0<y≤30 D、1<y≤30
6、下列哪些算法的时间复杂度是O(n^2)( )。【多选】【2分】
A、冒泡排序 B、快速排序 C、直接插入排序 D、直接选择排序
7、程序 int i=1; int main(){int i=i; return 0;} 的结果是什么?( A )。【2分】
A、main()函数里的i是一个未定义值 B、main()函数的i为1
C、编译器不允许这种写法 D、main()里i的值为0
8、在下列程序中,num赋什么值会使数组值发生改变?( )。【多选】【2分】
#include <stdio.h>
int main(void)
{
int arr[3] = {10,20,30};
int *p = arr;
int num = ?;
}
A、*p++ B、(*p)++ C、++*p D、*++p
9、一个栈的入栈序列为1,2,3,4,5;则出栈序列不可能为( )。【2分】
A、1 2 3 4 5 B、5 4 3 2 1 C、2 3 4 5 1 D、4 1 2 3 5
10、 用链表表示线性表的优点是( )。
A、便于随机存取 B、花费的存储空间较顺序存储少
C、便于插入和删除 D、数据元素的物理顺序与逻辑顺序相同
11、二叉树的后序和中序遍历分别为DBFGECA和BDACFEG。则其先序遍历次序为( )。【2分】
A、abcdefg B、 abdcefg C、abcdfeg D、abcdegf
12、下列程序的正确输出结果为( )。【2分】
#include <stdio.h>
int main(void)
{
int a=0,b=0,c=0;
if(a++ || b++ && ++c)
printf("%d,%d,%d\n",a,b,c);
else
printf("%d,%d,%d\n",a,c,b);
}
A、1,1,0 B、1,0,0 C、1,1,1 D、1,0,1
13、有金、银、铜三个盒子,有一个硬币藏在其中一个盒子里,三个盒子上各贴着一张纸条,上面的提示分别是:
(1)硬币在金盒子中
(2)硬币不在银盒子中
(3)硬币不在金盒子中。
这三句话只有一句是真的。根据以上条件,硬币藏在哪个盒子中?( )。【2分】
A、硬币在金盒子中 B、硬币在银盒子中
C、硬币在铜盒子中 D、无确切答案
14、在有序双向链表中定位删除一个元素的平均时间复杂度为( )。【2分】
A、O(1) B、O(N) C、O(logN) D、O(N*logN)
15、下列程序的正确输出结果为( )。【2分】
#include <stdio.h>
int main()
{
int a[4] = { 1, 2, 3, 4 };
int* ptr1 = (int*)(&a + 1);
int* ptr2 = (int*)((int)a + 1);
printf("%x,%x", ptr1[-1], *ptr2);
return 0;
}
A、4,1 B、2000000,4 C、1,4 D、4,2000000
二、填空题【20分】
1、在X86计算机上执行下面的程序,结果是什么。【4分】
#include <stdio.h>
int main(void)
{
int a=0x61626364;
char *p=&a;
printf("%x,%x,%x,%x\n",*p,*(p+1),*(p+2),*(p+3));
}
2、说明下列程序可能会出现的问题。【4分】
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void GetMemory(char *p,int num)
{
p=(char*)malloc(num);
}
int main(void)
{
char *str=NULL;
GetMemory(str,100);
strcpy(str,"hello world");
printf("%s\n",str);
}
3、下面程序是求出一个数组中的最大值,请填空。【6分】
void maxvalue(int *a,int n,int* pmax)
{
int i;
( )
for(i=1;i<n;i++)
if(*(a+i)>*pmax)
( )
}
void main()
{
int a[8]={10,-1,8,30,90,-67,0,66};
int max;
( )
printf(“max=%d\n”,max);
}
4、写一个标准宏MIN,这个宏输入两个参数并返回较小的一个。【3分】
5、在X86计算机上,向绝对内存地址为0x40020800设置为整型值0x3456。【3分】
三、简答题【20分】
1、strcpy与memcpy的区别?【5分】
2、队列的实现方式有几种,从存储方式的角度说明。什么是循环队列,给出实现方法。【6分】
3、解释下列代码。【3分】
char *(*arr[10])(int **p);
4、关键字static,在模块内的static变量、在模块内的static函数、在函数体内的static变量,请分别描述其作用是什么?【6分】
四、编程题【30分】
1、编写一个函数,并通过该函数验证当前计算机为大端存储模式还是小端存储模式。【5分+5分】
2、使用两个栈实现一个队列,要求给出算法(入队算法,出队算法)和思路。【10分】
3、给出两个单向链表的头指针,比如pHead1、pHead2,判断这两个链表是否相交,两个链表均不带环。【10分】
更多推荐
所有评论(0)