当前位置: 首页 > news >正文

c 语言作业练习

一、数组基础与常见问题

1. 数组初始化问题

题目:下列哪个定义是错误的?

· A. int arr[10] = {1,2,3,4,5,6};
· B. int arr[3] = {1,2,3,4,5,6};
· C. int arr[1] = {1,2,3,4,5,6};
· D. int arr[16] = {0};

正确答案:C
解析:

· A:数组大小为10,初始化为6个元素,其余为0。
· B:数组大小为3,初始化元素超出长度,部分编译器允许但会截断。
· C:数组大小为1,初始化元素过多,错误。
· D:数组大小为16,全部初始化为0。

---

2. sizeof 与 strlen 的区别

```c
#include <stdio.h>
int main()
{
char str[] = "hello bit"; // 共10个字符,包括 '\0'
printf("%d %d\n", sizeof(str), strlen(str)); // 输出:10 9
return 0;
}
```

关键字 类型 功能
sizeof 操作符 计算变量或类型所占内存大小(包括'\0')
strlen 函数 计算字符串长度,不包含'\0'

---

二、数组操作函数实现

1. 初始化数组为0

```c
void init(int arr[], int sz)
{
for(int i = 0; i < sz; i++)
{
arr[i] = 0;
}
}
```

2. 打印数组

```c
void print(int arr[], int sz)
{
for(int i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
```

3. 反转数组(双指针法)

```c
void reverse(int arr[], int sz)
{
int left = 0;
int right = sz - 1;
while(left < right)
{
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
```

---

三、数组交换示例

交换两个数组的内容

```c
int main()
{
int arr1[] = {1, 3, 5, 7, 9};
int arr2[] = {2, 4, 6, 8, 0};
int sz = sizeof(arr1) / sizeof(arr1[0]);

for(int i = 0; i < sz; i++)
{
int temp = arr1[i];
arr1[i] = arr2[i];
arr2[i] = temp;
}
// 打印交换后的数组...
return 0;
}
```

---

四、完整示例代码

```c
#include <stdio.h>

void init(int arr[], int sz)
{
for(int i = 0; i < sz; i++) arr[i] = 0;
}

void print(int arr[], int sz)
{
for(int i = 0; i < sz; i++) printf("%d ", arr[i]);
printf("\n");
}

void reverse(int arr[], int sz)
{
int left = 0, right = sz - 1;
while(left < right)
{
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}

int main()
{
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int sz = sizeof(arr) / sizeof(arr[0]);

print(arr, sz); // 1 2 3 4 5 6 7 8 9 0
reverse(arr, sz);
print(arr, sz); // 0 9 8 7 6 5 4 3 2 1
init(arr, sz);
print(arr, sz); // 0 0 0 0 0 0 0 0 0 0

return 0;
}
```

---

五、关键点总结

1. 数组初始化时不能超出其定义的大小。
2. sizeof 计算的是内存大小(包括\0),strlen 计算的是字符串长度(不包括\0)。
3. 使用双指针法可以高效反转数组。
4. 数组操作常用循环遍历,注意下标范围。

http://www.cnnetsun.cn/news/94289.html

相关文章:

  • Flutter 主题与深色模式:全局样式统一与动态切换
  • 基于 GEE 使用 Sentinel-2 遥感影像数据反演水体叶绿素 a 质量浓度
  • 小红书数据采集架构解析与工程实践
  • 长沙对非合作深化 探索新型易货贸易
  • OpenCore Legacy Patcher终极教程:让老旧Mac完美运行最新macOS
  • 1、开启GIMP图像编辑之旅:从安装到精通
  • 2、开启 GIMP 图形编辑之旅
  • 怎么建立一套高效的设备运维管理体系?
  • 小爱音箱AI升级:让你的智能音箱秒变高智商语音助手
  • UnrealPakViewer终极指南:从入门到精通的Pak文件分析完整教程
  • 俄罗斯T-Tech公司推出T-pro 2.0:让AI说俄语更流利混合智能模型
  • MCP智能体连接协议面临企业级挑战
  • 联想发布数据存储新品助力企业AI发展
  • 人工智能使用大揭秘:OpenRouter公司百万亿规模数据分析报告
  • 微信DAT文件转换神器,牛批了
  • OBS音频插件实用技巧:专业级直播音效快速配置指南
  • BetterNCM插件配置全攻略:5步打造你的专属音乐工作站
  • 如何5分钟掌握网盘下载加速:告别限速的终极方案
  • 26年找实习的前端,建议跟着飞书准备面试...
  • 毕业论文知网AIGC怎么降?推荐10款免费降AI工具,完美保留原格式且无AI味!
  • “草台班子”的真相:为什么说未来十年,普通人逆袭的机会在这里?
  • 知网/维普AIGC怎么降?2025年降AI率工具大盘点,AI率低于10%且完美保留原格式!
  • 2025年降AI率哪个工具靠谱?5个工具核心优势解析,笔灵降AI性价比领先!
  • 年终总结,爆梗朋友圈
  • springboot健康管理小程序
  • PDF对比终极方案:如何用diff-pdf快速找出文档差异
  • Burp Suite抓包失败的5个常见原因及解决方法,第3个最容易被忽略!
  • 显卡驱动彻底清理指南:3步用DDU解决残留问题
  • Java毕设项目推荐-基于JavaWeb的心聘求职平台的设计与实现求职就业平台设计与实现【附源码+文档,调试定制服务】
  • XUnity自动翻译插件:零基础入门到实战精通指南