C语言语法规则的是( ) A.a_=\12 B.a_1=a_2+=12 C.int13.5%2 D.a=b+7=C-2
【解析】分析备选答案 A:这个表达式中出现了两个运算符“=”和“\”,后一个运算符是双目中缀,但是其前面没有运算对象,所以语法上是错误的。分析备选答案B:这个表达式中出现了两个运算符“=”和“+=”.从结合性来说,是自右向左的,所以该表达式相当于“a_1=(a_2+= 12)”,先计算“a_2+=12”,相当于“a_2=a_2+12”,再计算“a_1=(a_2+=12)”,所以该表达式的语法是正确的,符合题意。至于备选答案 C,加在表达式前面的int需要有圆括号,表示对表达式值的强制转换,此外“%”运算符的一个运算对象是实型,也是错误的。备选答案D类似于备选答案B,但是第2个赋值运算符的左边是表达式“b+7”,不是变量,不符合赋值运算符的语法要求,是错误的。 【参考答案】B
57.若整型变量x的值为8,则下列表达式中值为1的表达式是( ) A.x+=x-=x=x B.x%=x-1 C.x%=x%=3 D.x/=x+x
【解析】计算备选答案A:先做“x=x*x”,结果x为64,该表达式值为64;再做“x=x-64”结果 x为 0,该表达式值为0;最后计算“x=x+0”,结果 x为 0,整个表达式值为 0,不符合题意。计算备选答案B:相当于计算“x=x%(x-1)”,结果为x=8%7=1,整个表达式值为1,所以该答案符合题意,本题答案应选B。至于备选答案C:先算“x=x%3”,结果x=2,该表达式值为2,再计算“x=x%2”,结果x为0,整个表达式值为0。备选答案D:相当于计算“x=x/(x+x)”,结果为x=8/(8+8),结果x为0,整个表达式值为0。 【参考答案】B
58.字符串"m\x43\\\np\102q"的长度是( ) A.7 B.9 C.15 D.16
【解析】字符串的长度等于其中有效字符(不含字符率结束标记符)的数目。本题给出的字符串中含有转义字符,一个转义字符相当于单个字符。按照这个规则,本题中给出的字符串中含有的字符如下: 'm''\x43''\\''\n''p''\102''q'字符串中含有7个有效字符,所以本题答案应选A。 【参考答案】A
59.设有定义语句“int a=10,*p=&a;”,则表达式“a十*p”的值是( ) A.10 B.20 C.100 D.语法出错
【解析】在数据定义语句中的“*p=&a”,表示指针变量p已经指向变量a,所以表达式中的“*p”就是变量a,“a+*p”就是“a+a”,所以该表达式的值为20。本题答案应选B。 【参考答案】 B
60.若有定义语句“int x,*p=&x,**ppx=&px;”,则下列表达式中错误的是( ) A.x=*px B.x=**ppx C.px=&ppx D.*ppx=&x
【解析】分析备选答案 A:“*px”,就是x,所以该表达式为“x=x”,是正确的,不符合题意分析备选答案B:"**ppx",就是"*(*ppx)=*px=x",所以该表达式为"X=X",是正确的,不符合题意.分析备选答案C:px是一级指针变量,其中只能存放变量或数组元素的地址,不能存放其他一级指针变量或二级指针变量的地址,而"&ppx"是二级指针变量ppx的地址,所以该表达式是错误的,本题答案应选C.至于备选答案D:"*ppx"就是px,将变量x的地址赋予px,当然是正确的。 【参考答案】 C
61.如果某个函数在定义时,省略了存储类型,则默认的存储类型是( ) A.auto B.void C.extern D.static
【解析】C语言规定,函数的存储类型只能选取static或extern。前者表示本函数只能在本编。译单位中被调用;后者表示本函数可以被其他编译单位调用。如果省略了存储类型符,则系统默认为是“extern”型,所以本题答案应选C。 【参考答案】C
62.能正确定义一个用来指向打开文件的文件型指针变量fp的语句是( ) A.file fp; B.file *fp; C.FILE fp |