C01 C语言基础
目录
- C语言简史及特点
- C语言开发环境
- C语言程序结构
- C语言基本输入输出函数
- 编译
- 软件类型
C语言简要及特点
什么是计算机语言
- 计算机语言是用于人与计算机之间通讯的语言。
- 计算机遵照接收到的计算机语言有步骤的工作,如何安排计算机的工作步骤就是程序设计。
- 程序设计语言是一组用来定义计算机程序的语法规则。他是一种被标准化的交流符号,用来向计算机发出指令。
计算机语言的发展的历史
- 计算机语言出现之前,20世纪40年代第一台计算机问世,特点:昂贵,手动控制。
- 1941年,德国工程师---楚泽,设计出计算机语言。康拉德·楚泽于1910年6月22日出生在柏林,是一位德国工程师。他提出了计算机程序控制的基础概念,于1941年Zuse首次设计完成了使用继电器的程序控制计算机。于1995年12月19日逝世。
- 计算机语言的发展阶段:
- 机器语言:面向计算机的语言,CPU指令系统,由0、1构成。执行效率最高。
- 汇编语言:在及其语言的基础上发展起来的编程语言。直接操作计算机硬件。助记符号描述的指令系统。助记符号描述的一般是微小的操作,所以汇编语言编写的程序冗长复杂。但是汇编语言生成的可执行文件占用空间小,执行效率高。对于编程人员,需要对计算机CPU的硬件要非常熟悉。
- 高级语言:C,C++,Java,PHP,C#等等。
- 程序员最中意的编程语言排行榜(GitHub):
C语言发展历史
- 1960年ALGOL 60,剑桥大学,语言设计严谨,是很多语言的参考样本。
- 1963年CPL,剑桥大学,在ALGOL基础上修改,接近计算机硬件,目的是要研究一种可以开发系统软件的编程语言。
- 1967年BCPL,Martin Richards,简化了CPL,剑桥大学。
- 1970年B,Ken Thompson,贝尔实验室,比BCPL更接近硬件。
- 1972年C,Dennis.M.Ritchie,贝尔实验室。
- 1976年,Ken Thompson,Dennis.M.Ritchie一起用C语言重写了Unix操作系统(1969年开始两人就开始使用B和C开始开发Unix操作系统),轰动全世界。
问题
- Java、机器语言、汇编语言、C语言。哪些属于高级语言?
- 汇编语言、机器语言、高级语言。运行效率从高到低如何排序?
- 机器语言是一种完全面向机器的语言,由0和1组成。可以由计算机直接识别和运行?
- 编写汇编程序的程序员需要对CPU的内部结构非常清楚,例如包括几个寄存器,几个通用寄存器等等。需要详细了解微型计算机原理?
C语言开发环境
C语言版本
- 1978年Dennis.M.Ritchie和Brain.W.Kernighan联合写了一本书:《The C Programming Language》。非官方C语言标准。
- 1983 年, 美国国家标准协会(ANSI)委任一个委员会 X3J11 对 C 语言进行标准化。
- C89,1989年ANSI推出。
- C90,1990年ISO采纳ANSI标准,正式国际化。
- C99,1999年ISO推出。
- C11,2011年12月ISO推出。
C语言编译器
- 编译器概念:高级语言编译成低级语言,例如转换成汇编语言代码或者机器码。
- 支持ANSI C的编译器有:
- GCC(Unix系统)
- Microsoft Visual C++(Windows系统)
- ARM RealView(ARM单片机)
C语言IDE
- Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup安装介绍
Dev-C++使用MingW64/TDM-GCC编译器,遵循C++ 11标准,同时兼容C++98标准。开发环境包括多页面窗口、工程编辑器以及调试器等,在工程编辑器中集合了编辑器、编译器、连接程序和执行程序,提供高亮度语法显示的,以减少编辑错误,还有完善的调试功能,适合初学者与编程高手的不同需求,是学习C或C++的首选开发工具!多国语言版中包含简繁体中文语言界面及技巧提示,还有英语、俄语、法语、德语、意大 利语等二十多个国家和地区语言提供选择。该软件采用 Delphi 开发。
- 微软VC系列开发工具
纯粹c语言开发学习使用绿色vc6.0工具。
vs2008、vs2010、vs2012等版本时候C++开发。
微软工具中提供了F5运行,Ctrl+F5运行方式。ctrl+F5运行后可以保持窗口打开。
C语言程序结构
不带参数的main函数
#include <stdio.h> //文件包含命令,stdio.h为头文件 //主函数,整个项目只有一,为程序入口点 int main() { //函数体:大括号包围起来 printf("hello c");//输出语句 return 0; }
带参数的main函数(Unix系统中默认格式)
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { printf("hello c"); return 0; }
C语言基本输入输出函数
printf()函数
作用:向控制台cmd窗口输出内容
语法格式:printf(格式控制字符串,参数列表)
其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:
- “%d”表示按十进制整型输出;
- “%ld”表示按十进制长整型输出;
- “%c”表示按字符型输出等。
示例:
#include <stdio.h> int main(){ int age=21; printf("c语言软件工程师\n"); printf("我今年%d岁\n",age); return 0; }
输出结果:
格式字符串
在Turbo C中格式字符串的一般形式为:
[标志][输出最小宽度][.精度][长度]类型
其中方括号[]中的项为可选项。
各项的意义介绍如下。
1.类型
类型字符用以表示输出数据的类型,其格式符和意义如下表所示:
格式字符 |
意义 |
d |
以十进制形式输出带符号整数(正数不输出符号) |
o |
以八进制形式输出无符号整数(不输出前缀0) |
x,X |
以十六进制形式输出无符号整数(不输出前缀Ox) |
u |
以十进制形式输出无符号整数 |
f |
以小数形式输出单、双精度实数 |
e,E |
以指数形式输出单、双精度实数 |
g,G |
以%f或%e中较短的输出宽度输出单、双精度实数 |
c |
输出单个字符 |
s |
输出字符串 |
2.标志
标志字符为 -、+、# 和空格四种,其意义下表所示:
标志 |
意义 |
- |
结果左对齐,右边填空格 |
+ |
输出符号(正号或负号) |
空格 |
输出值为正时冠以空格,为负时冠以负号 |
# |
对c、s、d、u类无影响; |
3.输出最小宽度
用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
4.精度
精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
5.长度
长度格式符为h、l两种,h表示按短整型量输出,l表示按长整型量输出。
转义字符
转义字符 |
意义 |
ASCII 码值(十进制) |
\a |
响铃(BEL) |
007 |
\b |
退格(BS) ,将当前位置移到前一列 |
008 |
\f |
换页(FF),将当前位置移到下页开头 |
012 |
\n |
换行(LF) ,将当前位置移到下一行开头 |
010 |
\r |
回车(CR) ,将当前位置移到本行开头 |
013 |
\t |
水平制表(HT) (跳到下一个TAB位置) |
009 |
\v |
垂直制表(VT) |
011 |
上机练习
练习1:输出自我介绍
在控制台输出以下内容:
上机练习2:学员信息管理系统菜单制作
scanf()函数
作用:从控制台获得输入内容
语法格式:scanf(格式控制字符串,地址列表)
示例:
或者:
输出结果:
上机练习
练习1:从控制台接收两个数字,计算这两个数字的积
练习2:修改学员管理系统菜单,实现以下效果
编译
编译概念
计算机无法直接执行C语言或者其他高级语言。
编译定义:把用某一种程序设计语言编写的源程序翻译成等价的另一种语言程序(目标程序)的过程。
编译器
定义:执行编译过程的程序
常见的乙语言:机器语言、汇编语言或者某种高级语言的中间语言。
通常编译过程就是将高级语言编程成低级语言。
编译过程
各种语言都有相应的编译器
编译程序相关程序
解释程序、汇编程序、连接程序、装入程序、预处理器、编辑器。
相关程序相辅相成。
编译过程
- 词法分析:从左到右扫描源程序,识别出每个单词。
- 语法分析:在词法分析的基础上,根据语言的语法规则,将单词符号串分解成各类语法短语,确定整个输入串是否构成语法上正确的程序。
- 语义分析与中间代码生成:对上一阶段识别出的各类语法范畴分析含义,生成中间代码。
- 代码优化:对已经产生的中间代码进行加工变换,使生成的目标代码更为高效。
- 目标代码生成:优化后最终生成目标代码。
C语言编译过程
- 编译预处理:读取源程序,对其中伪代码和特殊符号处理。例如把头文件进行替代,包含到C文件中。
- 编译优化程序:对预处理文件进行词法分析和词法分析,将其翻译成等价的中间代码或者汇编代码。
- 汇编程序:将汇编语言代码翻译成目标机器指令。
- 链接程序:生成的目标代码还需要库文件等支持,所以需要进行链接。
VC6.0中编译C语言
VC6.0工具中,编译完成C语言后,还涉及到构建和运行。
构建(Build):经过编译后的程序,通过Build(链接程序)生成操作系统可执行的程序。如果直接执行Build,则会先自动执行编译,然后完成Build。
软件类型
软件层次
裸机、硬件:BIOS程序等,对硬件进行协调和控制的软件。
操作系统:协调应用软件和底层硬件的软件。
应用软件:用户使用的功能性软件。
软件分类
从用户角度,分为:系统软件、应用软件等。
应用软件按照技术特点分为:业务管理软件,科学计算软件,人工智能软件,手机APP等。
应用软件从部署结构分:单机软件、分布式软件。其中分布式软件又可分为(C/S结构软件,B/S结构软件)。
C01 C语言基础的更多相关文章
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)
索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)
索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库 ...
- C#语言基础
第一部分 了解C# C#是微软公司在2000年7月发布的一种全新且简单.安全.面向对象的程序设计语言,是专门为.NET的应用而开发的.体现了当今最新的程序设计技术的功能和精华..NET框架为C#提供了 ...
- C语言基础回顾
第一章 C语言基础 1. C语言编译过程 预处理:宏替换.条件编译.头文件包含.特殊符号 编译.优化:翻译并优化成等价的中间代码表示或汇编代码 汇编:生成目标文件,及与源程序等效的目标的机器语言代码 ...
- 黑马程序员_ C语言基础(二)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 概览 今天基础知识分为以下几点内容(注意:循环.条件语句在此不再赘述): 1.Hello W ...
- C#语言基础— 输入与输出
C#语言基础— 输入与输出 1.1函数的四要素:名称.输入.输出.加工 1.2主函数:输出语句.输入语句: Static viod Main(string[] stgs)//下划线部分可以自己指定 { ...
- 【GoLang】GO语言系列--002.GO语言基础
002.GO语言基础 1 参考资料 1.1 http://www.cnblogs.com/vimsk/archive/2012/11/03/2736179.html 1.2 https://githu ...
- R语言基础:数组&列表&向量&矩阵&因子&数据框
R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
随机推荐
- 检测到"_ITERATOR_DEBUG_LEVEL"的不匹配项
error: vtkCommon.lib(vtkSmartPointerBase.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不 ...
- ComDom在使用函数CompileAssemblyFromFile时无法找到文件的错误
public virtual CompilerResults CompileAssemblyFromFile( CompilerParameters options, params string[] ...
- jzoj5991. 【北大2019冬令营模拟2019.1.6】Juice
题面 题解 好迷-- //minamoto #include<bits/stdc++.h> #define R register #define ll long long #define ...
- nil 与 release
nil就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系:而release才是真正通知内存释放这个对象. 如果没有release就直接nil,那么虽然不会出错,却等于自己制造内存泄漏了,因为 ...
- 从MySQL高可用引出对高可用架构设计的一些思考
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- hdu 2108 Shape of HDU(判定是不是凸多边形)
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...
- python 基础(十四) 正则表达式
正则表达式 概念: 正则匹配就是一个模糊的匹配 只要符合我的匹配规则 就会认为是正确的数据(精确的匹配) 1.[] #代表原子表把想要匹配的内容写入原子表中 匹配包含的任意一位字符 [a] ...
- HTML超链接的使用
基本语法 <a href="" target="打开方式" name="页面锚点名称">链接文字或图片</a> 属性 ...
- axios 在vue中使用
下载组件: npm install axios --save npm install qs --save //处理对象防止产生跨域问题 引入: 新建axios文件夹,文件下新建index.js文件 i ...
- shell脚本由基础变量及特殊变量($@、$*、$#等)到实战。
一.shell脚本建立: shell脚本通常是在编辑器(如vi/vim)中编写,也可以在命令行中直接执行: 1.脚本开头: 规范的脚本第一行需要指出有哪个程序(解释器)来执行脚本中的内容,在L ...