华东师范大学数学科学学院 目录页 School of Mathematical Sciences,ECNU Contents 基础知识 C语言基础 数据类型 控制结构 2 控制结构 数组与字符串 3 数组与字符串 C语言 函数 知识点 4 函数 指针 结构与联合 5 指针 文件操作 6 文件操作 其他 零基础学C语言(第4版),康莉等,2019 C Primer Plus,6th,S.Prata,2013(中文版,2016) C语言教程https:/www.runoob.com/cprogramming/c-tutorial..html Q C语言参考手册https:/zh.cppreference..com/w/c http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 1 C 语言基础 控制结构 函数 数组与字符串 文件操作 2 4 6 3 零基础学 C 语言(第 4 版),康莉等,2019 C Primer Plus, 6th, S. Prata, 2013 (中文版, 2016) C语言教程 https://www.runoob.com/cprogramming/c-tutorial.html C 语言参考手册 https://zh.cppreference.com/w/c 目录页 Contents 华东师范大学 数学科学学院 School of Mathematical Sciences, ECNU 5 指针
华东师范大学数学科学学院 School of Mathematical Sciences,ECNU 陳 三 周 國紀 目录 1 C语言基础 Contents C语言基础 C语言介绍 2 控制结构 数据类型 3 数组与字符串 ■ 变量、常量与基本运算 4 函数 基本输出输入 5 指针 6 文件操作 http://math.ecnu.edu.cn/~jypan
华东师范大学 数学科学学院 School of Mathematical Sciences, ECNU http://math.ecnu.edu.cn/~jypan 1 C 语言基础 C 语言介绍 数据类型 变量、常量与基本运算 基本输出输入 目录 Contents 1 C 语言基础 控制结构 数组与字符串 函数 文件操作 2 3 4 6 5 指针
程序设计语言的发展 机器语言 由0、1构成的指令码组成;是计算 机唯一能识别并直接执行的语言 执行效率高 但编程复杂 汇编语言 用助记符号描述的指令系统如ADD; 符号化的机器语言 面向过程 高级语言 面向对象 4 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 程序设计语言的发展 4 机器语言 汇编语言 高级语言 面向过程 面向对象 执行效率高 但编程复杂 由 0、1 构成的指令码组成;是计算 机唯一能识别并直接执行的语言 用助记符号描述的指令系统如 ADD; 符号化的机器语言
高级语言典型代表 FORTRAN:Formula Translation 1956年,由BM的JW.Backus(哥伦比亚大学数学学士、硕士,图 灵奖获得者)带领开发,高级语言诞生的标志,科学计算主流语言。 -C 1972年,由贝尔实验室的D.M.Ritchie(哈佛大学数学博士,图灵奖 获得者,UNX之父)开发,是一种通用的、过程式的编程语言,高效、 灵活、功能丰富,主流的软件开发和科学计算语言。 -C++ 1983年,由贝尔实验室的B.Stroustrup在C语言的基础上开发,引入 并扩充了面向对象的概念功能。 数学,特别是数学思维是计算机科学的一个支柱。 B.Stroustrup http://math.ecnu.edu.cn/-jypan
http://math.ecnu.edu.cn/~jypan 高级语言典型代表 5 - FORTRAN:Formula Translation 1956年,由 IBM 的 J.W. Backus(哥伦比亚大学数学学士、硕士,图 灵奖获得者)带领开发,高级语言诞生的标志,科学计算主流语言。 - C 1972年,由贝尔实验室的 D.M. Ritchie(哈佛大学数学博士,图灵奖 获得者,UNIX 之父)开发,是一种通用的、过程式的编程语言,高效、 灵活、功能丰富,主流的软件开发和科学计算语言。 - C++ 1983年,由贝尔实验室的 B. Stroustrup 在 C 语言的基础上开发,引入 并扩充了面向对象的概念功能。 数学,特别是数学思维是计算机科学的一个支柱。 —— B. Stroustrup
C语言发展 Dennis Ritchie 1941-2011 C语言的历史与发展 Bell Labs ing LanUN -1972,贝尔实验室D.Ritchie开发 -l978,B.Kernighan和D.Ritchie《C程序设计语言》→K&R标准 -1989,ANSI C标准形成C89,1990年IS0发布C90 -1999,IS0正式发布新的标准C99,引入一些新特性,如内联函数 -2011,C11标准发布,添加许多新功能,同时修改C99库的某些 部分为可选,提高与C++的兼容性 -2017,发布C17/C18,是当前标准,仅进行技术更正 ANSI-American National Standards Institute/美国国家标准协会 ISO-International Organization for Standardization/国际标准化组织 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan C 语言发展 6 C 语言的历史与发展 -1972,贝尔实验室 D. Ritchie 开发 -1978,B. Kernighan 和 D. Ritchie《C 程序设计语言》 K&R 标准 -1989,ANSI C 标准形成 C89,1990 年 ISO 发布 C90 -1999,ISO 正式发布新的标准 C99,引入一些新特性,如内联函数 -2011,C11 标准发布,添加许多新功能,同时修改 C99 库的某些 部分为可选,提高与 C++ 的兼容性 -2017,发布 C17/C18,是当前标准,仅进行技术更正 ANSI - American National Standards Institute / 美国国家标准协会 ISO - International Organization for Standardization / 国际标准化组织
一个简单的C程序 C sum.c /Example:calculate the e sum of a and b #include 预处理:载入头文件 注解语句 main() 主函数 int a,b,sumj a=10; 打印语句 b=24; sum a+b; printf("sum=%d\n",sum); C源程序结构: ● 一个C源程序由一个或多个源文件组成 return 0; ● 每个源文件可由一个或多个函数组成 ● 一个源程序有且只能有一个main函数 ●程序执行从main开始,在main中结束 源程序中可以有预处理命令,通常应放 在源文件或源程序的最前面 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 一个简单的 C 程序 7 /* Example: calculate the sum of a and b */ #include main() { int a, b, sum; a=10; b=24; sum = a+b; printf("sum=%d\n", sum); return 0; } 主函数 打印语句 预处理:载入头文件 注解语句 C 源程序结构: 一个 C 源程序由一个或多个源文件组成 每个源文件可由一个或多个函数组成 一个源程序有且只能有一个 main 函数 程序执行从 main 开始,在 main 中结束 源程序中可以有预处理命令,通常应放 在源文件或源程序的最前面 C_sum.c
C程序书写规范 书写规范 ·每个说明和语句都必须以分号“;”结尾 但预处理命令,函数头和花括号“)”之后不能加分号(结构除外) ·标识符、关键字之间要有间隔,可以是空格或间隔符 ·区分大小写 书写规范的程序: ·注释:/**/为注释符,不能嵌套 {、}要对齐 ·常用锯齿形书写格式 一行写一个语句 一行可以写多个语句,一个语句可以分几行 一个语句写一行 使用TAB缩进 有适当的空行 有足够的注释 ↑注:所有标点符号必须在英文状态下输入(中文字符串除外) 8 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan C 程序书写规范 8 每个说明和语句都必须以分号“; ”结尾 但预处理命令,函数头和花括号“}”之后不能加分号(结构除外) 标识符、关键字之间要有间隔,可以是空格或间隔符 区分大小写 注释:/* */ 为注释符, 不能嵌套 常用锯齿形书写格式 一行可以写多个语句,一个语句可以分几行 书写规范的程序: ► {、} 要对齐 ► 一行写一个语句 ► 一个语句写一行 ► 使用 TAB 缩进 ► 有适当的空行 ► 有足够的注释 书写规范 † 注:所有标点符号必须在英文状态下输入(中文字符串除外)
C语言编译器 什么是编译器 ● 编译器就是将“高级语言”翻译为“机器语言”的程序 一个现代编译器的主要工作流程: 源代码 编译 链接 目标代码 可执行程序 常见的C/C+编译器 ●Visual C/C++微软,Windows平台,集成在Visual Studio中 ●GNUC/C++ 开源免费,Linux/Unix平台首选,非常优秀 ●Intel C/C++ Intel编译器,对自家硬件支持很好 ●Clang C/C+ LLVM项目中的优秀编译器 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan C 语言编译器 9 什么是编译器 编译器就是将“高级语言”翻译为“机器语言”的程序 源代码 目标代码 可执行程序 编译 链接 一个现代编译器的主要工作流程: 常见的 C/C++ 编译器 Visual C/C++ 微软,Windows 平台,集成在 Visual Studio 中 GNU C/C++ 开源免费,Linux/Unix 平台首选,非常优秀 Intel C/C++ Intel 编译器,对自家硬件支持很好 Clang C/C++ LLVM 项目中的优秀编译器
IDE (Integrated Development Environment) IDE(集成开发环境) ·用于程序开发的应用程序/软件,一般包括代码编辑器、编译器、 调试器和图形用户界面等 ●常见的C/C++集成开发环境 -Visual Studio:微软,大而全,有社区版(免费),支持clang -Qt Creator:跨平台开发环境,为应用程序开发提供一站式解决方案 -Code:Blocks:开源,全功能跨平台集成开发环境,免费 -DevC+:小巧免费,功能简单,适合初学者, 已停止开发(gcc-4.9.2,C1l,OpenMP4.0),Embarcadero Dev-C+ -VS Code+MinGW:微软免费IDE+GCC(微软有配置方法指导) 10 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan IDE 10 (Integrated Development Environment) IDE (集成开发环境) 用于程序开发的应用程序/软件,一般包括代码 编辑器、编译器、 调试器和图形用户界面等 常见的 C/C++ 集成开发环境 - Visual Studio :微软,大而全,有社区版(免费),支持 clang - Qt Creator :跨平台开发环境,为应用程序开发提供一站式解决方案 - Code::Blocks :开源,全功能跨平台集成开发环境,免费 - Dev C++ :小巧免费,功能简单,适合初学者, 已停止开发(gcc-4.9.2, C11, OpenMP 4.0), Embarcadero Dev-C++ - VS Code + MinGW:微软免费 IDE + GCC(微软有配置方法指导)
字符集 C语言字符集 ·字母(大写和小写,共52个) ●数字(0到9共10个) ·空白符(空格符、制表符、换行符) 。标点和特殊字符 % & [] 守注:这里的标点符号都是指在英文状态下的标点。 http://math.ecnu.edu.cn/~jypan 11
http://math.ecnu.edu.cn/~jypan 字符集 11 C 语言字符集 字母(大写和小写,共 52 个) 数字(0 到 9 共 10 个) 空白符(空格符、制表符、换行符) 标点和特殊字符 ! # % ^ & * () [] {} _ + = - ~ / \ ' " ; . , † 注:这里的标点符号都是指在英文状态下的标点