国家二级(C语言)机试模拟试卷115
选择题
1.有以下程序:
#include
#define N 4
void fun(int a[][N],int b[])
{ int i;
for(i=0;i<N;i++)b[i]=a[i][i];
}
main()
{int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;
fun(x,y);
for(i=0;i<N;i++)pfintf(\\(B)
A. 1,2,3,4,
B. 1,0,7,0,
C. 1,4,5,9,
D. 3,4,8,0,
解析:数组x有4列。fun函数中for循环的作用是将二维数组的对角线元素赋给b[0],b[1],b[2],b[3]。在主函数中,二维数组初始化为{{1,2,3},{4},{5,6,7,8},{9,10}},对角线元素为1,0,7,0。
2.有以下程序:
#include
main()
{ char a=4;
printf(\\(C)
A. 40
B. 16
C. 8
D. 4
解析:移位运算符的优先级比赋值运算符优先级高,故语句“a=a<<1”先进行a的二进制移位运算,左移一位相当于原数乘以2,a<<1结果为4*2=8,没有超过char类型的范围,将8赋值给a,并输出a的值。
3.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(B)
A. 12345ABCDE
B. EDCBA54321
C. ABCDE12345
D. 54321EDCBA
解析:栈是按照“先进后出”的原则组织数据的,入栈的顺序为12345ABCDE,则依次出栈的顺序应为其逆序,即EDCBA54321。
4.有以下程序:
#include
struct st
{ int x,y;}data[2]={1,10,2,20};
main()
{ struct st*p=data;
printf(\\(C)
A. 10,1
B. 20,1
C. 10,2
D. 20,2
解析:程序定义了结构体数组data,初值为data[0]={1,10},data[1]={2,20}。结构体指针p指向数组的首地址,指向data,[0],++p则指向data[1],所以输出p->y,(++p)->x即输出data[0].y和data[1].x。
5.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(C)
A. O(n)
B. O(n2)
C. O(log2n)
D. O(nlog2n)
解析:二分查找的最坏情况需要不断的二分直至无法再分。对于有序的线性表,二分查找法只需比较log2n次。
6.假定已建立以下数据链表结构,且指针p和q已指向如下图所示的结点:
(D)
A. (*)p.next=(*q).next;free(p)
B. b=q->next;free(q)
C. p=q;free(q)
D. P->next=q->next;free(q)
解析:删除结点q,首先将q的上一个结点p的指针域指向q的下一个结点,即p->next=q->next,然后释放结点q,free(q)。
7.有以下程序段:
int a,b,C;
a=10;b=50;C=30;
if(a>b)a=b,b=c;c=a;
printf(\\(A)
A. a=10 b=50 C=10
B. a=10 b=50 C=30
C. a=10 b=30 C=10
D. a=10 b=30 C=50
解析:a=10,b=50,a<b,if语句判断条件不成立,执行c=a,得到c=10,a和b的值不变。
8.有以下程序:
#include
int fun(int(*s)[4],int n,int k)
{ int m,i;
m=s[0][k];
for(i=1;i<n;i++)if(s[i][k]>m)m=s[i][k];
return m;
}
main()
{ int a [4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};
printf(\\(C)
A. 4
B. 34
C. 31
D. 32
解析:函数fun通过数组指针引用二维数组,其作用是遍历s[1][k]~s[n-1][k],找出二维数组第k列的最大值。
9.有以下程序:
#include
main()
{
int i=5;
do
{ if(i%3==1)
if(i%5==2)
{printf(\\(A)
A. *7
B. *3*5
C. *5
D. *2*6
解析:在do while循环中,总是先执行循环体后判断循环条件,所以循环体至少会被执行一次。在循环中,如果满足(i%3==1)&&(i%5==2)那么输出i的值,退出循环;否则i++,如果i==0则跳出循环。
10.有以下程序:
#include
#include
int fun(int n)
{ int*p;
p=(int*)malloc(sizeof(int));
*p=n;return*p;
}
main()
{ int a;
a=fun(10);printf(\\(C)
A. 0
B. 10
C. 20
D. 出错
解析:fun函数的功能是申请一个int型指针p,把p指向的存储空间赋值为n,并返回n。fun(10)的返回值为10,所以a=fun(10)后a的值为10,a+fun(10)=20。
11.有以下程序:
#include
main()
{
int x=1,y=2,z=3;
if(x>y)
if(y<z)printf(
本文档预览:3600字符,共14310字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载