11.设有如下定义,则正确的叙述为( )
char x[]={"abcdefg"};
char y[]={'a','b','c','d','e','f','g'};
A.数组x和数组y等价
B.数组x和数组y长度相同
C.数组X的长度大于数组y的长度
D.数组X的长度小于数组y的长度
【解析】不指定数组长度的字符数组定义,其所需要的字节数可由初始化中给出的值的个数确定。字符数组可以用字符串初始化,也可用字符逐个给字符数组的元素初始化。但用字符初始化时,尽管给出了字符串中的全部字符,还是不会自动有字符率结束字符。但字符串初始化自动会含有字符串的结束标记符,字符串初始化所需要的字节个数会比用同样多的字符初始化多1个字节。所以只有C才是正确的。
【参考答案】C
12. 循环语句“for(x=0, y=0;(y!=123)||( x<4);x++);”的循环执行( )
A.无限次
B.不确定次
C.4次
D.3次
【解析】for循环语句的初始化部分置变量x和y的初值为0,循环条件是(y!=123)||(x<4),每次循环后变量X的值增1。由于循环过程中变量y的值本被修改过,循环条件又是一个逻辑或,其左分量(y!=123)永远成立,也就是循环条件永远成立。所以该循环语句将循环执行无限次。正确解答是A。
【参考答案】A
13.在计算机上可以直接运行的程序是写( )
A.高级语言程序
B.汇编语言程序
C.机器语言程序
D.C语言源程序
【解析】C语言源程序就是高级语言程序,都需要通过编译程序翻译成二进制目标程序才能执行;汇编语言源程序也需要通过汇编程序翻译成二进制目标程序才能执行。二进制目程序就是机器语言程序,可以在计算机上直接运行。
【参考答案】C
14.下列符号串中,合法的C语言标识将是( )
A._121
B.121_
C.a.121
D.#121
【解析】分析备选答案A:是下划线开头的数字串,符合 C语言关于标识符的构成规则“字母、下划线开头的字母、数字、下划线组成的一串符号”,所以该答案是正确的,符合题意至于备选答案B:是以数字开头的,不是标识符;备选答案C:含有非法符号“.”;备选答赛D:含有非法符号“#”,这三个答案都是错误的,不符合题意。
【参考答案】 A
15.下列符号串中,合法的十进制整型常量是( )
A.09876
B.0x9876
C.9.876*e4
D.-9876
【解析】分析备选答案A:是数字“0”开头的数字率,是人进制整型常量,而且其中出现了数字“8”和“9”,是错误的八进制常量,不符合题意。备选答案B:是“0x”开头的数字率,是十六进制整型常量,不符合题意。备选答案C:出现了小数点“.”。运算符“*”及“e”符号,是错误的常量,不符合题意。至于备选答案D:是正确的整型十进制常量,所以本题应选答案D。
【参考答案】D
16.设有关变量已经正确定义并赋值,则下列表达式中符合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
17.若整型变量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
18.字符串"m\x43\\\np\102q"的长度是( )
A.7
B.9
C.15
D.16
【解析】字符串的长度等于其中有效字符(不含字符率结束标记符)的数目。本题给出的字符串中含有转义字符,一个转义字符相当于单个字符。按照这个规则,本题中给出的字符串中含有的字符如下:
'm''\x43''\\''\n''p''\102''q'字符串中含有7个有效字符,所以本题答案应选A。
【参考答案】A
19.设有定义语句“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
20.若有定义语句“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
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |