C基础:字符类型存储与运算练习及指针理解
需积分: 0 159 浏览量
更新于2024-08-03
收藏 94KB DOCX 举报
今天我们将深入探讨C语言的基础知识,包括字符类型、算术运算、指针概念、数组与指针操作、递归函数以及逻辑表达式的理解。首先,让我们从填空部分开始:
1. **字符型数据与ASCII值**:题目提到char型数据在微机中存储值为0xc0,转换为十进制是192。当使用`printf`以%d打印时,会按照整数方式解析,而0xc0对应的ASCII码是192,所以实际打印值为192,而非65。
2. **类型转换与运算**:`char a=203`,`int b=a`,将字符型数据赋值给整型变量,`int c=a&0xff`,这里执行按位与操作,得到的是字符a的小写字母在ASCII表中的数值(0xff是二进制11111111,小写英文字母的最高位通常为0,所以结果为203)。`b=-53`,`c=203`后,`b`变为负数,`c`保持不变。
3. **内存大小计算**:在Linux 32位系统下,`char str[] = "hello"`,`str`是一个字符数组,存储字符串占用的空间为5个字符加上一个结束符,共6个字节,`sizeof(str)`为1表示可能是因为指针的原因,需要具体上下文。`char *p=str`是一个字符指针,它指向`str`的第一个元素,`sizeof(p)`通常为4,因为它是int类型的指针。`int n=10`,一个基本类型的变量占用4个字节,`sizeof(n)`为4。
4. **逻辑运算符应用**:`int a=1, b=2, c=3, d=4, m=2, n=2;`执行`(m=a>b) && (n=c>d)`,由于a小于b,m为0,所以整个逻辑表达式为假,因此n不会改变,最终`n`的值仍为2。
5. **宏定义和表达式求值**:宏`#define M(x, y, z) x*y+z`,当`a=1`, `b=2`, `c=3`时,代入得`M(a+b, b+c, c+a)`计算结果为`(1+2)*(2+3)+(3+1)`,即18+4,等于22。
接下来是选择题:
6. **指针类型判断**:`int(*p)[3]`是一个指针,指向一个包含3个int元素的一维数组,选项D正确,它不是单个元素的指针,也不是二维数组。
7. **数组和指针算术**:数组`a`的指针`P`指向`a[1]`,即第二个元素(数组下标从0开始),`*++p`表示先递增指针再取值,因此它会先移动到下一个元素,即`a[2]`,其值为30,答案是B。
8. **递归函数计算**:给定的程序段通过递归调用计算`mul`,每次乘以`data+x`的值,初始`mul=1`,经过三次循环后,`data+x`的值分别为`a[2]`(5)、`a[3]`(7)、`a[4]`(9),计算结果依次为5、35、245,最终`mul`的值为245*5=1225,但题目给出的答案是945,这可能是计算错误或者题目有误。
9. **字符数组赋值**:A选项错误,因为`s`是一个字符指针,不能直接赋值字符串,应该使用`strcpy`或`= ...`的方式;B选项正确,`s3`是字符数组,可以正确赋值;C选项是字符数组初始化,合法;D选项`s1`没有指定长度,赋值不明确。
10. **结构体成员访问**:结构`struct student`中的`name`字段使用`.`运算符访问,因此正确方法是`stud.name`,答案是D。
11. **递归函数返回值**:函数`fun`递归终止条件为`x==0`或`x==1`,当`x=7`时,递归进入`fun(5)`,然后`fun(3)`,直到`fun(1)`返回3,此时`p`的值为3,返回到上一层递归,继续执行,最终`p`的值为2,答案是B。
12. **逻辑表达式判断**:`while(!E)`中的`!E`等价于`E==0`的否定,即`E`不为0,所以答案是B。
总结:此篇C基础练习涵盖了字符类型、算术运算、指针、数组操作、递归和逻辑表达式等内容,深入理解和掌握这些知识点对于提高编程技能至关重要。
2023-05-23 上传
2021-09-10 上传
2024-02-02 上传
2024-02-01 上传
2023-07-27 上传
2023-12-10 上传
2023-07-05 上传
2023-04-15 上传
2023-11-10 上传
ZzzzzzzDi
- 粉丝: 50
- 资源: 4
最新资源
- Postman安装与功能详解:适用于API测试与HTTP请求
- Dart打造简易Web服务器教程:simple-server-dart
- FFmpeg 4.4 快速搭建与环境变量配置教程
- 牛顿井在围棋中的应用:利用牛顿多项式求根技术
- SpringBoot结合MySQL实现MQTT消息持久化教程
- C语言实现水仙花数输出方法详解
- Avatar_Utils库1.0.10版本发布,Python开发者必备工具
- Python爬虫实现漫画榜单数据处理与可视化分析
- 解压缩教材程序文件的正确方法
- 快速搭建Spring Boot Web项目实战指南
- Avatar Utils 1.8.1 工具包的安装与使用指南
- GatewayWorker扩展包压缩文件的下载与使用指南
- 实现饮食目标的开源Visual Basic编码程序
- 打造个性化O'RLY动物封面生成器
- Avatar_Utils库打包文件安装与使用指南
- Python端口扫描工具的设计与实现要点解析