C语言题收录(八)

1、以下关于字符串的叙述中正确的是____。

  • A:C语言中有字符串类型的变量和常量
  • B:两个字符串中的字符个数相同时才能进行字符串大小的比较
  • C:空串一定比空格打头的字符串小
  • D:可以用关系运算符对字符串的大小进行比较
解析

C语言中只有字符串常量而没有字符串变量,故选项A不正确;
字符串比较大小是以第一个不相同字符的大小为标准的,跟长度没有关系,故选项B不正确;
字符串比较大小除了使用库函数strcmp()以外,就只能靠自己写的代码来实现了,而不能通过关系运算符来比较大小,因为字符串在表达式中相当于const char*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的,故选项D不正确;
空串的长度为0,而空格打头的字符串的长度至少为1。

答案:C

2、下列叙述不正确的是____。

  • A:在C程序中,%是只能用于整数运算的运算符
  • B:在C程序中,无论是整数还是实数,都能正确无误地表示
  • C:若a是实型变量,C程序中a=10是正确的,因此实型变量允许被整型数赋值
  • D:在C程序中,语句之间必须要用分号";"分隔
解析

有大小的允许范围,但是复精度有限制,不可能都准确无误的表示。范围制和精度是两个概念。这句话应该加上“在精度范围内”的限定才算正确。

答案:B

3、下列各组中不全是字符常量的是____。

  • A:‘x’,“y”,‘5’
  • B:‘*’,‘\101’,‘5’
  • C:‘5’,‘\n’,‘x’
  • D:‘5’,‘%’,‘\x69’
解析

C语言规定,一个字符常量代表ASCII码字符集里的一个字符,在程序中用单引号括起来,以便区分。
"y"是字符串常量,不是字符常量。

答案:A

4、在C语言中,不合法的实数是____。

  • A:1.23
  • B: e − 5 e^{-5} e5
  • C:3.245E3
  • D:-.187
解析

实数有两种类型,float和double,有两种表现形式:小数和指数。
小数:由数码0~9和小数点组成。例如:0.0、25.0、-267.83等均为合法的实数。整数或小数部分缺省时(不能同时缺省)默认缺省部分为0,例如-.187等价于-0.187,1.等价于1.0。
指数:由十进制数、加阶码标志“e”或“E”、以及阶码(只能为整数,可以带符号)组成,如2.1E5即表示2.1* 1 0 5 10^5 105

答案:B

5、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数表达式的值为“假”。则以下不能满足要求的表达式是____。

  • A:A%2==1
  • B:!(A %2==0)
  • C:!(A%2)
  • D:A%2
解析

C选项错误,当A为奇数时,(A%2)=1,取非后值为0,则表达式值为“假”,与题目相反。

答案:C

6、以下叙述中错误的是____。

  • A:在程序中凡是以“#”开始的语句行都是预处理命令行
  • B:预处理命令行的最后不能以分号表示结束
  • C:#define MAX是合法的宏定义命令行
  • D:C程序对预处理命令行的处理是在程序执行的过程中进行的
解析

在C语言中,凡是以”#“开头的行都称为编译预处理命令行,如#include、#define、#if等,每行的末尾不得用";"结束,以区别于C语句、定义和说明语句。选项C中的宏定义为不带参数的宏命令行,宏名之后可以由替换文本,也可以没有。编译预处理是在编译程序对C源程序进行编译前执行的。当然也在程序执行之前执行,因此选项D是错误的。

答案:D

7、以下合法的赋值语句是____。

  • A:x=y=100
  • B:d–;
  • C:x+y;
  • D:c=int(a+b);
解析

选项A的结尾没用";",所以不是一条语句;
选项C的表达式不会改变任何变量的内容,也不是合法的赋值语句;
选项D有语法错误,int应该加上括号。
所以,4个选项中只有选项B符合题意,运行后d的内容被减一。

答案:B

8、下列选项中,属于C语言双目运算符的是___。

  • A:!
  • B:–
  • C:!=
  • D:++
解析

单目运算符和双目运算符的区别只有一个,那就是操作数(变量或常量)数量的不同。
单目运算符只对一个操作数进行逻辑运算。
比如:num++(自增),num–(自减),!num(取非值),~num(按位取反)。
双目运算符只对两个操作数进行逻辑运算。
比如:num1+num2,num1-num2,num1>num2,num1!=num2。

答案:C

9、经过下列C语言片段后,x、y的值分别是____。

int x,y;
y=(x=0)&&(x=3);
  • A :3 0
  • B:3 1
  • C:0 0
  • D:0 3
解析

y=(x=0)&&(x=3),首先执行x=0,此时x的结果为0,然后检查&&左边的结果,如果左边是真的话,然后执行右边,但是如果左边是假的话&&逻辑运算符会采用懒惰策略,不执行检查右边的真假。(x=0)&&(x=3)得到的结果为0,然后将0赋值为y。
因此x=0,y=0。

答案:C

10、以下叙述正确的是____。

  • A:全局变量的作用域一定比局部变量的作用域范围大
  • B:静态(static)类别变量的生存期贯穿整个程序的运行期间
  • C:函数的形参都属于全局变量
  • D:未在定义语句中赋初值的auto变量和static变量的初始值都是随机值
解析

若在函数中定义与全局变量名字相同的局部变量,则全局变量在该函数中将不起作用,因此全局变量的作用域并不一定比局部变量的作用域大,故选项A不正确;
静态变量一旦定义,将在整个程序的运行期间都存在,故选项B正确;
函数的形参只在函数调用的时候分配存储空间,在退出函数时收回存储空间,因此是局部的,故选项C不正确;
没有赋值的auto型变量的初值是随机的,没有赋值的static型变量的初值是0,故选项D不正确。

答案:B

学海无涯苦作舟

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员丶星霖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值