C语言程序设计(下):第六周任务
发布时间: 2024-01-27 01:22:57 阅读量: 21 订阅数: 18 ![](https://csdnimg.cn/release/wenkucmsfe/public/img/col_vip.0fdee7e1.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/col_vip.0fdee7e1.png)
# 1. 复习上周知识
### 1.1 回顾第五周的C语言程序设计内容
在第五周的学习中,我们主要学习了C语言程序设计的基础知识,包括变量、数据类型、运算符、控制流语句以及基本的函数定义和调用等内容。
### 1.2 复习上周学习的重点知识点
在复习上周的知识点时,我们重点回顾了以下内容:
- C语言变量的定义和使用
- 不同数据类型的特点和使用场景
- 运算符的分类和使用方法
- 控制流语句(如if-else、for循环、while循环)的语法和应用
- 函数的定义和调用
### 1.3 解答相关复习题目
为了更好地巩固和复习所学知识,我们还解答了一些相关的复习题目。以下是其中的几道题目及其解答:
```c
#include <stdio.h>
int main() {
// 1. 计算两个数的和
int a = 5, b = 8;
int sum = a + b;
printf("两个数的和为:%d\n", sum);
// 2. 判断一个数是否为偶数
int num = 17;
if (num % 2 == 0) {
printf("这是一个偶数\n");
} else {
printf("这是一个奇数\n");
}
// 3. 输出1到100之间的偶数
int i;
for (i = 1; i <= 100; i++) {
if (i % 2 == 0) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
#### 代码解析:
- 第一个题目是计算两个数的和,通过定义两个变量a和b,并定义sum变量来保存它们的和,最后使用printf函数来打印输出结果。
- 第二个题目是判断一个数是否为偶数,通过判断num变量取模2之后是否等于0,来判断该数是否为偶数,并使用if-else语句来输出结果。
- 第三个题目是输出1到100之间的偶数,利用for循环从1到100进行遍历,通过判断循环变量i是否为偶数,来打印输出所有的偶数。
#### 结果说明:
- 第一个题目输出结果为:两个数的和为:13
- 第二个题目输出结果为:这是一个奇数
- 第三个题目输出结果为:2 4 6 8 10 12 ... 98 100
通过这些复习题目的练习,我们巩固了上周所学习的C语言基础知识,并为本周的学习打下了坚实的基础。在接下来的章节中,我们将继续深入学习更高级的内容。
# 2. 指针与内存管理
### 2.1 指针的概念与基本用法
指针是C语言中一种重要的数据类型,它存储了一个变量的内存地址。通过指针,我们可以直接访问和修改这个地址中存储的数据。下面是一个简单的指针示例:
```c
#include <stdio.h>
int main() {
int x = 10; // 定义一个整数变量x,赋值为10
int *p; // 定义一个整型指针变量p
p = &x; // 将指针p指向变量x的地址
printf("x的值:%d\n", x); // 输出变量x的值
printf("x的地址:%p\n", &x); // 输出变量x的地址
printf("p指向的地址:%p\n", p); // 输出指针p指向的地址
printf("p指向的值:%d\n", *p); // 输出指针p指向地址中存储的值
return 0;
}
```
**代码说明:**
- 在这段代码中,我们定义了一个整数变量x,并给它赋值为10。
- 然后,我们声明了一个整型指针变量p。
- 接着,通过将地址运算符`&`应用于变量x,我们将指针p指向了变量x的地址。
- 最后,通过`*p`我们可以访问指针p所指向地址内的值。
运行上述代码,我们将得到以下输出:
```
x的值:10
x的地址:0x7ffc3d9beb6c
p指向的地址:0x7ffc3d9beb6c
p指向的值:10
```
### 2.2 动态内存分配与释放
动态内存分配是指在程序运行过程中,根据需要动态地申请内存空间。C语言提供了两个函数来进行动态内存分配和释放:`malloc()`和`free()`。
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *p;
p = (int *)malloc(sizeof(int)); // 分配一个整型空间存储
if (p == NULL) {
printf("内存分配失败\n");
return 1;
}
*p = 10; // 给动态分配的内存空间赋值为10
printf("动态分配的内存空间的地址:%p\n", p);
printf("动态分配的内存空间的值:%d\n", *p);
free(p); // 释放动态分配的内存空间
return 0;
}
```
**代码说明:**
- 在这段代码中,我们首先声明了一个指针变量p。
- 然后,通过调用`malloc()`函数,我们分配了一个整型变量大小的内存空间,并将其地址赋给了指针p。
- 接着,我们给动态分配的内存空间赋值为10。
- 最后,通过调用`free()`函数,我们释放了动态分配的内存空间。
运行上述代码,我们将得到以下输出:
```
动态分配的内存空间的地址:0x7ff975c5b4c0
动态分配的内存空间的值:10
```
### 2.3 指针与数组的关系
指针与数组之间有着密切的关系。数组名即是一个指针,指向数组中首元素的地址,我们可以通过指针来访问和修改数组的元素。
```c
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5}; // 定义一个整数数组
int *p = arr; // 将数组名赋给指针p
printf("数组的第一个元素:%d\n", *p); // 输出数组的第一个元素
p++; // 指针p向后移动一个元素的位置
printf("数组的第二个元素:%d\n", *p); // 输出数组的第二个元素
return 0;
}
```
**代码说明:**
- 在这段代码中,我们定义了一个整数数组arr,并初始化了它的元素。
- 然后,我们将数组名arr赋给了指针p,这意味着指针p指向了数组的首元素地址。
- 接着,我们通过解引用指针`*p`来输出数组的第一个元素。
- 最后,我们将指针p向后移动一个元素的位置,并再次输出数组的第二个元素。
运行上述代码,我们将得到以下输出:
```
数组的第一个元素:1
数组的第二个元素:2
```
### 2.4 练习题目与小结
1. 编写一个程序,定义一个整数数组,通过指针遍历并输出数组的元素。
```c
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5}; // 定义一个整数数组
int *p = arr; // 将数组名赋给指针p
for (int i = 0; i < sizeof(arr)/sizeof(int); i++) {
printf("%d ", *p); // 输出数组的元素
p++; // 指针p向后移动一个元素的位置
}
return 0;
}
```
2. 编写一个函数,实现两个整数的交换。
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10, y = 20;
printf("交换前:x=%d, y=%d\n", x, y);
swap(&x, &y);
printf("交换后:x=%d, y=%d\n", x, y);
return 0;
}
```
**小结:**
- 本章介绍了指针的概念与基本用法,包括如何声明指针变量、取指针变量所指向地址的值以及指针与数组的关系。
- 动态内存分配与释放是C语言中非常重要的概念,通过`malloc()`函数可以动态地申请内存空间,`free()`函数用来释放动态分配的内存空间。
- 指针的灵活运用可以方便对数组的元素进行访问和修改。
至此,我们完成了第二章的内容。下一章将介绍结构体与链表的相关知识。
# 3. 结构体与链表
### 3.1 结构体的定义与使用
在C语言中,结构体是一种自定义的数据类型,可以将不同类型的数据封装在一起形成一个结构体对象,以便更方便地操作和管理这些相关数据。
结构体的定义方式如下:
```c
struct 结构体名称 {
数据类型 成员1;
数据类型 成员2;
// ...
};
```
例如,我们可以定义一个表示学生信息的结构体:
```c
struct Student {
char name[20];
int age;
int score;
};
```
我们可以使用结构体类型创建结构体对象,并对结构体成员进行赋值和访问:
```c
struct Student stu1;
strcpy(stu1.name, "张三");
stu1.age = 18;
stu1.score = 90;
```
### 3.2 链表的基本概念
链表是一种常用的数据结构,它由一组节点组成,每个节点包含自
0
0
相关推荐
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)