广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言零基础入门(1)
  • 226
分享到

C语言零基础入门(1)

2024-04-02 19:04:59 226人浏览 八月长安
摘要

目录1. C语言简介1.1 C语言发展史1.2 C语言的特点1.3算法及其表示1.4常用算法介绍总结1. C语言简介 1.1 C语言发展史 C语言是一种广泛使用的面向过程的计算机程序

1. C语言简介

1.1 C语言发展史

C语言是一种广泛使用的面向过程的计算机程序设计语言,既适合于系统程序设计,又适合于应用程序设计。C语言的发展历程大致如图1-1所示:

图1-1 C语言的发展历程

1.2 C语言的特点

C语言是一种通用的程序设计语言,语言本身简洁、灵活、表达能力强,被广泛用于系统软件和应用软件的开发,并且具有良好的可移植性。

C语言的特点可概括如下:

(1)简洁、紧凑、灵活。C语言的核心内容很少,只有32个关键字,9种控制语句;程序书写格式自由,压缩了一切不必要的成分。

(2)表达方式简练、实用。C语言有一套强有力的运算符,达44种,可以构造出多种形式的表达式,用一个表达式就可以实现其他语言可能需要多条语句才能实现的功能。

(3)数据类型丰富。数据类型越多,数据的表达能力就越强。C语言具有多种数据类型,如字符型、整型、实型、数组、指针、结构体和共用体等,可以实现诸如链表、栈、队列、树等各种复杂的数据结构。其中的指针类型使得参数的传递简单并且迅速,同时节省内存空间。

(4)具有低级语言的特点。C语言具有与汇编语言相近的功能和描述方法,如地址运算和二进制数位运算等,还可以对硬件端口等资源进行直接操作,充分使用计算机的资源。C语言既具有高级语言便于学习和掌握的特点,又具有机器语言或汇编语言对硬件的操作能力。因此,C语言既可以作为系统描述语言,又可以作为通用的程序设计语言。

(5)C语言是一种结构化语言,适合于大型程序的模块化设计。C语言提供了编写结构化程序的基本控制语句,如if-else语句、switch语句、while语句和do-while语句等。C语言是函数的集合,函数是构成C语言程序的基本单位,每个函数具有独立的功能,函数之间通过参数传递数据。程序员可以编写自己的函数。同时,不同操作系统的编译器都为程序员提供了大量的标准库函数,如输入/输出函数、数学函数和字符串处理函数等。灵活地使用标准库函数可以简化程序设计,提高编写程序效率。

(6)各种版本的编译器都提供了预处理命令和预处理程序。预处理扩展了C语言的功能,提高了程序的可移植性,为大型程序的调试提供了方便。

(7)可移植性好。程序从一个环境不经改动或稍加改动就可以移植到另一个完全不同的环境中运行。这是因为标准库函数和预处理程序将可能出现的与机器有关的因素与源程序分割开来,使得针对不同的计算机硬件环境,可以重新定义有关的内容。

(8)生成的目标代码质量高。由C源程序编译和链接得到的目标代码的运行效率比用汇编语言编写的也不过只低10%~20%,可充分发挥机器的效率。

(9)C语言语法限制不严,程序设计自由度大。C语言程序在运行时不做诸如数组下标越界和变量类型兼容性等检查,而是由编程者自己保证程序的正确性。C语言几乎允许所有的数据类型的转换,字符型和整型可以自由混合使用,所有类型均可作逻辑型,可自己定义新的类型,还可以把某类型强制转换为指定的类型。实际上,这使编程者有了更大的自主性,能编写出灵活、优质的程序,同时也给初学者增加了一定的难度。所以,只有在熟练掌握C语言程序设计之后,才能体会到其灵活性。

C语言也存在以下缺点:

(1)程序的错误更隐蔽。C语言的灵活性使得用它编写程序时更容易出错,而且C的编译器不检查这样的错误。与汇编语言类似,需要程序运行时才能发现这些逻辑错误。C语言还会有一些隐患,如将比较的 “==” 写成赋值 “=” ,虽然语法上没错,但这样的逻辑错误往往不易发现,想要找出错误往往十分费时。

(2)C语言程序有时会难以理解。C语言语法成分相对简单,是一种小型语言。但是,其数据类型多,运算符丰富且结合性多样,使得对其理解有一定的难度。

(3)C语言程序有时会难以修改。考虑到程序规模的大型化或者巨型化,现在编程语言通常会提供 “类” 和 “包” 之类的语言特性,这样的特性可以将程序分解成更加易于管理的模块。然而C语言缺少这样的特性,维护大型程序显得比较困难。

1.3算法及其表示

C语言解题时,在程序中有两方面的描述,即数据描述和处理步骤(算法)描述,后者处理前者的数据。

算法具有以下特性:

  • 有穷性:算法在执行了有限步骤后结束,并且每一步都可以在有穷的时间内完成。      
  • 确定性:算法中每种操作必须有确切的含义,即无二义性。同时,无论如何算法只有唯一的一条执行路径,即相同的输入只能得出相同的输出。      
  • 可行性:算法中描述的操作都可以通过已经实现的基本操作执行有限次数来实现。      
  • 输入:有零个或多个输入,即算法需要的必要信息。      
  • 输出:有一个或多个输出,输出的是与输入有某些特定关系的信息。没有输出的算法是无意义的。

算法的表示:

1.自然语言描述;    

2.传统流程图;    

3.N-S流程图;    

4.伪代码。

【例如】求两个正整数m和n的最大公约数(即同时能够整除m和n的最大正整数)。

1. 自然语言描述

欧几里得阐述了求两个数的最大公约数的过程——欧几里得算法

第一步:以n除m,并令r为所得余数(显然n>r\geqslant0)。

第二步:若r=0,算法结束,n即为m和n的最大公约数。

第三步:置m\leftarrown,n\leftarrowr,返回第一步。

2. 传统流程图

图1-2 求最大公约数的传统流程图

3. N-S流程图

图1-3 求最大公约数的N-S流程图

4. 伪代码

算法开始
输入m,n;
do{
    r←以n除m的余数;
    m←n;
    n←r;
}while(r≠0);
输出m;
算法结束

1.4常用算法介绍

1.枚举法

枚举法又称为穷举法。该方法通过逐一考察问题的所有可能解,找出问题真正的解。枚举法要求问题的可能解必须是有限的,而且这些可能解是已知的。

【例】给定一个正整数,确定它的整数立方根是否存在,若存在则找出这个立方根。

算法开始
输入一个正整数给n;
x←0;
while(x≤n 且 x*x*x≠n){
    x←x+1;
}
if(x≤n)
    找到n的整数立方根,输出x的值;
else
    输出n的整数立方根不存在信息;
算法结束

2.递推法

递推法是从已知的初始条件出发,逐次推出中间结果。在理想状态下,每递推一次,结果逐渐接近问题的最后解。递推法在数值算法中又称为迭代法。迭代法常用于求近似解的问题,根据对前一步结果的误差的不同处理方法,迭代法又有逼近迭代和试探迭代等不同方法。数值计算要注意解的稳定性问题,即在迭代中每一步的解越来越接近真正的解,否则迭代不会成功。

【例】计算一个正整数n的阶乘。

算法开始
输入一个正整数给n;
t←1;
i←1;
while(i≤n){
    t←t*i;
    i←i+1;
}
输出结果t
算法结束

3.递归法

一个直接或间接调用过程(或函数)自身的算法称为递归算法,一个函数如果调用自身进行计算则称该函数为递归函数。一些问题的算法描述中,递归法往往比非递归法更加简洁易懂。

【例】计算一个正整数N的阶乘。

阶乘函数f的递归定义为:
f(1)=1                (1!=1,N=1 时)
f(N)=N*f(N-1)         (N!=N*(N-1)!,如果N>1)

除了上面介绍的枚举法、递推法和递归法外,还有回溯法、贪婪法、分治法、动态规划法等

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!  

--结束END--

本文标题: C语言零基础入门(1)

本文链接: https://www.lsjlt.com/news/142246.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言零基础入门(1)
    目录1. C语言简介1.1 C语言发展史1.2 C语言的特点1.3算法及其表示1.4常用算法介绍总结1. C语言简介 1.1 C语言发展史 C语言是一种广泛使用的面向过程的计算机程序...
    99+
    2022-11-13
  • C语言零基础入门(2)
    目录1. 数组1.1 一维数组1.1.1 一维数组的定义1.1.2 一维数组的初始化1.1.3 一维数组的引用1.2 二维数组及多维数组1.2.1 二维数组的定义1.2.2 二维数组...
    99+
    2022-11-13
  • Python 入门基础1 --语言介绍
    本节目录: 一、编程语言介绍 二、python解释器介绍 三、安装python解释器 四.运行python程序的两种方式 五、变量 六、后期补充内容 一、编程语言介绍   1.机器语言:     直接用二进制编...
    99+
    2023-01-30
    入门 语言 基础
  • perl语言十分钟入门【零基础可入】
    Perl是一种高级编程语言,适用于处理文本和执行系统管理任务。它具有简洁的语法和强大的字符串处理能力,被广泛用于编写脚本、Web开发...
    99+
    2023-10-08
    perl语言
  • C#语言入门基础介绍
    目录一、.NET 体系结构二、Hello world三、类型和变量四、程序结构前言: C#(读作“See Sharp”)是一种新式编程语言,不仅面向对象,还类型安全。 开发人员利用 ...
    99+
    2022-11-12
  • C语言文件操作零基础新手入门保姆级教程
    目录一、前言二、文件操作基础知识①什么是文件②数据文件类型③数据如何存储④如何读取二进制文件⑤什么是文件名⑥文件缓冲区⑦文件指针三、文件操作函数①fopen 与 fclos...
    99+
    2022-11-12
  • 【JavaWeb】HTML零基础入门
    ✨哈喽,进来的小伙伴们,你们好耶!✨ 🛰️🛰️系列专栏:【JavaWeb】 ✈️✈️本篇内容:HTML基础语法详解,附带综合案例。 🚀🚀代码托管平台github:Ja...
    99+
    2023-10-18
    html java 前端
  • Spring零基础入门IOC
    目录1.HelloSpring2.IOC创建对象方式2.1.通过无参构造方法来创建2.2.通过有参构造方法来创建1.HelloSpring 导入Jar包 <dependen...
    99+
    2022-11-13
    Spring IOC容器 Spring IOC
  • C语言入门之基础知识详解
    目录一、思维导图二、环境搭建三、编码规范四、基本数据类型五、分支循环5.1 分支5.2 循环六、break与continue6.1 无限循环一、思维导图 内容不限于此思维导图 二、...
    99+
    2022-11-12
  • C语言入门基础的示例分析
    这篇文章给大家分享的是有关C语言入门基础的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。先上思维导图。如图所示,现在还是初识C语言的第一部分,本次只介绍了C语言本身特点,数据类型,常量变量,字符串转义字符...
    99+
    2023-06-20
  • python入门之语言基础
    目录1、注释2、代码缩进3、保留字4、标识符5、变量6、基础数据类型7、数据类型转换总结1、注释 注释是指在程序代码中添加的标注性的文字 单行注释:使用 # 注释内容 多行注释:在...
    99+
    2022-11-12
  • c语言 指针零基础讲解
    1.指针是什么(可能有点难理解) 指针的是啥? 指针实际上就是地址,地址就是系统给定的编号,编号就是一个个内存单元。 在某种情况来说指针=地址=编号=内存单元。 指针就是地址,顾名思...
    99+
    2022-11-13
  • C语言入门篇--sizeof与strlen基础理论
    1.sizeof (1)若求字符串占据 空间 的大小,包括字符串结尾处默认的'\0'。 (2)若所求不是字符串的大小,求的是数组、类型等的大小,不用考虑'\0',因为不是字符串,在结...
    99+
    2022-11-12
  • Java零基础入门数组
    目录认识数组数组的初始化默认初始化静态初始化动态初始化数组有关的问题数组的遍历求最值问题查询子元素Arrays工具类二维数组二维数组初始方式二维数组的遍历认识数组 数组的定义 数组是...
    99+
    2022-11-13
  • Vueexpress鉴权零基础入门
    目录token图示一点通express鉴权下载加密/解密包加密基本使用(生成token)传递Token查看token验证token讲在前面的话:一个成熟的全栈工程师开发的前后端项目鉴...
    99+
    2023-02-15
    Vue express鉴权 Vue express
  • SQL 零基础入门教程
    目录一、了解 SQL二、检索数据三、排序检索数据四、过滤数据五、高级数据过滤六、用通配符进行过滤七、创建计算字段八、使用函数处理数据九、汇总数据十、分组数据十一、使用子查询十二、联结表十三、创建高级联结十四、组合查询十五、插入数据十六、更...
    99+
    2014-09-15
    SQL 零基础入门教程
  • Swaggo零基础入门教程
    目录配置流程注意区分下载swaggo初始化快速上手gin-swagger简单测试详细配置配置流程 注意区分 go-swagger != swaggo 二者功能差不多,都是生成接口文档...
    99+
    2023-01-28
    Swaggo入门 Golang Swaggo入门
  • 零基础C#编写上位机如何入门
    C#是一种由微软开发的面向对象的编程语言,它广泛应用于Windows操作系统和.NET框架中。上位机是一种用于控制和监控下位机的计算机,它可以接收和处理来自下位机的数据,并通过图形界面等方式向用户展示这些数据。在C#中编写上位机程序可以帮助...
    99+
    2023-10-27
    上位机
  • HTML入门零基础教程(四)
    嗨,大家好,我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助,请支持一波。 希望未来可以一起学习交流。 通过前三篇的学习,相信你们对HTML有了一些基础的了解,那么我们就来先做一个小练习,巩固一下之前所学习的知识。 目...
    99+
    2023-08-31
    html 前端 css javascript vscode
  • PyTorch零基础入门之构建模型基础
    目录一、神经网络的构造二、神经网络中常见的层2.1不含模型参数的层2.2含模型参数的层(1)代码栗子1(2)代码栗子22.3二维卷积层stride2.4池化层三、LeNet模型栗子三...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作