对简单字符串的排序整理(简单的2种方法)

一、用sort对字符串排序

1.sort可以对string排序

我在做题的时候发现我用sort对string排序的语句判错。

我最开始写的代码是

    string s;
    cin>>s;
    int len=s.length();
    sort(s,s+len);

我的天,我现在看见我这么写,我真想给自己一下子。现在因为返乡隔离什么的大脑都已经混乱了,我想我真是封的疯了。

在我查找相关的资料之后,终于大彻大悟,醍醐灌顶。正确代码如下:

    string s;
    cin>>s;
    sort(s.begin(),s.end());

看见正确的之后突然想起来string是一个类啊,和vector,queue什么的都有库函数啊,而且巨好用啊。这样事情就明了了,直接用这个方法对string排序就好了。

2.sort可以对字符数组排序

int main(){
    char ch[1001];
    cin>>ch;
    int len=strlen(ch);
    sort(ch,ch+len);
    cout<<ch;
    return 0;
}

用cin直接按首地址输入字符串,不能读入空格和回车

输入一串字符之后再按回车就直接输出了,应该根本没机会在cin中按回车 。(如果此话有错误,欢迎家银们批评指正)

如果这样输入字符串

这样应该是没有超过100个字符都给算到里面了,如果输入没有超过100个字符,结束输入用ctrl+z结束。

 如果输入超过100个字符,即使在输入的过程中超过了100,但还是可以输入,最后按回车就结束输入了,字符数组里面只取100个字符。

二、类似冒泡排序的方法

这个方法具体有没有名字我不知道,但我刚学的时候总是用这个方法,其实还挺好用。

但是时间复杂度高,为O(n2)。

int main(){
    char ch[1001];
    cin>>ch;
    int len=strlen(ch);
    for(int i=0;i<len-1;++i){
        for(int j=i+1;j<len;++j)
            if(ch[j]<ch[i])
                swap(ch[i],ch[j]);
    }
    cout<<ch;
    return 0;
}

i 从 0 循环到 len-1,j 从 i+1 到最后。

如果在  s[i]  后面有比  s[j]  小的,就把小的放在前面,每一次移动都确定了前面的1个元素的位置,最后就排好序了。属于稳定排序。

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Visual C++ 2005入门经典.pdf(整理并添加所有书签) ,看书的时候更方便. 封面 目录 第1章 使用Visual C++ 2005 编程 1.1 .NET Framework 1.2 CLR 1.3 编写C++应用程序 1.4 学习windows编程 1.4.1 学习c++ 1.4.2 C++标准 1.4.3 控制台应用程序 1.4.4 Windows编程概念 1.5 集成开发环境简介 1.6 使用IDE 1.6.1 工具栏选项 1.6.2 可停靠的工具栏 1.6.3 文档 1.6.4 项目和解决方案 1.6.5 设置Visual C++2005的选项 1.6.6 创建和执行windows应用程序 1.6.7 创建windows Forms应用程序 1.7 小结 第2章 数据、变量和计算 2.1 C++程序结构 2.1.1 程序注释 2.1.2 #include指令——头文件 2.1.3 命名空间和using声明 2.1.4 main()函数 2.1.5 程序语句 2.1.6 空白 2.1.7 语句块 2.1.8 自动生成的控制台程序 2.2 定义变量 2.2.1 命名变量 2.2.2 C++中的关键字 2.2.3 声明变量 2.2.4 变量的初值 2.3 基本数据类型 2.3.1 整型变量 2.3.2 字符数据类型 2.3.3 整型修饰符 2.3.4 布尔类型 2.3.5 浮点类型 2.3.6 ISO/ANSI C++中的基本类型 2.3.7 字面值 2.3.8 定义数据类型的同义词 2.3.9 具有特定值集的变量 2.3.10 指定枚举常量的类型 2.4 基本的输入输出操作 2.4.1 从键盘输入 2.4.2 到命令行的输出 2.4.3 格式化输出 2.4.4 转义序列 2.5 C++中的计算 2.5.1 赋值语句 2.5.2 算术运算 2.5.3 计算余数 2.5.4 修改变量 2.5.5 增量和减量运算符 2.5.6 计算的顺序 2.6 变量类型和类型强制转换 2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句中的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 2.7.3 全局娈量 2.7.4 静态变量 2.8 命名空间 2.8.1 声明命名空间 2.8.2 多个命名空间 2.9 C++/CLI编程 2.9.1 C++/CLI特有的基本数据类型 2.9.2 命令行上的C++/CLI输出 2.9.3 C++/CLI特有的功能——格式化输出 2.9.4 C++/CLI的键盘输入 2.9.5 使用safe cast 2.9.6 C++/CLI枚举 2.10 小结 2.11 练习题 第3章 判断和循环 3.1 比较数据值 3.1.1 if语句 3.1.2 嵌套if语句 3.1.3 扩展的if语句 3.1.4 嵌套的if-else语句 3.1.5 逻辑运算符和表达式 3.1.6 条件运算符 3.1.7 switch语句 3.1.8 无条件转移 3.2 重复执行语句块 3.2.1 循环的概念 3.2.2 for循环的变体 3.2.3 while循环 3.2.4 do-while循环 3.2.5 嵌套的循环 3.3 C++/CLI编程 3.4 小结 3.5 练习 第4章 数组、字符串和指针 4.1 处理多个相同类型的数据值 4.1.1 数组 4.1.2 声明数组 4.1.3 初始化数组 4.1.4 字符数组和字符串处理 4.1.5 多维数组 4.2 间接数据存取 4.2.1 指针的概念 4.2.2 声明指针 4.2.3 使用指针 4.2.4 初始化指针 4.2.5 sizeof运算符 4.2.6 常量指针和指向常量的指针 4.2.7指针和数组 4.3 动态内存分配 4.3.1 堆的别名——自由存储器 4.3.2 new和delete运算符 4.3.3 为数组动态分配内存 4.3.4 多维数组的动态分配 4.4 使用引用 4.4.1 引用的概念 4.4.2 声明并初始化引用 4.5 C++/CLI编程 4.5.1 跟踪句柄 4.5.2 CLR数组 4.5.3 字符串 4.5.4 跟踪引用 4.5.5 内部指针 4.6 小结 4.7 练习 第5章 程序结构(1) 5.1 理解函数 5.1.1 需要函数的原因 5.1.2 函数的结构 5.1.3 使用函数 5.2 给函数传递实参 5.2.1 按值传递机制 5.2.2 给函数传递指针实参 5.2.3 给函数传递数组 5.2.4 给函数传递引用实参 5.2.5 使用const修饰符 5.2.6 main()函数的实参 5.2.7 接受数量不定的函数实参 5.3 从函数返回值 5.3.1 返回指针 5.3.2 返回引用 5.3.3 函数中的静态变量 5.4 递归函数调用 5.5 C++/CLI编程 5.5.1 接受数量可变实参的函数 5.5.2 main()的实参 5.6 小结 5.7 练习 第6章 程序结构(2) 6.1 函数指针 6.1.1 声明函数指针 6.1.2 函数指针作为实参 6.1.3 函数指针的数组 6.2 初始化函数形参 6.3 异常 6.3.1 抛出异常 6.3.2 捕获异常 6.3.3 MFC中的异常处理 6.4 处理内存分配错误 6.5 函数重载 6.5.1 函数重载的概念 6.5.2 何时重载函数 6.6 函数模板 6.7 使用函数的示例 6.7.1 实现计算器 6.7.2 从字符串中删除空格 6.7.3 计算表达式的值 6.7.4 获得项值 6.7.5 分析数 6.7.6 整合程序 6.7.7 扩展程序 6.7.8 提取子字符串 6.7.9 运行修改过的程序 6.8 C++/CLI编程 6.8.1 理解类函数 6.8.2 CLR版本的计算器程序 6.9 小结 6.10 练习 第7章 自定义数据类型 7.1 C++中的结构 7.1.1 结构的概念 7.1.2 定义结构 7.1.3 初始化结构 7.1.4 访问结构的成员 7.1.5 伴随结构的智能帮助 7.1.6 RECT结构 7.1.7 使用指针处理结构 7.2 数据类型、对象、类和实例 7.2.1 类的起源 7.2.2 类的操作 7.2.3 术语 7.3 理解类 7.3.1 定义类 7.3.2 声明类的对象 7.3.3 访问类的数据成员 7.3.4 类的成员函数 7.3.5 成员函数定义的位置 7.3.6 内联函数 7.4 类构造函数 7.4.1 构造函数的概念 7.4.2 默认的构造函数 7 4.3 在类定义中指定默认的形参值 7.4.4 在构造函数中使用初始化列表 7.5 类的私有成员 7.5.1 访问私有类成员 7.5.2 类的友元函数 7.5.3 默认复制构造函数 7.6 this指针 7.7 类的const对象 7.7.1 类的const成员函数 7.7.2 类外部的成员函数定义 7.8 类对象的数组 7.9 类的静态成员 7.9.1 类的静态数据成员 7.9.2 类的静态函数成员 7.10 类对象的指针和引用 7.10.1 类对象的指针 7.10.2 类对象的引用 7.11 C++/CLI编程 7.11.1 定义数值类类型 7.11.2 定义引用类类型 7.11.3 类属性 7.11.4 initonly字段 7.11.5 静态构造函数 7.12 小结 7.13 练习 第8章 深入理解类 8.1 类的析构函数 8.1.1 析构函数的概念 8.1.2 默认的析构函数 8.1.3 析构函数与动态内存分配 8.2 实现复制构造函数 8.3 在变量之间共享内存 8.3.1 定义联台 8.3.2 匿名联合 8.3.3 类和结构中的联合 8.4 运算符重载 8.4.1 实现重载的运算符 8.4.2 实现对运算符的完全支持 8.4.3 重载赋值运算符 8.4.4 重载加法运算符 8.4.5 重载递增和递减运算符 8.5 类模板 8.5.1 定义类模板 8.5.2 根据类模板创建对象 8.5.3 使用有多个形参的类模板 8.6 使用类 8.6.1 类接口的概念 8.6.2 定义问题 8.6.3 实现CBox类 8.6.4 定义CBox类 8.6.5 使用CBox类 8.7 组织程序代码 8.8 C++/CLI编程 8.8.1 在数值类中重载运算符 8.8.2 重载递增和递减运算符 8.8.3 在引用类中重载运算符 8.9 小结 8.1O 练习 第9章 类继承和虚函数 9.1 面向对象编程的基本思想 9.2 类的继承 9.2.1 基类的概念 9.2.2 基类的派生类 9.3 继承机制下的访问控制 9.3.1 派生类中构造函数的操作 9.3.2 声明类的保护成员 9.3.3 继承类成员的访问级别 9.4 派生类中的复制构造函数 9.5 友元类成员 9.5.1 友元类 9.5.2 对类友元关系的限制 9.6 虚函数 9.6.1 虚函数的概念 9.6.2 使用指向类对象的指针 9.6.3 使用引用处理虚函数 9.6.4 纯虚函数 9.6.5 抽象类 9.6.6 间接基类 9.6.7 虚析构函数 9.7 类类型之间的强制转换 9.8 嵌套类 9.9 C++/CLI编程 9.9.1 C++/CLI类的继承 9.9.2 接口类 9.9.3 定义接口类 9.9.4 类和程序集 9.9.5 被指定为new的函数 9.9.6 委托和事件 9.9.7 引用类的析构函数和结束函数 9.9.8 通用类 9.10 小结 9.11 练习 第10章 调试技术 10.1 理解调试 10.1.1 程序故障 10.1.2 常见故障 10.2 基本的调试操作 10.2.1 设置断点 10.2.2 设置跟踪点 10.2.3 启动调试模式 10.2.4 修改变量的值 10.3 添加调试代码 10.3.1 使用断言 10.3.2 添加自己的调试代码 10.4 调试程序 10.4.1 调用堆栈 10.4.2 单步执行到出错位置 10.5 测试扩展的类 10.6 调试动态内存 10.6.1 检查自由存储器的函数 10.6.2 控制自由存储器的调试操作 10.6.3 自由存储器的调试输出 10.7 调试C++/CLI程序 10.8 小结 第11章 Windows编程的概念 11.1 Windows编程基础 11.1.1窗口的元素 11.1.2 Windows程序与操作系统 11.1.3事件驱动型程序 11.1.4 Windows消息 11.1.5 WindowsAPI 11.1.6.Windows数据类型 11.1.7 Windows程序中的符号 11.2 Windows程序的结构 11.2.1 WinMain()函数 11.2.2消息处理函数 11.2.3简单的Windows程序 11.3 Windows程序的组织 11.4 MFC 11.4.1 MFC标记法 11.4.2 MFC程序的组织方式 11.5使用Windows Forms 11.6小结 第12章 使用MFC编写Windows程序 12.1 MFC的文档,视图概念 12.1.1 文档的概念 12.1.2 文档界面 12.1.3 视图的概念 12.1.4 连接文档和视图 12.1.5 应用程序和MFC 12.2 创建MFC应用程序 12.2.1 创建SDI应用程序 12.2.2 MFCApplicationwizard的输出 12.2.3 创建MDI应用程序 12.3 小结 12.4 练习 第13章 处理菜单和工具栏 13.1 与Windows进行通信 13.1.1 了解消息映射 13.1.2 消息类别 13.1.3 处理程序中的消息 13.2 扩充Sketcher程序 13.3 菜单的元素 13.4 为菜单消息添加处理程序 13.4.1 选择处理菜单消息的类 13.4.2 创建菜单消息函数 13.4.3 编写菜单消息函数的代码 13.4.4 添加更新用户界面的消息处理程序 13.5 添加工具栏按钮 13.5.1 编辑工具栏按钮的属性 13.5.2 练习使用工具栏按钮 13.5.3 添加工具提示 13.6 小结 13.7 练习题 第14章 在窗口中绘图 14.1 窗口绘图的基础知识 14.1.1 窗口客户区 14.1.2 Windows图形设备界面 14.2 Visual C++中的绘图机制 14.2.1 应用程序中的视图类 14.2.2 CDC类 14.3 实际绘制图形 14.4 对鼠标进行编程 14.4.1 鼠标发出的消息 14.4.2 鼠标消息处理程序 14.4.3 使用鼠标绘图 14.5 练习使用Sketcher程序 14.5.1 运行这个示例 14.5.2 捕获鼠标消息 14.6 小结 14.7 练习题 第15章 创建文档和改进视图 15.1 什么是集合类 15.1.1 集合的类型 15.1.2 类型安全的集合类 15.1.3 对象集合 15.1.4 类型化指针集合 15.2 使用CList模板类 15.2.1 绘制曲线 15.2.2 定义CCurve类 15.2.3 实现CCurve类 15.2.4 练习使用CCurve类 15.3 创建文档 15.4 改进视图 15.4.1 更新多个视图 15.4.2 滚动视图 15.4.3 使用MM_LOENGLISH映射模式 15.5 删除和移动形状 15.6 实现上下文菜单 15.6.1 关联菜单和类 15.6.2 选择上下文菜单 15.6.3 醒目显示元素 15.6.4 处理菜单消息 15.7 处理被屏蔽的元素 15.8 小结 15.9 练习 第16章 使用对话框和控件 16.1 理解对话框 16.2 理解控件 16.3 创建对话框资源 16.4 对话框的编程 16.4.1 添加对话框类 16.4.2 模态和非模态对话框 16.4.3 显示对话框 16.5 支持对话框控件 16.5.1 初始化控件 16.5.2 处理单选按钮消息 16.6 完成对话框的操作 16.6.1 给文档类添加存储线宽的成员 16.6.2 给元素添加线宽 16.6.3 在视图中创建元素 16.6.4 练习使用对话框 16.7 使用微调按钮控件 16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话框类 16.7.4 显示微调按钮 16.8 使用比例系数 16.8.1 可缩放的映射模式 16.8.2 设置文档的大小 16.8.3 设置映射模式 16.8.4 同时实现滚动与缩放 16.9 使用状态栏 16.10 使用列表框 16.10.1 删除比例对话框 16.1O.2 创建列表框控件 16.11 使用编辑框控件 16.11.1 创建编辑框资源 16.11.2 创建对话框类 16.11.3 添加Text菜单项 16.11.4 定义文本元素 16.11.5 实现CText类 16.11.6 创建文本元素 16.12 小结 16.13 练习 第17章 存储和打印文档 17.1 了解串行化 17.2 串行化文档 17.2.1 文档类定义中的串行化 17.2.2 丈档类实现中的串行化 17.2.3 基于CObject的类的功能 17.2.4 串行化的工作方式 17.2.5 如何实现类的串行化 17.3 应用串行化 17.3.1 记录文档修改 17.3.2 串行化文档 17.3.3 串行化元素类 17.4 练习串行化 17.5 移动文本 17.6 打印文档 17.7 实现多页打印 17.7.1 获取文档的总尺寸 17.7.2 存储打印数据 17.7.3 准备打印 17.7.4 打印后的清除 17.7.5 准备设备上下文 17.7.6 打印文档 17.7.7 获得文档的打印输出 17.8 小结 17.9 练习题 第18章 编写自己的DLL 18.1 了解DLL 18.1.1 DLL的工作方式 18.1.2 DLL的内容 18.1.3 DLL变体 18.2 决定放入DLL的内容 18.3 编写DLL 18.3.1 编写和使用扩展DLL 18.3.2 从DLL中导出变量和函数 18.3.3 将符号导入程序 18.3.4 实现符号从DLL的导出 18.4 小结 18.5 练习题 第19章 连接到数据源 19.1 数据库基础知识 19.2 SQL 19.2.1 使用SQL检索数据 19.2.2 使用SQL连接表 19.2.3 对记录进行排序 19.3 MFC中的数据库支持 19.4 创建数据库应用程序 19.4.1 注册ODBC数据库 19.4.2 生成MFC ODBC程序 19.4.3 了解程序结构 19.4.4 示例练习 19.5 对记录集进行排序 19.6 使用另一个记录集对象 19.6.1 添加记录集类 19.6.2 添加记录集的视图类 19.6.3 定制记录集 19.6.4 访问多个表视图 19.6.5 查看产品的订单 19.7 查看客户的详细情况 19.7.1 添加客户记录集 19.7.2 创建客户对话框资源 19.7.3 创建客户视图类 19.7.4 添加过滤器 19.7.5 实现过滤器参数 19.7.6 链接订单对话框和客户对话框 19.7.7 练习使用数据库查看器 19.8 小结 19.9 练习题 第20章 更新数据源 20.1 更新操作 20.1.1 CRecordset更新操作 20.1.2 事务 20.2 简单的更新示例 20.3 管理更新过程 20.4 向表中添加行 20.4.1 订单录入过程 20.4.2 创建资源 20.4.3 创建记录集 20.4.4 创建记录集视图 20.4.5 给对话框资源添加控件 20.4.6 实现对话框切换 20.4.7 创建订单ID 20.4.8 存储订单数据 20.4.9 为订单选择产品 20.4.10 添加新订单 20.5 小结 20.6 练习 第21章 使用Windows Forms的应用程序 21.1 理解Wqndows Forms 21.2 理解Windows Forms应用程序 21.2.1 修改窗体的属性 21.2.2 如何启动应用程序 21.3 定制应用程序GUI 21.3.1 给窗体添加控件 21.3.2 添加选项卡控件 21.3.3 使用CroupBox控件 21.3.4 使用Button控件 21.3.5 使用WebBrowser控件 21.3.6 Winning应用程序的操作 21.3.7 添加上下文菜单 21.3.8 创建事件处理程序 21.3.9 处理Limits菜单的事件 21.3.10 创建对话框 21.3.11 使用对话框 21.3.12 添加第二个对话框 21.3.13 实现Help|About菜单项 21.3.14 处理按钮单击事件 21.3.15 响应上下文莱单 21.4 小结 21.5 练习 第22章 在Windows Forms应用程序中访问数据源 22.1 使用数据源 22.2 访问并显示数据 22.3 使用DataGridView控件 22.4 在无约束模式中使用DataGridView控件 22.5 定制DataGridView控件 22.5.1 定制题头单元格 22.5.2 定制非题头单元格 22.5.3 动态设置单元格样式 22.6 使用约束模式 22.7 BindingSource组件 22.8 使用BindingNavigator控件 22.9 绑定到单独的控件 22.10 使用多个表 22.11 小结 22.12 练习 附录A C++关键字 A1 ISO/ANSI C++关键宇 A2 C++/CLI关键字 附录B ASCII码
在进行项目开发时,经常需要很多工具代码。比如字符串处理,图形水印,数据库的操作。这些都是一个完整项目不可缺少的部分。CorePlus 为您提供了所有这方面的功能。 如果您还在: 为了一个常用的功能而不断在网上搜索现成的代码 因为没有时间整理代码,而经常写重复的代码 通过txt来管理常用代码片段,每次使用都得复制一次 CorePlus 将会是很好的选择。 丰富并且可扩展的功能 功能丰富。全库有 300 多个类,提供大量常用功能。 文档丰富,中文全注释。 代码效率和代码质量有保证。 统一风格,使用简单 确实,很多功能在网上都有同类开源类库。但每个项目都有各自的风格,且目前中文开源项目不多,学会这些类库是很不容易的。而 CorePlus 在风格上非常接近系统原生对象,所有函数和参数都匹配中文注释,尽可能减少学习成本。 目前 CorePlus 主要提供了以下方面的辅助工具: 调试输出和日志功能(内置包括向 屏幕、窗口、文件 输出日志的工具) 排序/搜索/加密/遍历 等常用算法 最完整的数据库操作辅助类(DbHelper), 除了系统内置的数据库外,还同时支持 MySql, SQLite 字符串/日期/数字/正则表达式/文件/数据检查/类型转换 等常见操作 缩略图/验证码/水印/马赛克 等图片操作 FTP/上传/下载/邮件/登陆网站 等网络功能 HTML/JSON 解析 ZIP 压缩/解压 常用集合,弥补系统自身的集合的不足。 对于 C/S 结构,获取 CPU/IME 输入法/Memory 内存 等信息, 简化对 图标/键盘钩子/Win32 API 的操作 对于 B/S 结构,获取 访客/服务器 等信息, 简化对 B/S 常见的操作 函数性能测试等辅助工具 更多功能插件... 注:该版本适用于 .net 2 到 .net 3.5
含本书PDF教程 共399个实例: 第1章 窗体与界面设计   1.1 菜单应用实例   cc实例001 在系统菜单中添加菜单项   cc实例002 带图标的程序菜单   cc实例003 根据表中数据动态生成菜单   cc实例004 浮动的菜单   1.2 弹出菜单应用实例   cc实例005 在控件上单击右键弹出菜单   cc实例006 个性化的弹出菜单   cc实例007 任务栏托盘弹出菜单   1.3 工具栏应用实例   cc实例008 带背景的工具栏   cc实例009 带图标的工具栏   cc实例010 带下拉菜单的工具栏   cc实例011 可调整按钮位置的工具栏   cc实例012 浮动工具栏   cc实例013 根据表中数据动态生成工具栏   cc实例014 具有提示功能的工具栏   1.4 状态栏应用实例   cc实例015 带进度条的状态栏   cc实例016 动画效果的状态栏   cc实例017 滚动字幕的状态栏   1.5 导航界面应用实例   cc实例018 Outlook导航界面   cc实例019 树状导航界面   cc实例020 按钮导航界面   cc实例021 类QQ导航菜单   1.6 界面窗体应用实例   cc实例022 背景为渐变色的程序界面   cc实例023 椭圆形的程序界面   cc实例024 自绘窗体界面   cc实例025 类似WindowscXP的程序界面   cc实例026 窗体融合技术   cc实例027 限制对话框最大时的窗口大小   1.7 多媒体宣传光盘应用实例   cc实例028 多媒体宣传光盘主界面   cc实例029 自动运行的多媒体宣传光盘   1.8 多媒体触摸屏程序应用实例   cc实例030 采购中心多媒体触摸屏程序   cc实例031 为触摸屏程序添加虚拟键盘   1.9 窗体位置应用实例   cc实例032 不可移动的窗体   cc实例033 始终在最上面的窗体   cc实例034 动画显示窗体   cc实例035 以时钟显示界面窗体   1.10 窗体标题栏应用实例   cc实例036 闪烁的窗体标题栏   cc实例037 拖动没有标题栏的窗体   cc实例038 禁用标题栏上的最大化.c最小化或关闭按钮   1.11 窗体形状及应用   cc实例039 半透明窗体   cc实例040 创建字型窗体   cc实例041 百叶窗窗体   cc实例042 类似Office助手  第2章 控件应用   2.1 按钮控件典型实例   cc实例043 AVI动画按钮   cc实例044 GIF动画按钮   cc实例045 图文按钮   cc实例046 不规则按钮   2.2 EditBox控件典型实例   cc实例047 为EditBox设置新的系统菜单   cc实例048 为EditBox控件添加列表选择框   cc实例049 多彩边框的编辑框   cc实例050 改变编辑框文本颜色   2.3 ListBox控件典型实例   cc实例051 利用ListBox控件实现标签式数据选择   cc实例052 在ListBox控件间实现数据交换   cc实例053 列表项的提示条   2.4 ComboBox控件典型实例   cc实例054 将数据表中的字段添加到ComboBox控件   cc实例055 带查询功能的ComboBox控件   cc实例056 自动调整组合框的宽度   cc实例057 颜色组合框   cc实例058 多列显示的组合框   2.5 ListControl控件典型实例   cc实例059 将数据库中的数据表添加到ListControl控件   cc实例060 利用ListControl控件浏览数据   cc实例061 利用ListControl控件制作导航界面   cc实例062 在列表视图中拖动视图项   cc实例063 利用列标题对列表视图进行数据排序   cc实例064 具有文本录入功能的ListControl控件   2.6 TreeControl控件典型实例   cc实例065 多级数据库树状结构数据显示   cc实例066 可动态修改节点的树状结构   cc实例067 带复选功能的树状结构   cc实例068 显示磁盘目录   cc实例069 树型提示框   2.7 RichEdit控件典型实例   cc实例070 利用RichEdit显示Word文档   cc实例071 利用RichEdit控件实现文字定位与标识   cc实例072 利用RichEdit控件显示图文数据   2.8 图形类控件典型实例   cc实例073 图文数据录入   cc实例074 带有滚动条的图形控件   2.9 滚动条控件典型实例   cc实例075 自定义滚动条控件   2.10 控件数组典型实例   cc实例076 向窗体中动态添加控件  cc 实例077 公交线路模拟  第3章 图形技术   3.1 绘制图形   cc实例078 绘制正弦曲线   cc实例079 绘制艺术图案   cc实例080 画图程序   cc实例081 绘制立体模型   cc实例082 利用IFS算法绘制自然景物   3.2 图像预览   cc实例083 图片自动预览程序   cc实例084 图片批量浏览   cc实例085 浏览大幅BMP图片   cc实例086 放大和缩小图片   cc实例087 可随鼠标移动的图形   cc实例088 随图像大小变换的图像浏览器   3.3 图片效果   cc实例089 图片马赛克效果   cc实例090 图片百叶窗效果   cc实例091 电影胶片特效   cc实例092 翻转图片效果   3.4 图片颜色转换   cc实例093 图像的锐化处理   cc实例094 图片反色处理   cc实例095 图像的灰度化转换   cc实例096 显示JPG图片   3.5 图形转换与缩放   cc实例097 将位图转换为JPG   cc实例098 将位图转为GIF图标   cc实例099 图片的平滑缩放   3.6 图像的剪切与合成   cc实例100 图像的剪切   cc实例101 图像的合成  3.7 图像识别   cc实例102 获取鼠标任意位置的颜色值   cc实例103 提取图片中的对象   cc实例104 手写数字识别   3.8 图像字体  cc 实例105 旋转的文字   cc实例106 当前系统字体列表   cc实例107 空心文字   cc实例108 如何在图片上平滑移动文字   3.9 图像管理   cc实例109 管理计算机内图片文件的程序   cc实例110 提取并保存应用程序图标   3.10 图片动画   cc实例111 利用图片制作屏幕保护程序   cc实例112 图片动画   3.11 简单游戏设计   cc实例113 拼图游戏   cc实例114 网络五子棋   cc实例115 彩票抽奖机   3.12 OpenGL程序设计   cc实例116 制作OpenGL动画   cc实例117 利用OpenGL绘制立体模型   cc实例118 利用OpenGL绘制NURBS曲线  第4章 多媒体技术   4.1 动画   cc实例119 利用Image控件制作小动画   cc实例120 透明的Flash动画   cc实例121 播放GIF动画   cc实例122 播放AVI动画   cc实例123 播放VCD   4.2 制作与播放音频   cc实例124 可以选择播放曲目的CD播放器   cc实例125 MP3播放器   cc实例126 声音录制与播放   cc实例127 制作RealOne播放器   4.3 多媒体控制   cc实例128 部队早起军号程序   cc实例129 利用PC喇叭播放声音   cc实例130 c控制左右声道   4.4 屏幕保护相关程序   cc实例131 电子相册屏幕保护程序   cc实例132 产品宣传屏幕保护程序   4.5 DirectShow程序设计   cc实例133 音频捕捉   cc实例134 视频捕捉  第5章 文件系统   5.1 文件的基本操作   cc实例135 创建和删除文件夹   cc实例136 把文件删除到回收站中   cc实例137 清空回收站   5.2 查找文件   cc实例138 搜索文件   cc实例139 检查文件是否存在   cc实例140 提取指定文件夹目录到INI文件   5.3 与文件目录相关的命令操作   cc实例141 删除文件目录   cc实例142 重命名文件目录   5.4 文件.c文件夹的复制和移动   cc实例143 批量移动文件   cc实例144 网络文件夹复制   cc实例145 文件复制过程中显示进度条   5.5 文件修改   cc实例146 更改文件夹图标   cc实例147 批量删除指定类型的文件   cc实例148 批量重命名文件   cc实例149 修改文件属性   cc实例150 修改文件及目录的名称   5.6 文件的读取与保存   cc实例151 顺序读取文件   cc实例152 制作日志文件   5.7 文件管理   cc实例153 分类整理磁盘文件   cc实例154 计算机磁盘空间报警程序   cc实例155 批量改变指定文件的属性   5.8 加密与解密   cc实例156 文件的加密与解密   cc实例157 文件夹加密   5.9 其他文件管理知识   cc实例158 文件分割器   cc实例159 帮助文件   cc实例160 用WinRar压缩和解压文件   cc实例161 判断文件是否被改动   第6章 操作系统与Windows相关程序   6.1 启动相关设置   cc实例162 进入WindowscXP前发出警告   cc实例163 实现关机.c重启计算机   cc实例164 将程序设置成为开机自动执行的程序   6.2 磁盘相关设置   cc实例165 判断驱动器属性   cc实例166 获取磁盘空间信息   cc实例167 获取磁盘序列号   cc实例168 取消磁盘共享   cc实例169 格式化磁盘   6.3 桌面相关设置   cc实例170 隐藏.c显示“开始”按钮   cc实例171 隐藏.c显示桌面文件   cc实例172 隐藏.c显示Windows任务栏   6.4 系统相关设置   cc实例173 获得Windows和System的路径   cc实例174 控制光驱的弹开与关闭   cc实例175 启动控制面板   cc实例176 为程序添加快捷键   6.5 系统监控   cc实例177 检测系统启动模式   cc实例178 内存使用状态   cc实例179 监视剪贴板内容   cc实例180 利用钩子技术实现键盘监控   6.6 程序相关设置   cc实例181 用列表显示系统正在运行的程序   cc实例182 为程序添加快捷方式   cc实例183 设置其他程序中编辑框内的文本   cc实例184 执行一个外部程序直到其结束   cc实例185 调用具有参数的可执行程序   6.7 线程同步   cc实例186 利用事件对象实现线程同步   cc实例187 利用互斥对象实现线程同步   cc实例188 利用临界区实现线程同步   cc实例189 用信号量实现线程同步   cc实例190 多线程cc实例   6.8 鼠标.c键盘相关设置   cc实例191 动画鼠标   cc实例192 限制鼠标移动区域  第7章 注册表   7.1 显示与隐藏  cc 实例193 隐藏.c显示“我的电脑”.c“回收站”.c“网上邻居”   cc实例194 隐藏.c显示驱动器   7.2 IE设置   cc实例195 修改IE标题栏内容   cc实例196 隐藏IE浏览器的右键关联菜单   cc实例197 设置IE的默认主页   cc实例198 清空上网历史记录   7.3 文件控制   cc实例199 如何建立文件关联   cc实例200 控制光驱的自动运行功能   7.4 游戏设置   cc实例201 设置“蜘蛛纸牌”游戏   cc实例202 修改“扫雷”游戏的设置   7.5 应用软件设置   cc实例203 设置Wordc2000文档及图片的保存路径   cc实例204 更改Photoshop安装时的登记信息  第8章 数据库技术   8.1 连接数据库   cc实例205 使用ODBCcDSN连接SQLcServer数据库   cc实例206 用ADO动态连接数据库   cc实例207c连接Oracle数据库   8.2 添加数据   cc实例208 利用INSERT语句批量插入数据   cc实例209 利用SELECTcINTO生成临时表   8.3 更新数据   cc实例210 批量修改数据   cc实例211 将指定字段数据为空的记录添上数据   8.4 删除数据   cc实例212 删除单条数据   cc实例213 删除数据库中无用处的记录   8.5 视图   cc实例214 动态创建视图   cc实例215 通过视图更改数据   cc实例216 删除视图   8.6 触发器   cc实例217 创建触发器   cc实例218 在程序中使用触发器   8.7 存储过程   cc实例219 创建存储过程   cc实例220 删除存储过程   cc实例221 在程序中使用存储过程   cc实例222 调用具有输出参数的存储过程   8.8 数据库结构的读取与修改   cc实例223 读取Access数据库结构   cc实例224 读取SQLcServer数据库结构   8.9 图片.c多媒体数据录入技术   cc实例225 对Access数据库进行录入和提取图片   cc实例226 对SQLServer数据库进行录入和提取多媒体文件   cc实例227 对SQLcServer数据库进行录入和存储Word文档   8.10 数据备份恢复   cc实例228 Access数据库备份与还原   cc实例229 SQLcServer数据库备份与恢复   cc实例230 定时数据备份   8.11 其他数据库技术    实例231 断开SQLcServer数据库与其他应用程序的连接   cc实例232 在VisualcC++中执行事务   cc实例233 在程序中执行SQL脚本   cc实例234 利用SQL语句执行外围命令  第9章 SQL查询相关技术   9.1 通用查询   cc实例235 SQL语句的应用方法   cc实例236 SQL语句的模糊查询   cc实例237 利用查询语句复制表结构   9.2 查询控件   cc实例238 查询指定控件内字符串   cc实例239 查询日期控件内数据   cc实例240 控件作为字段.c操作符和内容进行查询   cc实例241 巧妙获取年龄   cc实例242 格式化金额   cc实例243 如何随机显示记录   9.3 查询前若干名数据   cc实例244 查询前10名数据   cc实例245 取出数据统计结果前3名数据   9.4 周期.c日期查询   cc实例246 查询指定日期的数据   cc实例247 查询指定时间段的数据   cc实例248 按月查询数据   9.5 大小比较.c逻辑查询.c重复记录查询   cc实例249 查询数据大于指定条件的数据   cc实例250 NOT与谓词进行组合条件的查询   cc实例251 查询时不显示重复记录   9.6 排序.c分组统计   cc实例252 对数据进行降序查询   cc实例253 对数据进行多条件排序   cc实例254 按仓库分组统计图书库存(多列)   cc实例255 多表分组统计   9.7 HAVING语句应用   cc实例256 利用HAVING语句过滤分组数据   cc实例257 将HAVING语句应用在多表查询中   9.8 聚集函数   cc实例258 利用聚集函数SUM对销售额进行汇总   cc实例259 利用聚集函数AVG求某班学生的平均年龄   cc实例260 利用聚集函数COUNT求日销售额大于某值的商品数   9.9 多表查询   cc实例261 利用FROM子句进行多表查询   cc实例262 合并多个结果集   9.10 嵌套查询   cc实例263 简单嵌套查询   cc实例264 复杂嵌套查询   9.11 子查询   cc实例265 用子查询作派生的表   cc实例266 把子查询作为表达式   cc实例267 在UPDATE语句中应用子查询   9.12 联合语句UNION   cc实例268 使用联合查询   cc实例269 多表联合查询   cc实例270 对联合查询后的结果进行排序   9.13 内连接查询   cc实例271 简单内连接查询   cc实例272 复杂内连接查询   cc实例273 使用内连接选择一个表与另一个表中行相关的所有行   9.14 外连接查询   cc实例274 LEFTcOUTERcJOIN查询   cc实例275 RIGHTcOUTERcJOIN查询   cc实例276 使用外连接进行多表联合查询   9.15 利用IN进行查询   cc实例277 使用IN引入子查询限定查询范围   cc实例278 用IN查询表中的记录信息   9.16 交叉表查询   cc实例279 利用TRANSFORM分析数据   cc实例280 利用TRANSFORM动态分析数据   cc实例281 静态交叉表(SQLcServerc2000)   cc实例282 动态交叉表(SQLcServerc2000)   9.17 函数查询   cc实例283 在查询语句中使用字符串函数   cc实例284 在查询中使用日期函数   cc实例285 在查询时为表中的空字段添加默认信息  第10章 打印与报表技术   10.1 基础报表打印   cc实例286 基于文档/视图结构的打印   cc实例287 基于对话框结构的打印程序   10.2 打印窗体   cc实例288 打印对话框及其控件中的数据   cc实例289 打印对话框文本   10.3 打印图片   cc实例290 打印图片   cc实例291 打印简历   10.4 利用报表生成器设计报表   cc实例292 简单报表   cc实例293 分组统计报表   cc实例294 主明细报表   10.5 打印邮寄单   cc实例295 打印汇款单   cc实例296 打印信封标签   10.6 打印证件   cc实例297 批量打印工作证   cc实例298 批量打印证书   10.7 打印单据   cc实例299 库存盘点单打印   cc实例300 连续纸销售单打印   cc实例301 发票打印   10.8 打印条形码和标签   cc实例302 批量打印条形码   cc实例303 打印连续号码的标签   10.9 其他格式报表打印   cc实例304 将DataGrid表格中的查询结果输出到Excel中   cc实例305 利用Word打印   cc实例306 利用Excel打印   10.10 控制打印   cc实例307 打印超长字符串自动换行   cc实例308 批量打印文档   cc实例309 实现横向打印   cc实例310 设置打印纸大小   cc实例311 获取打印纸的左边距和上边距   10.11 打印预览   cc实例312 修改文档/视图结构默认的打印预栏工具栏   cc实例313 自定义具有滚动条的打印预览窗口  第11章 图表技术   11.1 简单图表   cc实例314 利用图表分析产品价格行情   cc实例315 对图表数据进行打印   11.2 柱形图表   cc实例316 将汇总数据利用图表分析   cc实例317 对比数据分析   11.3 饼形图表   cc实例318 饼形图分析公司男女比例   cc实例319 商品日销售额图表分析  第12章 硬件相关开发技术   12.1 串口控制   cc实例320 通过串口传递数据   cc实例321 通过串口控制对方计算机关闭   12.2 加密狗   cc实例322 将密码写入加密狗   cc实例323 使用加密狗进行身份验证   12.3 IC卡的应用   cc实例324 向IC卡中写入数据   cc实例325 读取IC卡中的数据   cc实例326 利用IC卡制作考勤程序   12.4 监控   cc实例327 利用简易摄像头编写监控程序   cc实例328 编写监控录像程序   cc实例329 定时监控程序   cc实例330 医疗行业数字视频监控系统   cc实例331 远程视频监控系统   12.5 扫描.c条形码.cPOS控制   cc实例332 利用条形码扫描器销售商品   cc实例333 设计钱箱控制程序   cc实例334 设计扫描仪控制程序   cc实例335 设计发票机控制程序   12.6 语音卡控制   cc实例336 语音卡电话呼叫系统   cc实例337 语音卡实现来电显示   cc实例338 利用语音卡实现电话录音   cc实例339 利用语音卡实现点歌祝福   12.7 手机程序的开发   cc实例340 利用短信猫发送短信   cc实例341 利用短信远程关闭计算机   12.8 其他程序   cc实例342 利用神龙卡制作练歌房程序  第13章 网络开发技术   13.1 获取计算机信息   cc实例343 获取计算机名称和工作组  cc 实例344 通过计算机名获取IP地址   cc实例345 获取本机MAC地址   cc实例346 获得系统打开的端口和状态   13.2 局域网控制与管理   cc实例347 获取局域网中的计算机名称和IP地址   cc实例348 远程控制局域网中的计算机   13.3 局域网资源管理   cc实例349 局域网屏幕监控   cc实例350 提取局域网信息到数据库   13.4 网上资源共享   cc实例351 获得网上共享资源   cc实例352 映射网络驱动器   cc实例353 定时网络共享控制   13.5 网络连接与通信   cc实例354 编程实现ping操作   cc实例355 网络语音电话   cc实例356 网络流量监控   cc实例357 取得Modem的状态   cc实例358 检测TCP/IP是否安装   cc实例359 实现进程间的通信   cc实例360 利用内存映射实现进程间的通信   13.6 局域网应用   cc实例361 局域网聊天程序   cc实例362 网上调查   13.7 其他   cc实例363 获得拨号网络的列表   cc实例364 获取计算机上串口的数量   cc实例365 检测系统中安装的协议   cc实例366 域名解析  第14章 Web编程   14.1 上网控制   cc实例367 定时登录Internet   cc实例368 根据网络连接控制IE启动   14.2 文件上传与下载   cc实例369 FTP文件上传程序   cc实例370 利用VisualcC++实现软件下载   cc实例371 HTTP服务器多线程文件下载   14.3 邮件管理   cc实例372 邮件接收程序  cc 实例373 发送电子邮件附件   14.4 上网监控   cc实例374 监控上网过程   cc实例375 网络监听工具   14.5 浏览器应用   cc实例376 制作自己的网络浏览软件   cc实例377 XML数据库文档的浏览   14.6 网上信息提取   cc实例378 定时提取网页源码   cc实例379 网上天气预报   cc实例380 网页链接提取器   14.7 其他   cc实例381 利用TAPI实现网络拨号  第15章 加密.c安全与软件注册   15.1 数据加密与解密   cc实例382 数据加密技术   cc实例383 文本文件的加密与解密  cc 实例384 利用图片加密文件   15.2 Access数据库安全   cc实例385 编程修复Access数据库   cc实例386 对数据库中的表锁定和解锁   cc实例387 改变Accessc2000数据库头文件来加密数据库   15.3 软件注册与加密   cc实例388 利用INI文件对软件进行注册   cc实例389 利用注册表设计软件注册程序   cc实例390 利用网卡序列号设计软件注册程序   cc实例391 根据CPU序列号和磁盘序列号设计软件注册程序   15.4 计算机安全   cc实例392 设置计算机的安全等级  第16章 实用工具   16.1 数据库工具   cc实例393 自动配置ODBC的程序   cc实例394 制作SQLcServer提取器   cc实例395 自动附加SQLcServer数据库   16.2 个人工具   cc实例396 个人通讯录   cc实例397 电子名片盒   16.3 单位应用   cc实例398 局域网投票管理   cc实例399 加班网上管理 
1.简单形式: var q = ( from c in db.Customers select c.Phone ).Concat( from c in db.Customers select c.Fax ).Concat( from e in db.Employees select e.HomePhone ); 语句描述:返回所有消费者和雇员的电话和传真。 2.复合形式: var q = ( from c in db.Customers select new { Name = c.CompanyName, c.Phone } ).Concat( from e in db.Employees select new { Name = e.FirstName + " " + e.LastName, Phone = e.HomePhone } ); 语句描述:返回所有消费者和雇员的姓名和电话。 Union(合并) 说明:连接不同的集合,自动过滤相同项;延迟。即是将两个集合进行合并操作,过滤相同的项。 var q = ( from c in db.Customers select c.Country ).Union( from e in db.Employees select e.Country ); 语句描述:查询顾客和职员所在的国家。 Intersect(相交) 说明:取相交项;延迟。即是获取不同集合的相同项(交集)。即先遍历第一个集合,找出所有唯一的元素,然后遍历第二个集合,并将每个元素与前面找出的元素作对比,返回所有在两个集合内都出现的元素。 var q = ( from c in db.Customers select c.Country ).Intersect( from e in db.Employees select e.Country ); 语句描述:查询顾客和职员同在的国家。 Except(与非) 说明:排除相交项;延迟。即是从某集合中删除与另一个集合中相同的项。先遍历第一个集合,找出所有唯一的元素,然后再遍历第二个集合,返回第二个集合中所有未出现在前面所得元素集合中的元素。 var q = ( from c in db.Customers select c.Country ).Except( from e in db.Employees select e.Country ); 语句描述:查询顾客和职员不同的国家。 Top/Bottom操作 适用场景:适量的取出自己想要的数据,不是全部取出,这样性能有所加强。 Take 说明:获取集合的前n个元素;延迟。即只返回限定数量的结果集。 var q = ( from e in db.Employees orderby e.HireDate select e) .Take(5); 语句描述:选择所雇用的前5个雇员。 Skip 说明:跳过集合的前n个元素;延迟。即我们跳过给定的数目返回后面的结果集。 var q = ( from p in db.Products orderby p.UnitPrice descending select p) .Skip(10); 语句描述:选择10最贵产品之外的所有产品。 TakeWhile 说明:直到某一条件成立就停止获取;延迟。即用其条件去依次判断源序列中的元素,返回符合判断条件的元素,该判断操作将在返回false或源序列的末尾结束 。 SkipWhile 说明:直到某一条件成立就停止跳过;延迟。即用其条件去判断源序列中的元素并且跳过第一个符合判断条件的元素,一旦判断返回false,接下来将不再进行判断并返回剩下的所有元素。 Paging(分页)操作 适用场景:结合Skip和Take就可实现对数据分页操作。 1.索引 var q = ( from c in db.Customers orderby c.ContactName select c) .Skip(50) .Take(10); 语句描述:使用Skip和Take运算符进行分页,跳过前50条记录,然后返回接下来10条记录,因此提供显示Products表第6页的数据。 2.按唯一键排序 var q = ( from p in db.Products where p.ProductID > 50 orderby p.ProductID select p) .Take(10); 语句描述:使用Where子句和Take运算符进行分页,首先筛选得到仅50 (第5页最后一个ProductID)以上的ProductID,然后按ProductID排序,最后取前10个结果,因此提供Products表第6页的数据。请注意,此方法仅适用于按唯一键排序的情况。 SqlMethods操作 在LINQ to SQL语句中,为我们提供了SqlMethods操作,进一步为我们提供了方便,例如Like方法用于自定义通配表达式,Equals用于相比较是否相等。 Like 自定义的通配表达式。%表示零长度或任意长度的字符串;_表示一个字符;[]表示在某范围区间的一个字符;[^]表示不在某范围区间的一个字符。比如查询消费者ID以“C”开头的消费者。 var q = from c in db.Customers where SqlMethods.Like(c.CustomerID, "C%") select c; 比如查询消费者ID没有“AXOXT”形式的消费者: var q = from c in db.Customers where !SqlMethods.Like(c.CustomerID, "A_O_T") select c; DateDiffDay 说明:在两个变量之间比较。分别有:DateDiffDay、DateDiffHour、DateDiffMillisecond、DateDiffMinute、DateDiffMonth、DateDiffSecond、DateDiffYear var q = from o in db.Orders where SqlMethods .DateDiffDay(o.OrderDate, o.ShippedDate) < 10 select o; 语句描述:查询在创建订单后的 10 天内已发货的所有订单。 已编译查询操作(Compiled Query) 说明:在之前我们没有好的方法对写出的SQL语句进行编辑重新查询,现在我们可以这样做,看下面一个例子: //1.创建compiled query NorthwindDataContext db = new NorthwindDataContext(); var fn = CompiledQuery.Compile( (NorthwindDataContext db2, string city) => from c in db2.Customers where c.City == city select c); //2.查询城市为London的消费者,用LonCusts集合表示,这时可以用数据控件绑定 var LonCusts = fn(db, "London"); //3.查询城市为Seattle的消费者 var SeaCusts = fn(db, "Seattle"); 语句描述:这个例子创建一个已编译查询,然后使用它检索输入城市的客户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_房似锦_

好心人哇!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值