Quellcode durchsuchen

2分钱学C语言 DeepSeek API 自动写代码

蘭雅sRGB vor 1 Tag
Ursprung
Commit
0e832a1790

+ 70 - 0
DeepSeek_API/DeepSeekChat/README.md

@@ -0,0 +1,70 @@
+# DeepSeek 智能问答助手
+
+一个基于 Python tkinter 的图形界面问答程序,调用 DeepSeek API 进行智能对话。
+
+## 功能特点
+
+- 💬 简洁美观的图形界面
+- 🤖 支持多轮对话(保留上下文)
+- ⚡ 异步请求,界面不卡顿
+- ⌨️ 快捷键支持(Enter 发送,Shift+Enter 换行)
+- 🧹 一键清空对话记录
+
+## 环境要求
+
+- Python 3.8+
+- 有效的 DeepSeek API Key
+
+## 安装步骤
+
+1. **安装依赖**
+
+```bash
+pip install -r requirements.txt
+```
+
+2. **配置 API Key**
+
+编辑 `config.py` 文件,将 `API_KEY` 替换为你自己的 DeepSeek API Key:
+
+```python
+API_KEY = "sk-你的API密钥"
+```
+
+获取 API Key:https://platform.deepseek.com/
+
+## 运行程序
+
+```bash
+python main.py
+```
+
+## 使用说明
+
+1. 在底部输入框中输入你的问题
+2. 按 **Enter** 键或点击 **发送** 按钮发送消息
+3. 按 **Shift+Enter** 换行
+4. 点击右上角 **清空对话** 按钮重置对话
+
+## 项目结构
+
+```
+DeepSeekChat/
+├── main.py          # 主程序(GUI 界面)
+├── config.py        # 配置文件(API Key 等)
+├── requirements.txt # 依赖包列表
+└── README.md        # 项目说明
+```
+
+## 常见问题
+
+**Q: 提示 "API 客户端未初始化"?**
+A: 请检查 `config.py` 中的 API Key 是否正确填写。
+
+**Q: 提示 "请求失败"?**
+A: 请检查网络连接,以及 API Key 是否有效。
+
+**Q: 如何更换模型?**
+A: 修改 `config.py` 中的 `MODEL` 变量,可选值:
+- `deepseek-chat` - DeepSeek-V3 对话模型
+- `deepseek-reasoner` - DeepSeek-R1 推理模型

+ 7 - 0
DeepSeek_API/DeepSeekChat/config.py

@@ -0,0 +1,7 @@
+# DeepSeek API 配置文件
+# 请在此处填入你的 DeepSeek API Key
+# 获取方式:https://platform.deepseek.com/
+
+API_KEY = "sk-123456788888888888888888888"
+API_BASE = "https://api.deepseek.com"
+MODEL = "deepseek-chat"

+ 305 - 0
DeepSeek_API/DeepSeekChat/main.py

@@ -0,0 +1,305 @@
+"""
+DeepSeek Chat - 图形界面问答程序
+使用 tkinter 构建 GUI,调用 DeepSeek API 进行问答
+"""
+
+import tkinter as tk
+from tkinter import scrolledtext, messagebox, ttk
+import threading
+import json
+from datetime import datetime
+
+from openai import OpenAI
+import config
+
+
+class DeepSeekChatApp:
+    """DeepSeek 问答图形界面程序"""
+
+    def __init__(self, root):
+        self.root = root
+        self.root.title("DeepSeek 智能问答助手")
+        self.root.geometry("800x600")
+        self.root.minsize(600, 400)
+
+        # 设置窗口图标和背景色
+        self.root.configure(bg="#f0f0f0")
+
+        # 初始化 API 客户端
+        self.client = None
+        self.conversation_history = []
+        self.is_loading = False
+
+        # 创建界面组件
+        self._create_widgets()
+
+        # 初始化 API 连接
+        self._init_api()
+
+    def _init_api(self):
+        """初始化 DeepSeek API 客户端"""
+        try:
+            self.client = OpenAI(
+                api_key=config.API_KEY,
+                base_url=config.API_BASE
+            )
+            self.status_var.set("✓ API 连接已就绪")
+        except Exception as e:
+            self.status_var.set(f"✗ API 初始化失败: {str(e)}")
+
+    def _create_widgets(self):
+        """创建界面组件"""
+        # 顶部标题栏
+        header = tk.Frame(self.root, bg="#4a90d9", height=50)
+        header.pack(fill=tk.X)
+        header.pack_propagate(False)
+
+        title_label = tk.Label(
+            header,
+            text="💬 DeepSeek 智能问答助手",
+            font=("Microsoft YaHei", 14, "bold"),
+            bg="#4a90d9",
+            fg="white"
+        )
+        title_label.pack(side=tk.LEFT, padx=15, pady=10)
+
+        # 清空对话按钮
+        clear_btn = tk.Button(
+            header,
+            text="清空对话",
+            font=("Microsoft YaHei", 9),
+            bg="#e74c3c",
+            fg="white",
+            relief=tk.FLAT,
+            cursor="hand2",
+            command=self.clear_conversation
+        )
+        clear_btn.pack(side=tk.RIGHT, padx=15, pady=10)
+
+        # 主内容区域
+        main_frame = tk.Frame(self.root, bg="#f0f0f0")
+        main_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
+
+        # 对话显示区域
+        self.chat_display = scrolledtext.ScrolledText(
+            main_frame,
+            wrap=tk.WORD,
+            font=("Microsoft YaHei", 11),
+            bg="white",
+            fg="#333333",
+            state=tk.DISABLED,
+            relief=tk.FLAT,
+            padx=10,
+            pady=10
+        )
+        self.chat_display.pack(fill=tk.BOTH, expand=True)
+
+        # 配置文本标签样式
+        self.chat_display.tag_configure(
+            "user",
+            foreground="#2c3e50",
+            font=("Microsoft YaHei", 11, "bold"),
+            spacing1=10,
+            spacing3=5
+        )
+        self.chat_display.tag_configure(
+            "assistant",
+            foreground="#27ae60",
+            font=("Microsoft YaHei", 11),
+            spacing1=10,
+            spacing3=5
+        )
+        self.chat_display.tag_configure(
+            "system",
+            foreground="#95a5a6",
+            font=("Microsoft YaHei", 9, "italic"),
+            spacing1=5,
+            spacing3=5
+        )
+        self.chat_display.tag_configure(
+            "error",
+            foreground="#e74c3c",
+            font=("Microsoft YaHei", 11),
+            spacing1=10,
+            spacing3=5
+        )
+
+        # 输入区域
+        input_frame = tk.Frame(main_frame, bg="#f0f0f0")
+        input_frame.pack(fill=tk.X, pady=(10, 0))
+
+        # 输入框
+        self.input_text = tk.Text(
+            input_frame,
+            height=3,
+            font=("Microsoft YaHei", 11),
+            bg="white",
+            fg="#333333",
+            relief=tk.FLAT,
+            padx=10,
+            pady=10,
+            wrap=tk.WORD
+        )
+        self.input_text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
+        self.input_text.bind("<Return>", self._on_enter)
+        self.input_text.bind("<Shift-Return>", self._on_shift_enter)
+
+        # 发送按钮
+        self.send_btn = tk.Button(
+            input_frame,
+            text="发送 ➤",
+            font=("Microsoft YaHei", 11, "bold"),
+            bg="#4a90d9",
+            fg="white",
+            relief=tk.FLAT,
+            cursor="hand2",
+            padx=20,
+            pady=10,
+            command=self.send_message
+        )
+        self.send_btn.pack(side=tk.RIGHT, padx=(10, 0))
+
+        # 底部状态栏
+        status_frame = tk.Frame(self.root, bg="#e0e0e0", height=30)
+        status_frame.pack(fill=tk.X, side=tk.BOTTOM)
+        status_frame.pack_propagate(False)
+
+        self.status_var = tk.StringVar()
+        self.status_var.set("正在初始化...")
+        status_label = tk.Label(
+            status_frame,
+            textvariable=self.status_var,
+            font=("Microsoft YaHei", 9),
+            bg="#e0e0e0",
+            fg="#666666"
+        )
+        status_label.pack(side=tk.LEFT, padx=10, pady=5)
+
+        # 显示欢迎消息
+        self._display_message(
+            "system",
+            "欢迎使用 DeepSeek 智能问答助手!\n在下方输入你的问题,按 Enter 发送,Shift+Enter 换行。"
+        )
+
+    def _on_enter(self, event):
+        """处理 Enter 键发送消息"""
+        if not event.state & 0x0001:  # 检查是否按下 Shift
+            self.send_message()
+            return "break"
+        return None
+
+    def _on_shift_enter(self, event):
+        """处理 Shift+Enter 换行"""
+        return None
+
+    def _display_message(self, role, content):
+        """在对话区域显示消息"""
+        self.chat_display.config(state=tk.NORMAL)
+
+        # 添加时间戳
+        timestamp = datetime.now().strftime("%H:%M:%S")
+
+        if role == "user":
+            prefix = f"👤 你 ({timestamp}):\n"
+            tag = "user"
+        elif role == "assistant":
+            prefix = f"🤖 DeepSeek ({timestamp}):\n"
+            tag = "assistant"
+        elif role == "error":
+            prefix = f"⚠️ 错误 ({timestamp}):\n"
+            tag = "error"
+        else:
+            prefix = f"ℹ️ ({timestamp}):\n"
+            tag = "system"
+
+        self.chat_display.insert(tk.END, prefix, tag)
+        self.chat_display.insert(tk.END, content + "\n\n", tag)
+        self.chat_display.see(tk.END)
+        self.chat_display.config(state=tk.DISABLED)
+
+    def send_message(self):
+        """发送消息到 DeepSeek API"""
+        if self.is_loading:
+            return
+
+        # 获取用户输入
+        user_input = self.input_text.get("1.0", tk.END).strip()
+        if not user_input:
+            messagebox.showwarning("提示", "请输入问题内容")
+            return
+
+        # 清空输入框
+        self.input_text.delete("1.0", tk.END)
+
+        # 显示用户消息
+        self._display_message("user", user_input)
+
+        # 添加到对话历史
+        self.conversation_history.append({"role": "user", "content": user_input})
+
+        # 禁用发送按钮,显示加载状态
+        self.is_loading = True
+        self.send_btn.config(state=tk.DISABLED, text="思考中...")
+        self.status_var.set("正在请求 DeepSeek API...")
+
+        # 在后台线程中调用 API
+        thread = threading.Thread(target=self._call_api, daemon=True)
+        thread.start()
+
+    def _call_api(self):
+        """在后台线程中调用 DeepSeek API"""
+        try:
+            if not self.client:
+                raise Exception("API 客户端未初始化,请检查 config.py 中的 API Key 配置")
+
+            # 调用 API
+            response = self.client.chat.completions.create(
+                model=config.MODEL,
+                messages=self.conversation_history,
+                stream=False
+            )
+
+            # 获取回复内容
+            reply = response.choices[0].message.content
+
+            # 添加到对话历史
+            self.conversation_history.append({"role": "assistant", "content": reply})
+
+            # 在主线程中更新界面
+            self.root.after(0, self._display_message, "assistant", reply)
+            self.root.after(0, self._reset_ui, "✓ 回复完成")
+
+        except Exception as e:
+            error_msg = f"请求失败: {str(e)}\n\n请检查:\n1. API Key 是否正确\n2. 网络连接是否正常\n3. 是否已安装 openai 库"
+            self.root.after(0, self._display_message, "error", error_msg)
+            self.root.after(0, self._reset_ui, "✗ 请求失败")
+
+    def _reset_ui(self, status_text):
+        """重置界面状态"""
+        self.is_loading = False
+        self.send_btn.config(state=tk.NORMAL, text="发送 ➤")
+        self.status_var.set(status_text)
+
+    def clear_conversation(self):
+        """清空对话"""
+        if messagebox.askyesno("确认", "确定要清空所有对话记录吗?"):
+            self.conversation_history = []
+            self.chat_display.config(state=tk.NORMAL)
+            self.chat_display.delete("1.0", tk.END)
+            self.chat_display.config(state=tk.DISABLED)
+            self._display_message(
+                "system",
+                "对话已清空。开始新的对话吧!"
+            )
+            self.status_var.set("对话已清空")
+
+
+def main():
+    """程序入口"""
+    root = tk.Tk()
+    app = DeepSeekChatApp(root)
+    root.mainloop()
+
+
+if __name__ == "__main__":
+    main()

+ 1 - 0
DeepSeek_API/DeepSeekChat/requirements.txt

@@ -0,0 +1 @@
+openai>=1.0.0

+ 176 - 0
DeepSeek_API/README.md

@@ -0,0 +1,176 @@
+# C 语言学习项目
+
+这是一个面向初学者的 C 语言学习项目,包含 **20 个最简单的示例程序**,每个示例都有详细的**中文注释**,帮助你循序渐进地掌握 C 语言的基础知识。
+
+## 📁 项目结构
+
+```
+r:\zip\
+├── README.md              # 项目说明文档(本文件)
+└── examples\              # 示例代码目录
+    ├── 01_hello_world.c       # Hello World
+    ├── 02_variables.c         # 变量
+    ├── 03_input_output.c      # 输入与输出
+    ├── 04_arithmetic.c        # 算术运算
+    ├── 05_if_else.c           # 条件判断 if-else
+    ├── 06_switch.c            # switch 分支语句
+    ├── 07_for_loop.c          # for 循环
+    ├── 08_while_loop.c        # while 循环
+    ├── 09_break_continue.c    # break 和 continue
+    ├── 10_functions.c         # 函数
+    ├── 11_arrays.c            # 数组
+    ├── 12_strings.c           # 字符串
+    ├── 13_pointers.c          # 指针
+    ├── 14_structs.c           # 结构体
+    ├── 15_file_io.c           # 文件读写
+    ├── 16_dynamic_memory.c    # 动态内存分配
+    ├── 17_typedef_enum.c      # typedef 和 enum
+    ├── 18_sorting.c           # 冒泡排序
+    ├── 19_recursion.c         # 递归
+    └── 20_comprehensive.c     # 综合练习
+```
+
+## 🚀 如何运行
+
+### 方法一:使用 GCC 编译器(推荐)
+
+1. 确保你的电脑已安装 GCC 编译器
+   - **Windows**:安装 [MinGW](https://www.mingw-w64.org/) 或使用 [Dev-C++](https://www.bloodshed.net/devcpp.html)
+   - **Linux/Mac**:通常已预装,或使用 `sudo apt install gcc` 安装
+
+2. 编译并运行示例:
+   ```bash
+   # 进入示例目录
+   cd examples
+
+   # 编译(以第一个示例为例)
+   gcc 01_hello_world.c -o hello
+
+   # 运行
+   ./hello        # Linux/Mac
+   hello.exe      # Windows
+   ```
+
+### 方法二:使用在线编译器
+
+如果你不想安装任何软件,可以使用在线 C 语言编译器:
+- [OnlineGDB](https://www.onlinegdb.com/online_c_compiler)
+- [Compiler Explorer](https://godbolt.org/)
+
+只需将示例代码复制粘贴进去,点击运行即可。
+
+## 📚 学习路线
+
+建议按照以下顺序学习,每个示例都建立在前一个示例的基础上:
+
+| 阶段 | 示例 | 学习内容 |
+|------|------|----------|
+| **入门** | 01-04 | 程序结构、变量、输入输出、运算 |
+| **流程控制** | 05-09 | 条件判断、循环、break/continue |
+| **进阶** | 10-14 | 函数、数组、字符串、指针、结构体 |
+| **高级** | 15-20 | 文件操作、内存管理、算法、综合应用 |
+
+## 📖 示例详解
+
+### 01. Hello World(你好,世界)
+- **学习目标**:了解 C 程序的基本结构
+- **关键知识点**:`#include`、`main` 函数、`printf`、`return`
+
+### 02. 变量(Variables)
+- **学习目标**:掌握基本数据类型
+- **关键知识点**:`int`、`float`、`double`、`char`、格式化输出
+
+### 03. 输入与输出(Input and Output)
+- **学习目标**:学会与用户交互
+- **关键知识点**:`scanf`、`printf`、取地址符 `&`
+
+### 04. 算术运算(Arithmetic Operations)
+- **学习目标**:掌握基本运算符
+- **关键知识点**:`+`、`-`、`*`、`/`、`%`、自增自减
+
+### 05. 条件判断 if-else
+- **学习目标**:学会条件分支
+- **关键知识点**:`if`、`else if`、`else`、比较运算符
+
+### 06. switch 分支语句
+- **学习目标**:掌握多分支选择
+- **关键知识点**:`switch`、`case`、`break`、`default`
+
+### 07. for 循环
+- **学习目标**:掌握固定次数的循环
+- **关键知识点**:`for` 循环结构、嵌套循环、九九乘法表
+
+### 08. while 循环
+- **学习目标**:掌握不定次数的循环
+- **关键知识点**:`while`、`do-while`、猜数字游戏
+
+### 09. break 和 continue
+- **学习目标**:学会控制循环流程
+- **关键知识点**:`break` 跳出循环、`continue` 跳过本次
+
+### 10. 函数(Functions)
+- **学习目标**:学会代码模块化
+- **关键知识点**:函数定义、参数、返回值、递归
+
+### 11. 数组(Arrays)
+- **学习目标**:掌握批量数据处理
+- **关键知识点**:数组声明、遍历、求最大值
+
+### 12. 字符串(Strings)
+- **学习目标**:掌握字符串操作
+- **关键知识点**:字符数组、`strlen`、`strcpy`、`strcat`、`strcmp`
+
+### 13. 指针(Pointers)
+- **学习目标**:理解 C 语言的核心概念
+- **关键知识点**:取地址 `&`、解引用 `*`、指针交换
+
+### 14. 结构体(Structures)
+- **学习目标**:学会组合不同类型的数据
+- **关键知识点**:`struct`、成员访问、结构体数组
+
+### 15. 文件读写(File I/O)
+- **学习目标**:学会持久化存储数据
+- **关键知识点**:`fopen`、`fprintf`、`fgets`、`fclose`
+
+### 16. 动态内存分配(Dynamic Memory)
+- **学习目标**:学会运行时分配内存
+- **关键知识点**:`malloc`、`free`、内存管理
+
+### 17. typedef 和 enum
+- **学习目标**:学会类型别名和枚举
+- **关键知识点**:`typedef`、`enum`、代码可读性
+
+### 18. 冒泡排序(Bubble Sort)
+- **学习目标**:学习经典排序算法
+- **关键知识点**:冒泡排序、数组操作、算法思维
+
+### 19. 递归(Recursion)
+- **学习目标**:理解递归思想
+- **关键知识点**:递归调用、终止条件、阶乘、斐波那契数列
+
+### 20. 综合练习(Comprehensive)
+- **学习目标**:综合运用所学知识
+- **关键知识点**:学生成绩管理系统、结构体+函数+数组
+
+## 💡 学习建议
+
+1. **动手实践**:不要只看代码,一定要自己动手敲一遍
+2. **修改代码**:尝试修改示例中的数值,观察输出变化
+3. **举一反三**:每个示例都尝试自己扩展新功能
+4. **多写注释**:养成写注释的好习惯,帮助理解代码
+5. **循序渐进**:按照学习路线逐步学习,不要跳步
+
+## 🛠️ 常见问题
+
+**Q:为什么我的程序运行后窗口一闪而过?**
+A:在 Windows 下,可以在 `return 0;` 前加上 `getchar();` 或 `system("pause");` 来暂停程序。
+
+**Q:scanf 为什么要用 `&`?**
+A:`&` 是取地址运算符,`scanf` 需要知道把输入的数据存到哪里,所以需要变量的地址。
+
+**Q:整数除法为什么结果不对?**
+A:两个整数相除会得到整数结果(丢弃小数部分),如果需要小数结果,需要把其中一个转换为浮点数。
+
+## 📄 许可证
+
+本项目仅供学习使用,欢迎自由使用和修改。

+ 20 - 0
DeepSeek_API/examples/01_hello_world.c

@@ -0,0 +1,20 @@
+/*
+ * 示例1:Hello World(你好,世界)
+ * 这是学习任何编程语言的第一个程序
+ * 功能:在屏幕上输出一行文字
+ */
+
+// 引入标准输入输出头文件
+// stdio.h 提供了 printf 等输入输出函数
+#include <stdio.h>
+
+// main 函数是程序的入口,程序从这里开始执行
+int main() {
+    // printf 是"打印格式化"函数,用于在屏幕上输出内容
+    // \n 表示换行符,让光标移到下一行
+    printf("Hello, World!\n");
+
+    // return 0 表示程序正常结束
+    // 返回 0 给操作系统,表示程序运行成功
+    return 0;
+}

+ 35 - 0
DeepSeek_API/examples/02_variables.c

@@ -0,0 +1,35 @@
+/*
+ * 示例2:变量(Variables)
+ * 功能:学习如何声明和使用不同类型的变量
+ */
+
+#include <stdio.h>
+
+int main() {
+    // 声明一个整型变量 age,并赋值为 18
+    // int 表示整数类型
+    int age = 18;
+
+    // 声明一个浮点型变量 height,并赋值为 1.75
+    // float 表示单精度浮点数(带小数点的数)
+    float height = 1.75;
+
+    // 声明一个双精度浮点型变量 pi
+    // double 比 float 精度更高
+    double pi = 3.14159265358979;
+
+    // 声明一个字符型变量 grade,并赋值为 'A'
+    // char 表示单个字符,用单引号括起来
+    char grade = 'A';
+
+    // 输出各个变量的值
+    // %d 是整数的占位符
+    // %f 是浮点数的占位符
+    // %c 是字符的占位符
+    printf("年龄:%d\n", age);
+    printf("身高:%.2f 米\n", height);  // %.2f 表示保留两位小数
+    printf("圆周率:%lf\n", pi);        // %lf 是 double 的占位符
+    printf("成绩等级:%c\n", grade);
+
+    return 0;
+}

+ 32 - 0
DeepSeek_API/examples/03_input_output.c

@@ -0,0 +1,32 @@
+/*
+ * 示例3:输入与输出(Input and Output)
+ * 功能:学习使用 scanf 从键盘读取输入,使用 printf 输出结果
+ */
+
+#include <stdio.h>
+
+int main() {
+    // 声明一个变量用于存储用户输入的数字
+    int number;
+
+    // printf 用于输出提示信息
+    printf("请输入一个整数:");
+
+    // scanf 用于从键盘读取输入
+    // %d 表示读取一个整数
+    // &number 中的 & 表示取 number 的地址(先记住这个写法)
+    scanf("%d", &number);
+
+    // 输出用户输入的数字
+    printf("你输入的数字是:%d\n", number);
+
+    // 再演示一次:输入两个数并求和
+    int a, b;
+    printf("请输入两个整数(用空格隔开):");
+    scanf("%d %d", &a, &b);
+
+    int sum = a + b;  // 计算两数之和
+    printf("%d + %d = %d\n", a, b, sum);
+
+    return 0;
+}

+ 44 - 0
DeepSeek_API/examples/04_arithmetic.c

@@ -0,0 +1,44 @@
+/*
+ * 示例4:算术运算(Arithmetic Operations)
+ * 功能:学习 C 语言中的基本算术运算符
+ */
+
+#include <stdio.h>
+
+int main() {
+    int a = 10;
+    int b = 3;
+
+    // 加法运算
+    int sum = a + b;
+    printf("%d + %d = %d\n", a, b, sum);
+
+    // 减法运算
+    int diff = a - b;
+    printf("%d - %d = %d\n", a, b, diff);
+
+    // 乘法运算
+    int product = a * b;
+    printf("%d * %d = %d\n", a, b, product);
+
+    // 除法运算(注意:整数除法会丢弃小数部分)
+    int quotient = a / b;
+    printf("%d / %d = %d(整数除法,丢弃小数)\n", a, b, quotient);
+
+    // 取余运算(求余数)
+    int remainder = a % b;
+    printf("%d %% %d = %d(取余数)\n", a, b, remainder);
+
+    // 浮点数除法(保留小数)
+    float result = (float)a / b;  // (float)a 把 a 转换为浮点数
+    printf("%d / %d = %.2f(浮点数除法)\n", a, b, result);
+
+    // 自增和自减运算
+    int count = 5;
+    count++;  // count 加 1,等价于 count = count + 1
+    printf("自增后 count = %d\n", count);
+    count--;  // count 减 1
+    printf("自减后 count = %d\n", count);
+
+    return 0;
+}

+ 41 - 0
DeepSeek_API/examples/05_if_else.c

@@ -0,0 +1,41 @@
+/*
+ * 示例5:条件判断 if-else(条件语句)
+ * 功能:学习使用 if-else 根据条件执行不同的代码
+ */
+
+#include <stdio.h>
+
+int main() {
+    int score;
+
+    printf("请输入你的考试成绩(0-100):");
+    scanf("%d", &score);
+
+    // if-else 条件判断
+    // 根据分数给出不同的评价
+    if (score >= 90) {
+        // 条件成立时执行这里的代码
+        printf("优秀!成绩:%d\n", score);
+    } else if (score >= 80) {
+        printf("良好!成绩:%d\n", score);
+    } else if (score >= 60) {
+        printf("及格!成绩:%d\n", score);
+    } else {
+        // 以上条件都不成立时执行这里的代码
+        printf("不及格,需要加油!成绩:%d\n", score);
+    }
+
+    // 再演示一个简单的判断:判断奇偶数
+    int number;
+    printf("请输入一个整数:");
+    scanf("%d", &number);
+
+    // % 取余运算,如果除以 2 余数为 0 则是偶数
+    if (number % 2 == 0) {
+        printf("%d 是偶数\n", number);
+    } else {
+        printf("%d 是奇数\n", number);
+    }
+
+    return 0;
+}

+ 45 - 0
DeepSeek_API/examples/06_switch.c

@@ -0,0 +1,45 @@
+/*
+ * 示例6:switch 分支语句
+ * 功能:学习使用 switch 进行多分支选择
+ * 适合用于判断一个变量的多个固定取值
+ */
+
+#include <stdio.h>
+
+int main() {
+    int day;
+
+    printf("请输入星期几(1-7):");
+    scanf("%d", &day);
+
+    // switch 语句根据 day 的值执行对应的分支
+    switch (day) {
+        case 1:
+            printf("星期一,新的一周开始啦!\n");
+            break;  // break 表示跳出 switch,防止继续执行下面的分支
+        case 2:
+            printf("星期二,加油!\n");
+            break;
+        case 3:
+            printf("星期三,一周过半了!\n");
+            break;
+        case 4:
+            printf("星期四,快周末了!\n");
+            break;
+        case 5:
+            printf("星期五,明天就放假啦!\n");
+            break;
+        case 6:
+            printf("星期六,好好休息!\n");
+            break;
+        case 7:
+            printf("星期日,准备迎接新的一周!\n");
+            break;
+        default:
+            // 当 day 不匹配任何 case 时执行 default
+            printf("输入无效,请输入 1-7 之间的数字!\n");
+            break;
+    }
+
+    return 0;
+}

+ 38 - 0
DeepSeek_API/examples/07_for_loop.c

@@ -0,0 +1,38 @@
+/*
+ * 示例7:for 循环
+ * 功能:学习使用 for 循环重复执行代码
+ * 适合用于已知循环次数的情况
+ */
+
+#include <stdio.h>
+
+int main() {
+    // for 循环的基本结构:
+    // for (初始化; 条件; 更新) { 循环体 }
+    // 1. 初始化:i = 1,循环开始前执行一次
+    // 2. 条件:i <= 5,每次循环前检查
+    // 3. 更新:i++,每次循环结束后执行
+    printf("=== 打印 1 到 5 ===\n");
+    for (int i = 1; i <= 5; i++) {
+        printf("第 %d 次循环\n", i);
+    }
+
+    // 计算 1 到 100 的和
+    printf("\n=== 计算 1 到 100 的和 ===\n");
+    int sum = 0;
+    for (int i = 1; i <= 100; i++) {
+        sum = sum + i;  // 累加
+    }
+    printf("1 + 2 + ... + 100 = %d\n", sum);
+
+    // 打印乘法表(嵌套循环)
+    printf("\n=== 九九乘法表 ===\n");
+    for (int i = 1; i <= 9; i++) {
+        for (int j = 1; j <= i; j++) {
+            printf("%d*%d=%-2d ", j, i, i * j);
+        }
+        printf("\n");  // 每行结束换行
+    }
+
+    return 0;
+}

+ 50 - 0
DeepSeek_API/examples/08_while_loop.c

@@ -0,0 +1,50 @@
+/*
+ * 示例8:while 循环
+ * 功能:学习使用 while 和 do-while 循环
+ * while 适合用于循环次数不确定的情况
+ */
+
+#include <stdio.h>
+
+int main() {
+    // while 循环:先判断条件,条件成立才执行循环体
+    // 适合用于不知道循环次数的情况
+    printf("=== while 循环:累加直到超过 100 ===\n");
+    int sum = 0;
+    int i = 1;
+    while (sum <= 100) {
+        sum = sum + i;
+        i++;
+    }
+    printf("累加到 %d 时,总和 %d 超过了 100\n", i - 1, sum);
+
+    // do-while 循环:先执行一次循环体,再判断条件
+    // 至少会执行一次
+    printf("\n=== do-while 循环 ===\n");
+    int count = 0;
+    do {
+        printf("第 %d 次执行\n", count + 1);
+        count++;
+    } while (count < 3);
+
+    // 使用 while 循环实现猜数字游戏
+    printf("\n=== 猜数字游戏 ===\n");
+    int secret = 7;  // 秘密数字
+    int guess;
+
+    printf("猜一个 1-10 之间的数字:");
+    scanf("%d", &guess);
+
+    // 只要猜错就继续循环
+    while (guess != secret) {
+        if (guess < secret) {
+            printf("太小了,再试一次:");
+        } else {
+            printf("太大了,再试一次:");
+        }
+        scanf("%d", &guess);
+    }
+    printf("恭喜你猜对了!答案是 %d\n", secret);
+
+    return 0;
+}

+ 42 - 0
DeepSeek_API/examples/09_break_continue.c

@@ -0,0 +1,42 @@
+/*
+ * 示例9:break 和 continue 语句
+ * 功能:学习在循环中使用 break 跳出循环,continue 跳过本次循环
+ */
+
+#include <stdio.h>
+
+int main() {
+    // break:立即跳出整个循环
+    printf("=== break 示例:找到第一个能被 7 整除的数 ===\n");
+    for (int i = 1; i <= 100; i++) {
+        if (i % 7 == 0) {
+            printf("找到第一个能被 7 整除的数:%d\n", i);
+            break;  // 找到后立即跳出循环
+        }
+    }
+
+    // continue:跳过本次循环,继续下一次循环
+    printf("\n=== continue 示例:打印 1-10 中的偶数 ===\n");
+    for (int i = 1; i <= 10; i++) {
+        if (i % 2 != 0) {
+            continue;  // 如果是奇数,跳过本次循环,不执行下面的代码
+        }
+        printf("%d ", i);  // 只有偶数才会执行到这里
+    }
+    printf("\n");
+
+    // 综合示例:打印 1-20 中能被 3 整除但不能被 9 整除的数
+    printf("\n=== 综合示例 ===\n");
+    for (int i = 1; i <= 20; i++) {
+        if (i % 3 != 0) {
+            continue;  // 不能被 3 整除,跳过
+        }
+        if (i % 9 == 0) {
+            continue;  // 能被 9 整除,跳过
+        }
+        printf("%d ", i);
+    }
+    printf("\n");
+
+    return 0;
+}

+ 44 - 0
DeepSeek_API/examples/10_functions.c

@@ -0,0 +1,44 @@
+/*
+ * 示例10:函数(Functions)
+ * 功能:学习如何定义和调用函数
+ * 函数可以把代码组织成可复用的模块
+ */
+
+#include <stdio.h>
+
+// 定义一个函数:计算两个整数的和
+// 返回类型 int,函数名 add,参数 int a, int b
+int add(int a, int b) {
+    int result = a + b;
+    return result;  // 返回计算结果
+}
+
+// 定义一个函数:打印问候语
+// 返回类型 void 表示不返回任何值
+void greet(char name[]) {
+    printf("你好,%s!欢迎学习 C 语言。\n", name);
+}
+
+// 定义一个函数:计算阶乘(递归函数)
+// 递归:函数调用自身
+int factorial(int n) {
+    if (n <= 1) {
+        return 1;  // 递归的终止条件
+    }
+    return n * factorial(n - 1);  // 递归调用
+}
+
+int main() {
+    // 调用 add 函数
+    int sum = add(10, 20);
+    printf("10 + 20 = %d\n", sum);
+
+    // 调用 greet 函数
+    greet("小明");
+
+    // 调用 factorial 函数
+    int result = factorial(5);
+    printf("5! = %d\n", result);
+
+    return 0;
+}

+ 50 - 0
DeepSeek_API/examples/11_arrays.c

@@ -0,0 +1,50 @@
+/*
+ * 示例11:数组(Arrays)
+ * 功能:学习使用数组存储多个相同类型的数据
+ */
+
+#include <stdio.h>
+
+int main() {
+    // 声明一个包含 5 个整数的数组
+    // 数组下标从 0 开始,所以是 scores[0] 到 scores[4]
+    int scores[5];
+
+    // 给数组赋值
+    scores[0] = 85;
+    scores[1] = 92;
+    scores[2] = 78;
+    scores[3] = 96;
+    scores[4] = 88;
+
+    // 输出数组中的元素
+    printf("=== 输出数组元素 ===\n");
+    for (int i = 0; i < 5; i++) {
+        printf("scores[%d] = %d\n", i, scores[i]);
+    }
+
+    // 计算数组元素的总和和平均值
+    int sum = 0;
+    for (int i = 0; i < 5; i++) {
+        sum = sum + scores[i];
+    }
+    double average = (double)sum / 5;
+    printf("总分:%d,平均分:%.2f\n", sum, average);
+
+    // 声明并初始化数组的另一种方式
+    printf("\n=== 直接初始化的数组 ===\n");
+    int numbers[] = {10, 20, 30, 40, 50};  // 自动计算数组大小
+    int size = sizeof(numbers) / sizeof(numbers[0]);  // 计算数组长度
+    printf("数组长度:%d\n", size);
+
+    // 找出数组中的最大值
+    int max = numbers[0];
+    for (int i = 1; i < size; i++) {
+        if (numbers[i] > max) {
+            max = numbers[i];
+        }
+    }
+    printf("数组中的最大值:%d\n", max);
+
+    return 0;
+}

+ 50 - 0
DeepSeek_API/examples/12_strings.c

@@ -0,0 +1,50 @@
+/*
+ * 示例12:字符串(Strings)
+ * 功能:学习使用字符数组表示字符串,以及常用的字符串操作
+ */
+
+#include <stdio.h>
+#include <string.h>  // 字符串处理函数所在的头文件
+
+int main() {
+    // 字符串本质上是字符数组,以 '\0'(空字符)结尾
+    char name[] = "张三";  // 自动在末尾添加 '\0'
+    printf("姓名:%s\n", name);
+
+    // 字符串的长度(不包括结尾的 '\0')
+    int len = strlen(name);
+    printf("姓名的长度:%d\n", len);
+
+    // 字符串拼接
+    char firstName[] = "张";
+    char lastName[] = "三";
+    char fullName[20];  // 预留足够的空间
+
+    // strcpy 复制字符串
+    strcpy(fullName, firstName);
+    // strcat 拼接字符串
+    strcat(fullName, lastName);
+    printf("拼接后的姓名:%s\n", fullName);
+
+    // 字符串比较
+    char str1[] = "hello";
+    char str2[] = "hello";
+    char str3[] = "world";
+
+    // strcmp 返回 0 表示相等
+    if (strcmp(str1, str2) == 0) {
+        printf("str1 和 str2 相等\n");
+    }
+    if (strcmp(str1, str3) != 0) {
+        printf("str1 和 str3 不相等\n");
+    }
+
+    // 逐个字符访问字符串
+    printf("\n=== 逐个字符输出 ===\n");
+    char word[] = "C语言";
+    for (int i = 0; word[i] != '\0'; i++) {
+        printf("字符 %d:%c\n", i, word[i]);
+    }
+
+    return 0;
+}

+ 48 - 0
DeepSeek_API/examples/13_pointers.c

@@ -0,0 +1,48 @@
+/*
+ * 示例13:指针(Pointers)
+ * 功能:学习指针的基本概念和使用方法
+ * 指针是 C 语言的核心特性,用于存储变量的内存地址
+ */
+
+#include <stdio.h>
+
+int main() {
+    // 声明一个普通变量
+    int number = 100;
+
+    // 声明一个指针变量,用于存储 int 类型变量的地址
+    // * 表示这是一个指针,int* 表示指向 int 类型的指针
+    int *ptr;
+
+    // & 是取地址运算符,获取 number 的内存地址
+    ptr = &number;
+
+    // 输出变量的值和地址
+    printf("number 的值:%d\n", number);
+    printf("number 的地址:%p\n", &number);
+    printf("ptr 存储的地址:%p\n", ptr);
+
+    // * 是解引用运算符,通过指针访问它指向的变量的值
+    printf("通过指针访问 number 的值:%d\n", *ptr);
+
+    // 通过指针修改变量的值
+    *ptr = 200;  // 等价于 number = 200
+    printf("修改后 number 的值:%d\n", number);
+
+    // 指针的常见用途:在函数中修改外部变量
+    printf("\n=== 通过指针交换两个数 ===\n");
+    int a = 5, b = 10;
+    printf("交换前:a = %d, b = %d\n", a, b);
+
+    // 使用指针交换
+    int temp;
+    int *pa = &a;  // pa 指向 a
+    int *pb = &b;  // pb 指向 b
+    temp = *pa;    // temp = a 的值
+    *pa = *pb;     // a = b 的值
+    *pb = temp;    // b = temp
+
+    printf("交换后:a = %d, b = %d\n", a, b);
+
+    return 0;
+}

+ 54 - 0
DeepSeek_API/examples/14_structs.c

@@ -0,0 +1,54 @@
+/*
+ * 示例14:结构体(Structures)
+ * 功能:学习使用结构体将不同类型的数据组合在一起
+ */
+
+#include <stdio.h>
+#include <string.h>
+
+// 定义一个结构体类型 Student(学生)
+// struct 关键字用于定义结构体
+struct Student {
+    char name[20];   // 姓名
+    int age;         // 年龄
+    float score;     // 成绩
+};
+
+int main() {
+    // 声明一个 Student 类型的变量
+    struct Student stu1;
+
+    // 给结构体的成员赋值
+    // 使用点号 . 访问结构体的成员
+    strcpy(stu1.name, "小明");
+    stu1.age = 18;
+    stu1.score = 92.5;
+
+    // 输出结构体的成员
+    printf("=== 学生信息 ===\n");
+    printf("姓名:%s\n", stu1.name);
+    printf("年龄:%d\n", stu1.age);
+    printf("成绩:%.1f\n", stu1.score);
+
+    // 声明并初始化结构体的另一种方式
+    struct Student stu2 = {"小红", 19, 88.0};
+    printf("\n=== 第二个学生 ===\n");
+    printf("姓名:%s,年龄:%d,成绩:%.1f\n",
+           stu2.name, stu2.age, stu2.score);
+
+    // 结构体数组:存储多个学生
+    printf("\n=== 学生数组 ===\n");
+    struct Student students[3] = {
+        {"张三", 20, 85.5},
+        {"李四", 21, 90.0},
+        {"王五", 19, 78.5}
+    };
+
+    // 遍历输出所有学生
+    for (int i = 0; i < 3; i++) {
+        printf("第 %d 个学生:%s,年龄 %d,成绩 %.1f\n",
+               i + 1, students[i].name, students[i].age, students[i].score);
+    }
+
+    return 0;
+}

+ 52 - 0
DeepSeek_API/examples/15_file_io.c

@@ -0,0 +1,52 @@
+/*
+ * 示例15:文件读写(File I/O)
+ * 功能:学习如何读写文件
+ */
+
+#include <stdio.h>
+
+int main() {
+    // 1. 写入文件
+    // fopen 打开文件,第一个参数是文件名,第二个参数是模式
+    // "w" 表示写入模式(write),如果文件不存在会创建
+    FILE *file = fopen("example.txt", "w");
+
+    // 检查文件是否成功打开
+    if (file == NULL) {
+        printf("文件打开失败!\n");
+        return 1;  // 返回非 0 表示程序出错
+    }
+
+    // fprintf 向文件写入内容(类似 printf,但输出到文件)
+    fprintf(file, "这是第一行内容\n");
+    fprintf(file, "这是第二行内容\n");
+    fprintf(file, "数字:%d,小数:%.2f\n", 42, 3.14);
+
+    // fclose 关闭文件,释放资源
+    fclose(file);
+    printf("文件写入成功!\n");
+
+    // 2. 读取文件
+    // "r" 表示读取模式(read)
+    file = fopen("example.txt", "r");
+
+    if (file == NULL) {
+        printf("文件打开失败!\n");
+        return 1;
+    }
+
+    printf("\n=== 读取文件内容 ===\n");
+    char buffer[100];
+
+    // fgets 逐行读取文件内容
+    // 返回 NULL 表示读到文件末尾
+    while (fgets(buffer, sizeof(buffer), file) != NULL) {
+        printf("%s", buffer);  // 输出读取到的每一行
+    }
+
+    // 关闭文件
+    fclose(file);
+    printf("\n文件读取完成!\n");
+
+    return 0;
+}

+ 54 - 0
DeepSeek_API/examples/16_dynamic_memory.c

@@ -0,0 +1,54 @@
+/*
+ * 示例16:动态内存分配(Dynamic Memory)
+ * 功能:学习使用 malloc 和 free 动态分配和释放内存
+ */
+
+#include <stdio.h>
+#include <stdlib.h>  // malloc 和 free 函数所在的头文件
+
+int main() {
+    // 动态分配内存:在程序运行时申请内存
+    // malloc 参数是需要的字节数
+    // sizeof(int) 返回 int 类型占用的字节数(通常是 4)
+    int *ptr = (int *)malloc(sizeof(int));
+
+    // 检查内存分配是否成功
+    if (ptr == NULL) {
+        printf("内存分配失败!\n");
+        return 1;
+    }
+
+    // 使用分配的内存
+    *ptr = 100;
+    printf("动态分配的内存中存储的值:%d\n", *ptr);
+
+    // 释放内存
+    free(ptr);
+    printf("内存已释放\n");
+
+    // 动态分配数组
+    printf("\n=== 动态分配数组 ===\n");
+    int size;
+    printf("请输入数组大小:");
+    scanf("%d", &size);
+
+    // 分配一个包含 size 个整数的数组
+    int *arr = (int *)malloc(size * sizeof(int));
+
+    if (arr == NULL) {
+        printf("内存分配失败!\n");
+        return 1;
+    }
+
+    // 给数组赋值并输出
+    for (int i = 0; i < size; i++) {
+        arr[i] = i * 10;
+        printf("arr[%d] = %d\n", i, arr[i]);
+    }
+
+    // 释放数组内存
+    free(arr);
+    printf("数组内存已释放\n");
+
+    return 0;
+}

+ 65 - 0
DeepSeek_API/examples/17_typedef_enum.c

@@ -0,0 +1,65 @@
+/*
+ * 示例17:typedef 和 enum
+ * 功能:学习使用 typedef 给类型起别名,使用 enum 定义枚举类型
+ */
+
+#include <stdio.h>
+
+// typedef 给结构体起一个更简洁的别名
+// 这样就不用每次都写 struct Student 了
+typedef struct {
+    char name[20];
+    int age;
+} Student;
+
+// enum 定义枚举类型:一组命名的整数常量
+// 默认从 0 开始,依次递增
+enum Weekday {
+    MONDAY,     // 0
+    TUESDAY,    // 1
+    WEDNESDAY,  // 2
+    THURSDAY,   // 3
+    FRIDAY,     // 4
+    SATURDAY,   // 5
+    SUNDAY      // 6
+};
+
+// 也可以指定枚举的值
+enum Color {
+    RED = 1,
+    GREEN = 2,
+    BLUE = 3
+};
+
+int main() {
+    // 使用 typedef 后的类型,不需要写 struct 关键字
+    Student stu;
+    stu.age = 20;
+    printf("学生年龄:%d\n", stu.age);
+
+    // 使用枚举类型
+    enum Weekday today = WEDNESDAY;
+    printf("WEDNESDAY 的值:%d\n", today);
+
+    // 枚举可以用于 switch 判断
+    enum Color myColor = GREEN;
+    switch (myColor) {
+        case RED:
+            printf("颜色是红色\n");
+            break;
+        case GREEN:
+            printf("颜色是绿色\n");
+            break;
+        case BLUE:
+            printf("颜色是蓝色\n");
+            break;
+    }
+
+    // 枚举常用于定义状态
+    printf("\n=== 使用枚举表示状态 ===\n");
+    enum Status { SUCCESS = 0, FAILURE = 1, PENDING = 2 };
+    enum Status status = SUCCESS;
+    printf("状态码:%d\n", status);
+
+    return 0;
+}

+ 61 - 0
DeepSeek_API/examples/18_sorting.c

@@ -0,0 +1,61 @@
+/*
+ * 示例18:冒泡排序(Bubble Sort)
+ * 功能:学习经典的排序算法 - 冒泡排序
+ * 通过不断比较相邻元素并交换,把大的元素"冒泡"到后面
+ */
+
+#include <stdio.h>
+
+// 定义一个函数:冒泡排序
+// 参数:数组和数组长度
+void bubbleSort(int arr[], int n) {
+    // 外层循环控制排序的轮数
+    for (int i = 0; i < n - 1; i++) {
+        // 内层循环进行相邻元素的比较和交换
+        // 每轮结束后,最大的元素会"冒泡"到最后
+        for (int j = 0; j < n - 1 - i; j++) {
+            // 如果前面的元素比后面的大,就交换
+            if (arr[j] > arr[j + 1]) {
+                // 交换两个元素
+                int temp = arr[j];
+                arr[j] = arr[j + 1];
+                arr[j + 1] = temp;
+            }
+        }
+    }
+}
+
+// 定义一个函数:打印数组
+void printArray(int arr[], int n) {
+    for (int i = 0; i < n; i++) {
+        printf("%d ", arr[i]);
+    }
+    printf("\n");
+}
+
+int main() {
+    // 待排序的数组
+    int numbers[] = {64, 34, 25, 12, 22, 11, 90};
+    int size = sizeof(numbers) / sizeof(numbers[0]);
+
+    printf("排序前的数组:");
+    printArray(numbers, size);
+
+    // 调用冒泡排序函数
+    bubbleSort(numbers, size);
+
+    printf("排序后的数组:");
+    printArray(numbers, size);
+
+    // 演示查找最大值和最小值
+    printf("\n=== 查找最大最小值 ===\n");
+    int max = numbers[0];
+    int min = numbers[0];
+    for (int i = 1; i < size; i++) {
+        if (numbers[i] > max) max = numbers[i];
+        if (numbers[i] < min) min = numbers[i];
+    }
+    printf("最大值:%d,最小值:%d\n", max, min);
+
+    return 0;
+}

+ 55 - 0
DeepSeek_API/examples/19_recursion.c

@@ -0,0 +1,55 @@
+/*
+ * 示例19:递归(Recursion)
+ * 功能:学习递归的概念,函数调用自身
+ * 递归必须有终止条件,否则会无限循环
+ */
+
+#include <stdio.h>
+
+// 递归计算阶乘:n! = n * (n-1) * ... * 1
+// 例如:5! = 5 * 4 * 3 * 2 * 1 = 120
+int factorial(int n) {
+    // 终止条件:当 n 为 0 或 1 时,返回 1
+    if (n <= 1) {
+        return 1;
+    }
+    // 递归调用:n! = n * (n-1)!
+    return n * factorial(n - 1);
+}
+
+// 递归计算斐波那契数列
+// 斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21...
+// 每个数是前两个数之和
+int fibonacci(int n) {
+    // 终止条件
+    if (n <= 2) {
+        return 1;
+    }
+    // 递归调用
+    return fibonacci(n - 1) + fibonacci(n - 2);
+}
+
+// 递归计算 1 到 n 的和
+int sumToN(int n) {
+    if (n <= 1) {
+        return 1;
+    }
+    return n + sumToN(n - 1);
+}
+
+int main() {
+    // 计算 5 的阶乘
+    printf("5! = %d\n", factorial(5));
+
+    // 计算 1 到 10 的和
+    printf("1 + 2 + ... + 10 = %d\n", sumToN(10));
+
+    // 打印斐波那契数列的前 10 项
+    printf("\n=== 斐波那契数列前 10 项 ===\n");
+    for (int i = 1; i <= 10; i++) {
+        printf("%d ", fibonacci(i));
+    }
+    printf("\n");
+
+    return 0;
+}

+ 78 - 0
DeepSeek_API/examples/20_comprehensive.c

@@ -0,0 +1,78 @@
+/*
+ * 示例20:综合练习(Comprehensive)
+ * 功能:综合运用前面学到的知识,实现一个简单的学生成绩管理系统
+ * 包含:结构体、数组、函数、循环、条件判断、输入输出
+ */
+
+#include <stdio.h>
+#include <string.h>
+
+// 定义学生结构体
+typedef struct {
+    char name[20];  // 姓名
+    int score;      // 成绩
+} Student;
+
+// 函数:输入学生信息
+void inputStudents(Student students[], int n) {
+    for (int i = 0; i < n; i++) {
+        printf("请输入第 %d 个学生的姓名:", i + 1);
+        scanf("%s", students[i].name);
+        printf("请输入 %s 的成绩:", students[i].name);
+        scanf("%d", &students[i].score);
+    }
+}
+
+// 函数:显示所有学生信息
+void showStudents(Student students[], int n) {
+    printf("\n=== 学生成绩列表 ===\n");
+    printf("序号\t姓名\t成绩\n");
+    for (int i = 0; i < n; i++) {
+        printf("%d\t%s\t%d\n", i + 1, students[i].name, students[i].score);
+    }
+}
+
+// 函数:计算平均分
+float averageScore(Student students[], int n) {
+    int sum = 0;
+    for (int i = 0; i < n; i++) {
+        sum += students[i].score;
+    }
+    return (float)sum / n;
+}
+
+// 函数:找出最高分的学生
+void findTopStudent(Student students[], int n) {
+    int maxIndex = 0;
+    for (int i = 1; i < n; i++) {
+        if (students[i].score > students[maxIndex].score) {
+            maxIndex = i;
+        }
+    }
+    printf("最高分学生:%s,成绩:%d\n",
+           students[maxIndex].name, students[maxIndex].score);
+}
+
+int main() {
+    int num;
+    printf("请输入学生人数:");
+    scanf("%d", &num);
+
+    // 创建学生数组
+    Student students[100];
+
+    // 输入学生信息
+    inputStudents(students, num);
+
+    // 显示学生信息
+    showStudents(students, num);
+
+    // 计算并显示平均分
+    float avg = averageScore(students, num);
+    printf("\n平均分:%.2f\n", avg);
+
+    // 找出最高分学生
+    findTopStudent(students, num);
+
+    return 0;
+}