【C语言习题-记住语法1】 C语言是一种强大的、结构化的编程语言,它被广泛应用于系统编程、软件开发、嵌入式系统等。本习题集主要关注C语言的基础语法,包括常量、变量、运算符优先级、流程控制以及函数的使用。 1. C语言合法的常量是: C语言中的常量分为整型、浮点型、字符型和字符串。选项A(.45)不是合法的整型或浮点型常量,因为它缺少整数部分。选项B(078)在C语言中八进制表示的数字不应包含8。选项C(25.6e3.4)是浮点型常量,但格式不正确,指数部分应为整数。选项D('xy')不是一个合法的字符常量,字符常量应该用单引号括起来,并且只能包含一个字符。因此,没有正确答案。 2. 交换x和y中的值的语句: x += y; y = x - y; x -= y; 这组语句通过一系列运算实现了x和y的值互换,而不会引入临时变量。x加上y的值存储回x,然后y等于x减去y,最后x等于x减去原来y的值。经过这三步,x和y的初始值将互换。 3. 枚举常量的值: enum定义了一个枚举类型week,其中mon的值被设置为4。由于tue、wed、thu、fri和sat的值是依次递增的,tue的值为5,所以选项A(tue)是不正确的。选项B(sat)是周日的值,应该是0。选项C(fri)是周五的值,应该是7。选项D(thu)是周四的值,应该是6。因此,正确答案是D。 4. 赋值语句后的a取值: a = 125.534; 这是一个浮点数赋值,a的值为125.534。a = (int)125.521 % 4; 先将125.521转换为整数125,然后对4取模,得到31。a = 5 << 2; 这是一个位移操作,5左移2位相当于乘以2的2次方,结果为20。所以,选项C(125, 31, 20)是正确的。 5. while循环的执行: 循环条件k = 0是一个赋值操作,而不是比较操作,这意味着k始终会被赋值为0,使得循环体永远不会执行。选项C(循环体语句一次也不执行)是正确的。 6. 运算符优先顺序: 运算符的优先级从高到低依次是:算术运算符 > 关系运算符 > 赋值运算符 > 逻辑与运算符。因此,选项B(逻辑与运算符 < 关系运算符 < 算术运算符 < 赋值运算符)是错误的,其他选项描述了正确的顺序。 7. C语言函数调用和定义: C语言中,函数定义不能嵌套,但函数调用可以嵌套。选项B(函数的定义不可以嵌套,但函数的调用可以嵌套)是正确的。 8. 指针类型变量与数组操作: 不能将一个数组的地址赋值给一个指针变量,即不能执行p = a; 但可以取数组的首地址赋值给指针,如p = &a[0]; 或者用指针访问数组元素,如*p = a[0]; 选项D(p=&a;)是非法的,因为数组名a实际上是一个指向数组首元素的指针,因此不能再次取地址。 9. 结构体变量的大小: 结构体worker包含一个u4(4字节)、两个u2(每个2字节)和一个u1(1字节),总共占据7字节。选项A(7)是正确的。 10. 定义指向整型数据的指针数组: 正确的定义方式是int *p[n]; 这定义了一个包含n个整型指针的数组。选项C是正确的。 填空题部分: 1. x ≥ y ≥ z 并且 z > 10 的表达式:(x >= y) && (y >= z) && (z > 10) 2. switch语句的输出结果:"AB",因为case 2和case 1没有break语句,会顺序执行。 3. 定义int型常量A为10:`#define A 10` 4. 文件内部函数定义前缀:static 5. sizeof(a)的值:20,因为a是一个数组,sizeof返回整个数组的大小,即10个u2元素,共20字节。 6. 宏ADD定义:`#define ADD(a, b) ((a) + (b))` 7. y的值:1,a & b是按位与操作,a和b都是整型,2 & 3的结果为1。 8. 建立指针与对象关联:`p = &a;` 9. p的类型:int *p(int a[10]),p是一个函数指针,指向接受一个长度为10的整型数组作为参数并返回整型指针的函数。 10. 函数临时变量存放:栈内存,因为函数调用时局部变量存储在栈上,空间有限。 以上内容详细阐述了C语言中的基础概念和习题解析,涉及常量、变量、运算符、流程控制、函数、指针、数组、结构体以及内存管理等多个方面。通过这些习题,可以加深对C语言语法的理解和掌握。
- 粉丝: 50
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Python与JavaScript的AI技术核心算法设计源码
- 基于Python及多语言融合的小组作业设计源码
- 基于Spring+Struts2+Hibernate+Mysql的JavaWeb实验室管理系统设计源码
- 面试要点记录 主要涉及到嵌入式软件开发、嵌入式驱动开发、IOT开发、git等知识点 最新的请参考wiki和我的个人博客
- 焊接设备俩焊机程序-(基恩士)
- 基于Java语言的jsd2205-csmall-product电商平台设计源码
- 基于Java语言的IdolGuitar吉他原创视频分享APP设计源码
- 网口通信(TCP/IP)代码实现Demo
- 基于Java和HTML的仓储管理系统设计源码
- 基于Spring Boot框架的Java开发实战设计源码
评论0