网站导航:首页 -> 计算机等级考试 -> 计算机等级考试动态 -> 2005年NCRE考前密卷及解析-选择第21-40题

2005年NCRE考前密卷及解析-选择第21-40题

 (21)以下程序的输出结果是________。 

main() 
{ int a=-l,b=l,k; 
if((++a<0)&&!(b--<=0)) 
printf("%d %d\n",a,b); 
else 
printf("%d %d\n”,b,a); 


a)-l l b)0 1 
c)1 0 d)0 0 

(21)c 

知识点:if条件的判断 

评析:逻辑运算符的优先次序如下:!(非)→&&(与)→||(或),但本题需特别注意的是短路的概念:对于&&运算符,其两边表达式的值只要有一边为假,则整个与运算表达式的值即为假,系统在执行时,先运算&&左边的表达式,若为假,则系统不会再判断&&运算符右边的表达式了,直接运用短路原理得整个与运算表达式的值为0。由于++a是先运算后使用,b--是先使用后运算。所以本题在执行++a后,a值为0,不满足条件,所以a为l,根据短路原理,b仍为0,接下去执行else语句,输出l 0。 

(22)以下选项中,能定义s为合法的结构体变量的是________。 

a) typedef struct abc 
{ double a; 
char b[10]; 
}s; 

b ) struct 
{ double a; 
char b[10]; 
}s; 

c) struct abc 
{ double a; 
char b[10]; 

abc s; 

d ) typedef abc 
{ double a; 
char b[10]; 

abc s: 

(22)b 

知识点:结构体变量的定义 

评析:定义一个结构体类型的变量,可采用三种方法: 

①先定义结构体类型,再定义变量名; 
②在定义类型的同时定义变量; 
③直接定义结构类型变量,即不出现结构体名。 
选项b符合第三种定义方法。 

(23)请读程序: 

#include<stdio.h> 
#include<string.h> 
main() 

char*sl="abcdef",*s2="ab"; 
s1++;s2++; 
printf("%d\n",strcmp(s1,s2)); 


上面程序的输出结果是_______。 

a)正数 b)负数 c)零 d)不确定的值 

(23)a 

知识点:字符串比较函数strcmp()的应用 

评析:strcmp(x1,x2)是串比较函数,当x1>x2时返回值为正数,当x1<x2时返回值为负数,当xi=x2时返回值为零。 

本题中“sl”、“s2”分别表示这两个串中第一个字符的地址,s1++和s2++是将指针指向串的第二个字符,则*sl为“bcdef’,,*s2为“b”。而在字符串比较中。大小的确定是由各个字符串相应位置字符的ascii码值的大小决定的。“b”的ascii码值为66,”b”的ascii码值为98,所以sl>s2,返回值为正数。 

(24)请读程序: 

#include<stdio.h> 
func(int a,int b){ 
int c: 
c=a+b: 
return c: 

main(){ 
int x=6,y=7,z=8,r; 
r=func((x--,y++,x+y),z--); 
printf("%d\n",r); 


上面程序的输出结果是________。 

a)11 b)20 c)2l d)31 

(24)c 

知识点:自增、自减运算 

评析:函数func()的作用是返回两个形参的和,第一个形参是x、y分别自减和自增后的和,其中(x--,y++,x+y)是一个逗号表达式,它的值应该等于x+y,所以整个表达式(x--,y++,x+y)的值为13,而第二个形参的值为8(根据语法规则,应当先使用,后自增),所以fune()的返回值为13+8=21。 

(25)请读程序: 

#include<stdio.h> 
main() 

int a,b; 
for(a=1,b=l;a<=100;a++){ 
if(b>=20)break; 
if(b%3==1){b+=3;continue;} 
b_=5: 

printf("%d\n",a); 


上面程序的输出结果是________。 

a)7 b)8 c)9 d)10 

(25)b 

知识点:break语句和continue语句 

评析:break语句的作用是用于跳出循环体,继续执行循环体下面的语句;而continue语句的作用是用于跳出本次循环,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。“%”是求余运算符,执行第一次循环时,条件(b%3==1)为真,b=4,继续下一次循环,如此反复,当b=22时,条件(b>=20)为假,跳出循环,此时共循环8次,即a=8。