news 2026/4/26 8:41:13

c 语言作业练习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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. 数组操作常用循环遍历,注意下标范围。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:20:39

什么是生产者消费者(Disruptor)

什么是生产者消费者(Disruptor) 关键词:生产者消费者模式, Disruptor框架, 环形缓冲区, 无锁并发, 高性能队列, 事件驱动架构, 并发编程 摘要:本文将用通俗易懂的方式带你深入理解生产者消费者模式及其高性能实现——Disruptor框架。我们从生活中的例子出发,逐步揭开生产者…

作者头像 李华
网站建设 2026/4/23 17:14:05

【值得收藏】小白也能懂的大模型智能体:三种调用模式与RAG技术详解

文章详细介绍了基于大模型构建智能体的三种调用模式&#xff1a;简单问答、工具调用(Function Calling)和RAG检索增强生成。重点解析了RAG技术的定义、多种架构及其应用场景&#xff0c;并指导开发者如何根据需求选择适当的增强手段&#xff0c;包括提示词工程、微调或混合方法…

作者头像 李华
网站建设 2026/4/25 2:20:54

抖音视频批量下载终极指南:新手也能3分钟搞定

抖音视频批量下载终极指南&#xff1a;新手也能3分钟搞定 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 还在为手动保存抖音视频而烦恼&#xff1f;想要快速批量下载无水印视频&#xff1f;GitHub_Trending…

作者头像 李华
网站建设 2026/4/23 11:30:54

绝区零一条龙:新手快速入门完整指南

绝区零一条龙&#xff1a;新手快速入门完整指南 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 绝区零一条龙是一款专为《绝…

作者头像 李华
网站建设 2026/4/18 12:04:57

2026高职软件技术专业,哪些证书含金量高?

数字化浪潮下&#xff0c;技术更新换代的周期正在缩短。对于2026年即将毕业的高职软件技术专业学生而言&#xff0c;专业证书不仅是求职的敲门砖&#xff0c;更是决定薪资水平和职业发展高度的关键因素。01 行业前景软件技术专业的高职毕业生就业前景广阔。他们可以在国内外各大…

作者头像 李华
网站建设 2026/4/18 1:39:56

XiaoMusic终极指南:彻底释放小爱音箱音乐潜能的完整方案

XiaoMusic终极指南&#xff1a;彻底释放小爱音箱音乐潜能的完整方案 【免费下载链接】xiaomusic 使用小爱同学播放音乐&#xff0c;音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 你是否曾经面对心爱的歌曲却因版权限制无法播放…

作者头像 李华