C语言程序设计----初识C语言与程序设计
对于初次学习C语言程序设计,我们要了解到C语言程序设计的学习包括两个方面: 语法规则的学习和程序设计方法的学习;学习计算机语言和程序设计的目的: 就是要学会用计算机语言编写解决实际问题的程序。
一、C语言发展过程
产生背景 :
- ALGOL 60(1960)→CPL语言(1963)→BCPL(1967)→B语言(1970)→C语言(1972),重写UNIX系统
产生过程 :
- 时间:1972~1973
- 地点:美国贝尔实验室
- 目的:UNIX操作系统
- 设计人:Ken.Thompson和Dennis.M.Ritchie
C标准 :
- 标准C: 1978年 K&R合著《The C Programming Language》
- ANSI C: 1983年 87 ANSI
- C: 1987年 1990年国际标准的ANSI C ,1994年再次修订。
C版本 :
- Microsoft C 或称 MS-C
- Turbo C 或称 TC
二、C语言的特点
C语言的特点主要包括:简洁性、表达式简练实用、丰富的数据类型、具有低级语言的特点、结构化的语言、可移植性强、代码效率高等。
- C语言简洁、紧凑、灵活。C语言的核心内容很少,只有32个关键字,9种控制语句。
- 表达方式简练、实用。C语言有一套强有力的运算符,达44种。
- 具有丰富的数据类型。C语言具有现代语言的各种数据类型,如字符型、整型、实型、数组、指针、结构体和共用体等。
- 具有低级语言的特点,使用地址访问内存,地址运算、数位运算。
- C语言是一种结构化语言,适合于大型程序的模块化设计。C语言提供了编写结构化程序的基本控制语句,例如if~else语句、switch语句、while语句和do~while语句等。
- C语言程序是函数的集合,函数是构成C语言程序的基本单位,每个函数具有独立的功能。
- 各种版本的编译器都提供了预处理命令和预处理程序。
- 可移植性好。程序从一个环境不经改动或稍加改动就可以移植到另一个完全不同的环境中运行。
- 生成的目标代码质量高。由C源程序编译和连接得到的目标代码的运行效率比用汇编语言编写的也不过只低10%~20%,可充分发挥机器的效率。
- C语言语法限制不严,程序设计自由度大。
三、计算机解题过程(分→设→编→运)
计算机的解题过程大概分为四个阶段,分别是分析问题、设计算法、编写程序、运行验证。
- 1 分析问题
详细分析需要解决什么问题,清楚了解问题的需求。已知的原始数据有哪些?使用什么方法或者数学模型?要得到什么结果?分析问题就是明确知道自己要做什么的过程(What to do)。
- 2 设计算法
明确了做什么之后,就是需要考虑怎么做(How to do)。通常将解决问题的方法或者数学模型转换成解决问题的步骤,即设计算法。设计算法是计算机解题过程中一个具有创造性的重要环节,涉及的算法是否合理直接关系到问题能否解决。同时,解决问题的方法可以有多种,所以需要设计出多种算法,通过分析比较找到最优算法。
- 3 编写程序
确定了解决问题的算法后,需要使用一种计算机程序设计语言编写程序。编写程序就是将设计的算法等价映射(转换)为计算机程序,所编写的程序从逻辑上看是算法的一种表现形式。
- 4 运行验证
编写的程序可能会不能满足解决实际问题的需求,所以就需要调试,即在计算机上运行并排除潜在错误。必要时还要使用测试数据对程序进行测试,验证程序的正确性。如果程序测试不充分,则有可能导致潜在错误的存在。除此以外,问题需求也可能随着时间的推移而变化,使程序使用一段时间后还需要进行修改和完善,这个过程被称为维护。
四、算法及其表示
算法是精确定义的一系列规则的集合,它是为解决一个特定的问题所采取的确定的有限步骤。算法由数据、操作和控制结构三要素组成。
算法的操作种类也有很多,最基本的有赋值运算、算术运算、关系运算和逻辑运算;稍复杂的有函数运算、向量运算等;更复杂的有表、栈、队列、树和图的运算。
算法的控制结构给出了算法的框架,决定了各操作的执行次序。但任何复杂的算法都可以用顺序结构、分支结构、循环结构3种控制结构组合而成。
求解问题时,算法必须具有以下特性:
- 有穷性:算法在执行了有限步骤之后结束,并且每一步都可以在有穷的时间内完成。
- 确定性:算法中每种操作必须有确切的含义,即无二义性。同时,无论如何算法只有唯一的一条执行路径,也就是相同的输入要得到相同的结果。
- 可行性:每一步都可以有效的实现
- 输入:有零个或多个输入,即算法的输入需要初始数值
- 输出:有一个或多个输出,输出的是与输入的有某种特定的关系的数据
算法的表示方法:
算法的表示方法包括:自然语言描述、传统流程图、N-S流程图、伪代码、程序设计语言
- 自然语言描述:自然语言可以是中文、英文、其他民族语言或数学表达式等。用自然语言描述算法通俗易懂,其缺点是文字有可能冗长,不太严格,容易产生歧义,表达分支和循环结构不方便等。
- 传统流程图:是用约定的图框和流程线表示运算或操作流程的图示形式。其优点是直观形象、易于理解。美国标准化协会ANSI规定的一些常用流程图符号如下图所示:
- N-S流程图:是一种结构化流程图,适合于表示结构化算法。N-S流程图完全取消了带箭头的流程线,全部算法写在一个矩形框内,框内还可以包含从属于它的框。基本图形符号如下所示:
- 伪代码:伪代码采用了类似程序设计语言的语句表示算法,但是伪代码不是一种程序设计语言,不涉及程序设计的细节。
五、常用算法策略介绍:
常用的算法策略包括枚举法、递推法和递归法
- 枚举法又称为穷举法。该方法通过逐一考察问题的所有可能解,找出问题真正的解。枚举法要求问题的可能解必须是有限的,而且这些可能解是已知的。
- 递推法是从已知的初始条件或问题的最简单情况出发,逐次推出中间结果。在理想状态下,每递推一次,结果逐渐接近问题的最后解。
- 、一个直接或间接调用过程(或函数)自身的算法称为递归算法,一个函数如果调用自身进行计算则称该函数为递归函数。一些问题的算法描述中,递归法往往比非递归法更加简洁易懂。
六、结构化程序设计方法:
结构化程序设计以功能模块和过程设计为主,其要点如下:
结构化程序设计中三种基本结构: 顺序、选择、重复
- 用顺序方式对过程分解,确定各部分的执行顺序。
- 用选择方式对过程分解,确定某个部分的执行条件。
- 用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件。
C语言程序设计----初识C语言与程序设计相关推荐
- C语言入门——初识C语言
C语言入门--初识C语言 一. C语言的起源 二. 选择C语言的原因 (一). 设计特性 (二). 高效性 (三). 可移植性 (四). 强大而灵活 (五). 面向程序员 (六). 缺点 三. C语言 ...
- C语言学习——初识C语言(1)
初识C语言1 一. 初识C语言 1.什么是C语言? 2. 写一个简单的C语言程序 3.main函数 4.数据类型 5.不同数据类型所占内存的大小 5.1不同数据之间的大小转换关系 5.2不同数据类型创 ...
- 【C语言】初识C语言
目录 1.什么是C语言 2.第一个C语言程序 3.数据类型 4.变量,常量 4.1 定义变量方法 4.2 变量的命名 4.3 变量的分类 4.4 变量的使用 4.5 变量的作用域和生命周期 4.5.1 ...
- 【C语言】初识C语言(下篇)
如果这世界上真有奇迹,那只是努力的另一个名字. 大家好,这里是anduin.今天将给大家带来初识C语言的最后一部分,和之前一样点到为止,适当补充,今天的内容是#define 定义常量和宏.指针和结构体 ...
- 【C语言】初识C语言(中篇)
种一棵树,最好的时间是10年前,其次是现在. 大家好,这里是anduin,这次的主题依旧是初识C语言,和上次不同,这次我们主要讲两大块,对于一些知识,我们选择略讲,但是对于一些我觉得重要的知识我会对其 ...
- <C语言>初识C语言(一)
文章目录 初识C语言(一) 什么是C语言 ? 计算机语言的发展 第一个程序 数据类型 进制 换算单位 数据类型长度 变量和常量 变量 变量定义 变量命名 变量分类 变量使用 变量的作用域和生命周期 字 ...
- 【零基础入门C语言】 初识C语言—1
声明:[零基础入门C语言]系列是博主对B站up主:鹏哥C语言所分享教学内容的学习笔记,并且该系列每篇博客都会将博主听课后总结的纸质版笔记附于文末,供大家参考. 初识C语言章节的内容在于初步了解C语言的 ...
- a5 1c语言实现,初识C语言1_qq5fb3b05a5f322的技术博客_51CTO博客
本章重点: 什么是C语言 第一个C语言程序 数据类型 变量.常量 字符串+转义字符+注释 选择语句 循环语句 函数 数组 操作符 常见关键字 define 定义常量和宏 指针 结构体 什么是C语言? ...
- 【c语言】初识c语言-让你对c语言不在感到一无所知
作者:低调 作者宣言:写好每一篇博客 文章目录 前言 一.什么是C语言? 二.第一个C语言程序 三.数据类型 3.1常见的数据类型. 3.2每个类型的大小是多少? 3.3数据类型是以什么方式打印出来的 ...
最新文章
- LeetCode简单题之卡牌分组
- ATS中的命令行工具解读
- PAT - L1-020. 帅到没朋友(裸并查集)
- CVE-2010-3333
- 【dp】noip2000提高组 乘积最大
- python3字符串方法_python3
- 程序自动启动_如何在Gnome Shell上自动启动程序
- 数学学习--最小二乘法案例剖析
- 水晶报表的显示与打印不一至问题
- Http协议--Get和Post区别
- 局部加权线性回归(Locally weighted linear regression)
- 3.1.2 Score Inflation 总分
- 编译原理 实验3《算符优先分析法设计与实现》
- tomato(番茄)固件的简单设置截图
- 什么是主数据,如何做好主数据管理?
- 氨基酸序列碎裂by离子-生物信息学笔记
- 微软宣布任命前MOTO亚太总裁梁念坚为中国区CEO
- 【Failure while executing; `/bin/launchctl bootstrap gui/501 /Users/hml/Library/LaunchAgents/homebre】
- train data 和 model bias 对 Mutilayer Perceptrons 的影响
- 如何将.hwbk批量修改成.jpg 【实测成功】
热门文章
- freemaker_标签
- 全新iMac开发中!外观、屏幕、性能全面升级
- 必应词典桌面版 --- 基于大学生用户群体的软件评测与分析(与有道词典对比版 1功能篇)...
- java基础08 双重循环打印图形
- 实现音乐播放 (音乐app项目-第11步)
- 【无标题】如何去写高质量个人简历模板?哪里能下载免费的简历模板? meimg.com
- MySQL数据库用户安全策略
- 程序的耦合性和内聚性
- java byte 保存_Java -- 保存byte[] 数据
- android 后台播放,实现后台播放 | Android 开发者 | Android Developers