• 第一章 c语言简介


     

       C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。

      C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。 

      C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。

    一.c语言的发展史和编程基础

      1.发展史        

          C语言是一门优秀的程序设计语言 C语言是在1973年由美国贝尔实验室开发的。 1983年, ANSI( American   National    Standard    Institute)为C语言制定了新的标准, 称为ANSIC, 并于1989年最终完成。 目前使用较多的版本有ANSI C, Borland C, Turbo C, Microsoft C/C++ , Visual C++等。

      2.编程基础  

        2.1理解什么是编程基础

          编程语言(Programming Language):计算机解决问题所需的一系列指令的集合。编程语言有很多种,常用的有C语言、C++、Java、C#、Python、PHP、JavaScript、Go语言等,每种语言都有自己擅长的方面。

                C语言(C Language)是编程语言的一种,学习C语言,主要是学习它的格式词汇

          compiler:编译器

          compile:编译

          object :目标,对象。
          error : 错误。
          undeclared : 未声明
          identifier : 标识符,用来表示函数,变量名字的。

          debug:调试版。
          release:发布版。
          executable:可执行的。

          standart   input/output   标准输入输出

          decimal     十进制

          binary   而精致

          hexadecimal    十六进制

          byte  字节,8个bit为1字节

          bit    比特

          address   :地址

    i      nteger  整型

                           character  字符

                        compiler

             源代码(.c,.cpp)----------------------------------->目标代码(.obj)

             源代码(.c,.cpp)----------------------------------->目标代码(.obj)         连接      link

                               .             --------->(.exe文件)   

             源代码(.c,.cpp)----------------------------------->目标代码(.obj)
             源代码(.c,.cpp)----------------------------------->目标代码(.obj)

         

        下面是一个C语言的完整例子

                        #include <stdio.h>                            //预编译头  //包含stdio.h这个文件,相当于把这个文件中的内容,所有代码放到这个位置。

                              c语言先声明后使用的语言。

          int main()                      //函数头 //main()程序入口,程序就从这个位置开始运行,void:空,无返回值的函数。

          {                                       //{}函数体  一个函数由函数头和函数体组成

            printf(“欢迎来到蚂蚁软件!");   //函数调用  注意函数日调用格式 , “  ”  表示字符串

            return 0;

          }

            //                单行注释

            /*..........*/   多行注释

            关于生成的文件:.cpp 源代码文件

                    .dsp 项目文件

                    .dsw工作区文件   记录哪些项目属于这个工区。总结:一个工作区包含多个项目文件,一个项目可以包含多个文件,

                    .exe  可执行文件。程序给谁用的最终成果。

           这些具有特定含义的词汇、语句,按照特定的格式组织在一起,就构成了源代码(Source Code),也称源码或代码(Code)

           C语言肯定规定了源代码中每个词汇、语句的含义,也规定了它们该如何组织在一起,这就是语法(Syntax)。

            编写源代码的过程就叫做编程(Program)。

        2.1c语言的特点

          C语言是结构化程序设计语言(structured   language   结构化语言 

            结构化语言,到底有哪些结构?

                1.顺序结构

                2.循环结构

                3.选择(分支)结构询问年龄,

                例如:实现计算机大于35岁输出:你好成熟,小于35输出:你好年轻

              #include   <stdio.h>

              void  main()

              {

                重点 int  age=0;// 定义一个变量。有四件事发生

                       第一件:比照类型分配对应大小的空间。

                       第二件:空间命名为age。

                       第三件:赋初值为0。

                       第四件:一定有个首地址,记为:&age

                  while(1) //循环结构   对于(1)条件,条件成立旧执行循环体。c语言中1代表为正,0代表为假。
                {
                   printf("您今年多大了?");
                   scanf("%d",&age);//调用了scanf这个函数,这个函数要求第一个参数需要用字符串的方式
                            //给定读取的格式,%d:d是decimal 十进制读取。如果这里写“%o”那就是
                            //按八进制读取了。第二个参数表示读取后,数据放到哪里。
                          //&为取地址符号。
                    if(age > 35) //分支结构的头,如果age > 35 成立,则执行大括号包含的体部分。
                    {
                      printf("您好成熟啊");
                    }
                      else
                    {
                      printf("您好年轻啊");

                    }
                  }

                 }

                      

       

                    }

          功能强大,具有丰富的数据类型及运算符。

          简洁紧凑,使用方便灵活。

          C语言具有自我扩充能力

          C语言具有汇编语言的功能

          可移植性好

        3 进制详解 二进制、八进制、十六进制  

                      3.1十进制到任意进制

                        78(十进制) → 10011110(二进制)

                           78/2=39.......0

            39/2=19.......1

            19/2=9.......1

            9/2=4.......1

            4/2=2.......0

            2/2=1.......0

            1/2=0.......1

                         156(十进制) → 234(八进制)

            156/8=19.......4

            19/8=2.......3

            2/8=0.......2

          742(十进制) → 2E6(十六进制)

                                 742/16=46.......6

            46/16=2.......14=E

            2/16=0.......2

                     3.2 任意进制到十进制

             1001110(二进制) → 78(十进制)

                         =1*2^6+0+0+1*2^3+1*2^2+1*2^1+0=78

            234(八进制) → 156(十进制)

              =2*8^2+3*8^1+4*8^0=156

                  2E6(十六进制)     →         742(十进制) 

                =2*16^2+14*16^1+6*16^0=72

                        3,3 二进制到八进制,十六进制   

                       10  011  001 (二进制) =  231 (八进制)         每三位转换为一个八进制数

                          1111  0011  1011(二进制)=  E38(十六进制)      每四位转换为一个十六进制数

            2.3数据在内存中的存储

                      2.3.1数据在内存中的存储

      计算机要处理的信息是多种多样的,如数字、文字、符号、图形、音频、视频等,这些信息在人们的眼里是不同的。但对于计算机来说,它们在内存中都是一样的,都是以二进制的形式来表示。

      要想学习编程,就必须了解二进制,它是计算机处理数据的基础。

      内存条是一个非常精密的部件,包含了上亿个电子元器件,它们很小,达到了纳米级别。这些元器件,实际上就是电路;电路的电压会变化,要么是 0V,要么是 5V,只有这两种电压。5V 是通电,用1来表示,0V 是断电,用0来表示。所以,一个元器件有2种状态,0 或者 1 我们通过电路来控制这些元器件的通断电,会得到很多0、1的组合。例如,8个元器件有 2^8=256 种不同的组合,16个元器件有 2^16=65536 种不同的组合。虽然一个元器件只能表示2个数值,但是多个结合起来就可以表示很多数值了。

       

      1个元器件称为1比特(Bit)或1位,8个元器件称为1字节(Byte) 那么16个元器件就是2Byte,32个就是4Byte,

      以此类推:8×1024个元器件就是1024Byte,简写为1KB;

       8×1024×1024个元器件就是1024KB,简写为1MB;

      8×1024×1024×1024个元器件就是1024MB,简写为1GB。

                                                                             

         2.3.2  载入数据

          对于读写速度,内存 > 固态硬盘 > 机械硬盘

          不管是运行QQ还是编辑Word文档,都是先将硬盘上的数据复制到内存,才能让CPU来处理,这个过程就叫作载入内存(Load into Memory)

          完成这个过程需要一个特殊的程序(软件,如:爱奇艺播放器),这个程序就叫做加载器(Loader)

          总结:CPU直接与内存打交道, CPU直接从内存中读取数据,处理完成后将结果再写入内存。

                                            

                  2.3.3    ASCII编码(美国信息交换标准代码)

        计算机是以二进制的形式来存储数据的,它只认识 0 和 1 两个数字,我们在屏幕上看到的文字,在存储之前都被转换成了二进制(0和1序列),在显示时也要根据二进制找到对应的字符。 特定的文字必然对应着固定的二进制,否则在转换时将发生混乱。

        字符集为每个字符分配一个唯一的编号,类似于学生的学号,通过编号就能够找到对应的字符。一种专门针对英文的字符集——ASCII编码。(American Standard Code for Information Interchange)

        总计128个字符:32个控制字符 + 96个打印字符;对应的十进制数是:0127

        常用并需记忆的字符及其对应的十进制数:

          5个控制字符:a(7)---响铃;(8)---退格; (9)---横向制表; (10)---换行;v(11)---纵向制表。

          10个数字字符:’0’(48) —— ‘9’(57)

          26个大写英文字母:’A’(65) —— ‘Z’(90)

          26个小写英文字母:’a’(97) —— ‘z’(122)

    程序设计的基本方法

      1.面向过程的程序设计

              基本思想: 把一个需要求解的复杂问题分为若干个模块来处理,每个模块处理一个子问题;设计时遵循自顶向下、逐步细化、模块化设计和结构化编码的原则。

           例如:把大象关进冰箱

        1. 打开冰箱      2.把大象装进去     3.关上冰箱

                 优点:编程简单、结构性强、可读性好; 遵循这种结构的程序只有一个入口和一个出口。

           缺点:存在数据与程序模块的分离和程序的可重用性差等问题。

         总结:将一个复杂的问题 分解成 若干个步骤  按照步骤 去一步一步执行 每一步(一个函数)

      2.面向对象的程序设计

       3.程序设计的基本方法

        程序:一系列指令的集合  不同的语言有不同规则的指令  c语言的规则

        重要性: 正确  可读  可维护 可移植  高效

       程序=数据结构+算法+程序设计方法+语言工具

          数据结构是数据的类型和数据的组织形式。

          算法是为解决一个问题而采用的方法和有限的步骤。

          程序设计方法

          确定语言和编程环境

         3.1数据结构

          数据的存放方式以及他们之间的关系

          int           a         =      0;

          关键字   int   代表这是一个可以存储整数的空间

      1. 根据数据类型(关键字int)分配 四个字节大小的空间 用来存储数据
      2. 给空间命名为a      a为变量名   称变量a的类型是整型
      3. 给空间内赋初值为0  32个元器件  代表控制计算机将32个元器件全部断电 320
      4. 必定有地址为 &a    &(取值运算符)   &a 代表a这个内存块再内存中的位置、

          3.1.1基本类型

            C语言中基本数据类型分为三类:整数型(整型)、实数型(浮点型)和字符型,也可分为数值类型和字符类型 数值类型分整数型和实数型。

            整数型分三类:整型int、短整型short、长整型long。       占用内存大小:short占2byte,int占4byte,long占4byte

            浮点型分单精度型float、双精度型double。                      占用内存大小:short占2byte,int占4byte,long占4byte,

            字符型:char。                                                             占用内存大小:char占1byte(不同的平台可能占用内存大小不一样,具体的可以用sizeof测试下)。

          3.1.2结构化程序设计

              C语言是结构化程序设计语言, 有三种基本结构。 顺序结构,选择结构,循环结构。

                                 顺序结构:按顺序执行

            选择结构:根据条件的真或假选择执行不同的操作内容。当条件成立执行语句A,否则执行语句B。

              If()

              {

                ;

              }

              单分支选择结构 if 为真 则执行对应的语句   if为假则不执行      可选可不选

              双分支选择结构    只会执行一种可能     二选一

               多分支  :判断多种情况的时候  多选一   else  代表的是其余的可能性

                

            循环结构   重复执行  

                  循环变量赋初值   循环结束条件   更改循环变量

                  for (循环变量赋初值   循环结束条件   更改循环变量)

                  {

                     ; 

                  }

               3.2 算法

          解决某一问题所采取的方法和步骤

          3.2.1算法的特性

            有穷性 一个算法的操作步骤应当是有限的;

            确定性 算法中的每一个步骤应当有确定的意义,不能 有二义性;

            有效性 算法中的每一个步骤应当正确、可行, 并且能 有效地执行;

            有零个或多个输入 执行算法时需要从外界获取的信息;

            有一个或多个输出 执行算法后应当得到正确的结果。

          3.2.3算法的表示方法

            常用的算法描述方法有: 自然语言描述、伪代码、流程图、N-S图、PAD图等。

         3.24如何衡量一个算法的优劣:

             1,时间复杂度(算法复杂度):运算次数

             2,空间复杂度:占用空间的大小。

          常见的表示方法:

              O(1) :算法的时间复杂度或者是空间复杂度,不随着数据量的大小而发生改变,是一个常数值。

                例如求1到n的和,如果用公式(1+n)* (n/2),那么这种算法的运算次数就不随着n这个数量的改变而发生变化,而是一个常量值(为1).

             O(n): 算法的时间复杂度或者是空间复杂度,随着数据量的大小而发生线性变化

                     例如求1到n的和,可以1循环加到n,n如果100,就要循环计算100次数,n如果是1000,那就 要循环计算1000次,循环次数(计算次数)随着n这个

              量的变化而线性变化。

             O(n的多少次)(这里是表示意思,实际不这么写,多少次方应该上角标): 算法的时间复杂度或者 是空间复杂度,随着数据量的大小而发生指数变化

          如果n为2,计算4次,n为3 计算9次,n为4 计算16次,n为5,计算25次,则计为o(n2)

                    例如 两层循环的嵌套,就是o(n2)

       4 C语言程序基本结构   

           一个C程序由一个或多个函数组成, 其中必须有一个主函数main( )。程序执行时总是从主函数开始,main( )可以置于程序的任何位置。

         程序中需有预处理命令(如 #include <stdio.h> ),预处理命令通常放在程序的最前面。

         分号是C语句结束的标志, 每个语句和数据定义后必须有一个分号。预处理命令、函数头和花括号“}”之后不能加分号。

           C程序书写灵活,一行可以写几个语句, 一个语句可以写在多个程序行上。

           C语言本身没有输入输出语句, 输入输出的操作是由库函数 scanf( ) 和printf( ) 等函数完成的。

         C程序严格区分大小写。一般变量、语句等用小写字母书写;符号常量等用大写字母书写。

           标识符、保留字之间必须至少加一个空格以示分隔。

            

           例如:求一个长方体的表面积和体积

          #include<stdio.h>            //预编译头  

          void main()                 //定义主函数

          {

    i        nt a = 0;                        //定义声明变量  初始化一个变量

            int b = 0;

            int c = 0;

            int s = 0;

            int v = 0;

            scanf("%d%d%d",&a,&b,&c);   

            s = 2*(a*b+b*c+a*c);

            v=a*b*c;

            printf("表面积为%d 体积为%d ",s,v);

          }

                

                    4.2  C语言的字符集、关键字和标识符

          

              字符集: C语言允许使用字符的集合

              字符集的组成: 26个小写字母 abcdefghi ...... z

              26个大写字母 ABCDEFG ......Z

              10个数字 0~9 

              其他符号 + - * / = , . _ : ; ? ” ’ ~ | & ^ ! %# ( ) [ ] { } < >

              空格(SPACE)

              制表符(Tab)

          

              关键字: C语言中预定的具有特定含义的词, 也称 保留字。共有32个。

                  分四类: 类型说明: int , long,float,…。

                      语句定义: if…else, while, for …。

                      存储类: auto,static,…。

                       长度运算符: sizeof

                                     

         标识符: 用来标识变量、符号常量、数组、函数的名字。

            标识符的命名规则:(7点)重点!  *****

              (1)只能由字母、数字、下划线构成;

              (2)不能以数字开头;(以数字开头的变量名与C支持的常量表示法有重合的部分,编译时会产生二义性

              (3)有效长度是1255个字符;

              (4)严格区分大小写;

              (5)不能和关键字、库函数名、用户自定义函数名重名;

              (6)尽量避免使用下划线开头命名;(’.h’头文件中经常使用以下划线开头命名的内部变量名

              (7).要见名知意      

       分隔符 分隔符主要有逗号和空格两种。 逗号用于分隔变量或参数, 空格用于分隔单词(在关键字和标识符之间必须用空格分隔)。

    如何衡量一个算法的优劣: 

     1,时间复杂度(算法复杂度):运算次数   2,空间复杂度:占用空间的大小。常见的表示方法:    O(1) :算法的时间复杂度或者是空间复杂度,不随着数据量的大小而发生改变,是一个常数值。      例如求1到n的和,如果用公式(1+n)* (n/2),那么这种算法的运算次数就不随着n这个数  据量的改变而发生变化,而是一个常量值(为1).   O(n): 算法的时间复杂度或者是空间复杂度,随着数据量的大小而发生线性变化          例如求1到n的和,可以1循环加到n,n如果100,就要循环计算100次数,n如果是1000,那就  要循环计算1000次,循环次数(计算次数)随着n这个量的变化而线性变化。   O(n的多少次)(这里是表示意思,实际不这么写,多少次方应该上角标): 算法的时间复杂度或者          是空间复杂度,随着数据量的大小而发生指数变化  如果n为2,计算4次,n为3 计算9次,n为4 计算16次,n为5,计算25次,则计为o(n2)          例如 两层循环的嵌套,就是o(n2)

  • 相关阅读:
    《海思VPSS — 将1920*1080图像通过VPSS缩放旋转成800*1280在LCD上显示》
    《Shell编程实例 —— 自动检测并挂载硬盘》
    《Shell脚本学习 —— 运算符、输入/输出重定向》
    《Shell脚本学习 —— 函数、文件包含》
    《Shell脚本学习 —— 流程控制if、for、while、无限循环、until、case、跳出循环》
    《Shell脚本学习 —— Shell传递参数、echo命令、test命令》
    牛客多校第三场 A—pacm team (4维背包加路径压缩)
    牛客第二场Dmoney
    牛客第二场A-run
    牛客第二场A-run
  • 原文地址:https://www.cnblogs.com/hyt19911004/p/12261923.html
Copyright © 2020-2023  润新知