C语言选择题

练习二级选择题,点击选项即可查看结果

第21题. 函数内部使用static修饰局部变量,正确描述是()
正确选项:
解析:static修饰局部变量,程序启动时仅初始化一次;存放于静态全局存储区,不在栈上;作用域依旧限制在当前函数内部;函数调用结束变量不会销毁,会保留本次修改的值,供下一次函数调用继续使用。
第22题. 下面结构体定义语法正确的是()
正确选项:
解析:结构体语法格式:struct 结构体名 {成员列表};,末尾的分号不能省略。B缺少结尾分号;C缺少struct关键字;D书写语法错误。
第23题. struct S{ int a; char b; };,int占4字节,char占1字节,该结构体占用字节数是()
正确选项:
解析:C结构体遵循内存对齐规则。对齐单位取结构体最大基础成员大小,这里int占4字节,整体大小必须是4的整数倍。成员相加为5字节,向上对齐至8字节。结构体占用内存不等于各个成员字节简单相加。
第24题. #define N 10,关于宏定义描述正确的是()
正确选项:
解析:#define是预处理指令,编译预处理阶段做纯文本替换,N不是变量,不能做自增运算;没有数据类型,不执行类型检查;宏定义末尾不要写分号,写的话分号也会被当作替换文本的一部分。
第25题. 表达式 3>2>1 的运算结果是()
正确选项:
解析:关系运算符结合方向从左向右。先计算3>2结果成立得到1;再计算1>1,条件不成立得到0。标准C没有内置bool类型,用1代表逻辑真,0代表逻辑假,不要把该表达式当成数学不等式3>2>1理解。
第26题. int a=7,b=2; printf("%d",a/b);输出结果是()
正确选项:
解析:两个int整型做除法,执行整数除法,直接舍弃小数部分,7/2结果为3。如果希望得到小数结果,需要强制转换其中一个操作数为double浮点类型。
第27题. int a=7,b=2; printf("%d",a%b);输出结果是()
正确选项:
解析:运算符%是取模(求余数),7除以2商3余数1。%运算符仅支持整数操作数,浮点数不能使用%。
第28题. int x=6; x = x << 1;执行之后x的值是()
正确选项:
解析:<<是左移运算符,二进制位整体向左移动1位,低位补0,算术意义等价乘以2。6二进制是0110,左移1位得到1100,十进制等于12。左移n位等价乘以2的n次方。
第29题. 关于 typedef 描述正确的是()
正确选项:
解析:typedef作用是给现有数据类型起别名,不会产生新类型;#define只是简单文本替换,二者实现原理不同;typedef可以作用于基础类型、指针、结构体等多种类型。
第30题. 以只写模式打开文本文件test.txt,写法正确的是()
正确选项:
解析:"w"代表只写模式;文件存在会清空原有全部内容,文件不存在则新建文件。"r"只读模式;"a"追加写入模式。fopen返回FILE*文件指针,必须用指针变量接收返回值。