计算机二级c语言笔试题和面试题答案(最新)(三)
(37)下列函数定义中,会出现编译错误的是
A)max(int x,int y,int *z)
B)int max(int x,y)
{ *z=x>y ? x:y; } { int z;
z=x>y ? x:y;
return z;
}
C)max(int x,int y)
D)int max(int x,int y)
{ int z; { return(x>y?x:y); }
z=x>y?x:y; return(z);
(38)有以下程序
#include
#define F(X,Y) (X)*(Y)
main()
{ int a=3, b=4;
printf("%d“n", F(a++, b++));
}
程序运行后的输出结果是
A)12
B)15
C)16
D)20
(39)有以下程序
fun(int a, int b)
{ if(a>b) return(a);
else return(b);
}
main()
{ int x=3, y=8, z=6, r;
r=fun(fun(x,y), 2*z);
printf("%d“n", r);
}
程序运行后的输出结果是
A)3
B)6
C)8
D)12
(40)若有定义:int *p;,则以下叙述中正确的是
A)定义了一个基类型为int的指针变量p,该变量具有三个指针
B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C)定义了一个名为*p的整型数组,该数组含有三个int类型元素
D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
(41)以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址
#include
#include
char *scmp(char *s1, char *s2)
{ if(strcmp(s1,s2)<0)
return(s1);
else return(s2);
}
main()
{ int i; char string[20], str[20];
for(i=0;i<3;i++) gets(str[i]);
strcpy(string,scmp(str[0],str[1])); /*库函数strcpy对字符串进行复制*/
strcpy(string,scmp(string,str));
printf("%s“n",string);
}
若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为
A)abcd
B)abba
C)abc
D)abca
(42)有以下程序
struct s
{ int x,y; } data={10,100,20,200};
main()
{ struct s *p=data;
printf("%d“n",++(p->x));
}
程序运行后的输出结果是
A)10
B)11
C)20
D21
(43)有以下程序段
main()
{ int a=5,*b,*c;
c=&b; b=&a;
……
}