美文网首页
C的简介

C的简介

作者: 冀望的air | 来源:发表于2020-10-26 14:31 被阅读0次

    ##1.C语言的基本介绍  

    ·一个程序由一个或多个源程序组成,一个源程序文件中有且只有一个main函数。包括预处理指令`#include`,全局声明,函数定义。

    ·函数是C的重要组成部分,包括函数首部和函数体。

    ·最重要的一点,也是我学习C++后搞混的,程序总是从main函数开始执行,没有main函数是会报错的。

    ·同时一个良好的编程习惯应该包含注释部分。

    ##2.程序灵魂——算法介绍  

    ###2.1什么是算法  

    ·首先程序是由算法加数据结构这两大类组成的,当然还有一些细节,声明啊,注释等。

    ·算法分两大类,一类是数值运算,一类是非数值运算算法,而不管是什么算法,都是为了在一件事情中找到一定规律去做,按计划好的去实现避免出

    ###2.2算法特性  

    ·有穷性,一个算法应该包含有限的操作步骤。

    ·确定性。算法中每一个步骤都应该是确定的。

    ·有零个或多个输入。

    ·有一个或多个输出。

    ·有效性,算法每一个步骤都应该有效执行。

    ###2.3算法基本结构  

    ·顺序结构

    ·循环结构

    ·选择结构

    ##3.顺序结构及一些C的基础要点  

    ###3.1数据表现形式  

    ·常量

        常量分为整型,实型,字符型,字符串和符号常量。而字符常量中有一种转义字符,以'\'开头,最常见的是'\n',表示换行。符号常量例子`#define PI 3.14`  

    ·变量

        变量必须先定义后使用。  

    ·常变量

        'const int a = 1;'  

    `标识符

        C语言规定标识符只能由数字,字母或下划线组成,数字不能开头。  

    ###3.2整型数据   

    ·分类

    |类型|字节数|取值|

    | --- | --- | --- |

    |int|4|-2^31~(2^31-1)|

    |unsigned int|4|0~(2^32-1)|

    |short|2|-2^15~(2^15-1)|

    |unsigned short|2|0~2^16-1|

    |long|4|-2^31~(2^31-1)|

    |unsigned long|4|0~(2^32-1)|

    ###3.3字符型数据    

    没啥就一样

    ###3.4浮点型数据    

    ·float,double,long double

    ##4.选择结构程序设计  

    这里也没啥就是if和switch,然后需要搞一下运算优先级。

    ·关系运算符优先级

        <,>,<=,>=,==,!=,这里前四种的运算优先级相同且高于后两种的运算优先级。  

    ·逻辑运算符优先级

        !高于&&高于||。  

        且非的运算优先级是最高的,然后是算数运算符,到关系运算符,到&&和||,最后是赋值运算符。  

    ·条件运算符

        条件运算符有一个条件表达式,由两个符号?和:组成,必须一起使用,及`表达式1?表达式2:表达式3`   

    ```

    max=(a>b)?a:b  

    //等价于  

    if (a>b)  max=a;  

    else max=b;  

    //同样也可以写成  

    a>b?printf("%d",a):printf("%d",b)  

    ```

    ##5.循环结构程序笔记  

    处理一些需要重复的问题,可以选择循环结构。

    ###5.1 while语句    

    ·while语句就是只要当循环条件表达式为真,就执行循环体语句。

    ```

     #include<stdio.h>  

    int main()   

    {  

        int i=1,m=0  

        while(i<100)  

        {  

            m=m+i;  

            i++;  

        }  

        printf("m=%d",m);  

        return 0;  

    }  

    ```

    ###5.2 do...while语句  

    ·特点就是先无条件执行一遍循环体,然后判断循环条件是否成立。

    ###5.3 for语句  

    ·for语句是用到最多的循环语句,一般形式是for(表达式1;表达式2;表达式3)下面接语句

        表达式1:设置初始条件,只执行一次

        表达式2:循环条件表达式,判断是否循环

        表达式3:循环调整语句

    ###5.4 循环的终止结束  

    ·break语句提前终止循环,也可以跳出switch语句。

    ·continue语句提前结束本次循环,不继续走下面的程序,而不结束整个循环。

    ##6.利用数组处理批量数据  

    ·数组是一组有序数据的集合,数组中每一个元素都属于同一个数据类型,用一个数组名和下标来唯一的确定数组中的元素。

    ###6.1 一维数组初始化  

    ·在定义是赋初始值。

        `int a[10]={0,1,2,3,4,5,6,7,8,9};`  

    ·可以只给一部分赋值

    ·也可以赋值0,`int a[10]={0,1,2,3,4,5,6,7,8,9};`或者`int a[10]={0}`

    ·也可以不指定数组长度

    ###6.2 冒泡法  

    ``` 

      #include <stdio.h>  

    int main()  

    {  

         int a[10];  

        int i,j,t;  

        printf("input 10 numbers:\n");  

        for(i=0;i<10;i++)  

            scanf("%d",&a[i]);   

        printf("\n");  

        for(j=0;j<9;j++)  

        {  

            for(i=0;i<9-j;i++)  

            {  

                if(a[i]>a[i+1])      

                {  

                    t=a[i];  

                    a[i]=a[i+1];  

                    a[i+1]=t;  

                }  

            }  

        }   

        printf("the sorted number:\n");  

        for(i=0;i<10;i++)  

            printf("%d",a[i]);  

        printf("\n");  

        return 0;  

    }   

    ```

    ###6.3字符数组   

    ·如果花括号内提供初值个数大于数组长度,则报错。如果初值个数小于数组长度,则置赋值前面哪些元素,后面空的填\0,即空字符。

    ·C语言规定字符串结束标志,以字符\0作为结束标志。如果字符数组中存在字符,前九个都不是空字符,而第十个是\0,认为数组中有一个字符串,有效字符九个。

    ·在向内存中存储时,系统会自动在最后加一个'\0',那么就有了下面这个

    ```  

     char c[]="i am happy";  

    //等价于  

    char c[]={"i am happy"};  

    //等价于  

    char c[]={'i','','a','m','','h','a','p','p','y','\0'};  

    //而不与下面这个等价  

    char c[]={'i','','a','m','','h','a','p','p','y'};  

    //前三者长度为11,最后一个为10  

    ```

    ·字符数组输出不包括'\0','printf("%s",c)'。

    ###6.4 一些字符串相关函数

    ·puts——输出字符串,其作用是将一个字符串(以\0结束)输出到终端。'puts(str);'

    `gets——输入字符串,从终端输入一个字符串,得到一个函数值。

    ·strcat——字符串拼接,'strcat(str1,str2)',将str2拼接到str1后面,str1必须足够大。

    ·strcpy和strncpy——字符串复制,'strcpy(str1,str2)',将str2复制到str1中,从起始位开始,str1也需要足够大。'strncpy(str1,str2,2)',将str2中前2个复制到str1中。取代str1中前两个字符。

    strcmp——字符串比较函数。'strcmp(str1,str2)',将两个字符串从左至右比,若全部相同则字符串相等,出现不同,以第一个不同为准。结果由函数值带回,相同0,str1>str2,返回一个正整数,str1

    ·strlen——测字符串长度,不包括\0。

    ·strlwr——转换小写

    ·strupr——转换大写

    ##7.指针  

    ###7.1 什么是指针  

    ·vc中为int分配4个字节,float四个字节,char一个字节,内存区每一个字节有一个编号,这就是地址,地址指向的是该变量单元,地址称为指针。

    ·'i_pointer = &i;'表示将i的地址存放到i_pointer中,i的地址是2000,那i_pointer的值就是2000,这个2000是i的地址。这时i=3,那么*i_pointer=3;*i_pointer表示i_pointer所指对象。此时,*i_pointer是指针,指向一个地址,i_pointer是指针变量,存放地址的变量。

    ###7.2 指针变量定义和初始化

    ·类型名 * 指针变量名

        'int * p;'  

    ·**初始化(这是定义加初始化,不是指针变量的赋值过程,区分!!)**

        'int * p = &a;'//定义指针变量p,指向a。  

    **定义时 指针变量前面的'*'表示该变量为指针型变量,指针变量名是p,不是'*p'。**

    ·一个变量的指针包含两个方面,以是以存储单元编号表示的纯地址,一是指向的存储单元的数据类型。

    ###7.3 字符串指针  

    ```  

    ·char *string = "hello world";  

    等价于  

    char *string;  

    string = "hello world";  

    //把字符串第一个元素地址赋值给指针变量string,输出的时候会自动加1。  

    ```

    ##8.自建数据类型  

    ###8.1结构体  

    ·声明

        struct 结构体名  

        {成员列表};  

        //成员声明需要有类型声明,***类型名 成员名***  

    ·在声明同时定义变量

        struct 结构体名  

        {成员列表  

        }变量名列表;  

    ·定义结构体数组

        struct 结构体名  

        {成员列表}数组名[数组长度];  

    ·结构体指针

        p指向一个结构体变量stu。下面三种用法等价  

    - stu.num(stu.成员名)

    - (*p).成员名

    - p->num

    ·枚举

    声明

        enum [枚举名]{枚举元素列表};  

        //枚举元素不能赋值  

        enum Weekday{a,b,c};  

    定义变量

        enum Weekday  workday;  

        //   枚举类型   枚举变量  

        workday = a; 

    ##9。对文件的输入输出  

    ·一个文件要有一个唯一的文件标识,文件标识包括三部分:

    - 文件路径

    - 文件名主干

    - 文件后缀

        'C:\temp\file.dat'  

    ·映像文件-在内存中以二进制形式存储的,不加转换的输出到外存,就是二进制文件,可以认为它就是存储在内存的数据的映像。

    ·文本文件-要求在外存上以ASCII代码形式存储,则需要在存储前进行转换。

    ·fopeen(文件名,使用文件方式);

    |文件使用方式|       含      义      |指定文件不存在|

    |--|--|--|

    |r(只读)|打开一个已存在的文件输入数据|出错   |

    |w(只写)|打开一个文本文件写入数据|建立新文件|

    |a(追加)|向文本文件尾添加数据|出错|

    |r+(读写)|打开一个文本文件读写|出错   |

    |w+(读写)|打开一个新的文本文件读写|建立新文件|

        如果不能打开文件,fopen函数将带回一个出错信息,返回一个空指针NULL。  

        'if((fp=fopen("file","r"))==NULL)'  

    ·关闭文件 fclose(文件指针);

    ·读写一个字符

        fgetc(fp)从fp指向的文件读入一个字符  

        fputc(ch,fp)将字符ch写到文件指针变量fp所指文件。  

    ·读写一个字符串

        fgets(str,n,fp)n是要求得到的个数,但实际只从fp所指文件中读入n-1个字符,最后加一个'\0',这样得到字符串共有n个字符,放到字符数组str中。读完前遇到'\n'或文件结束符EOF,读入结束,但遇到的'\n'也将作为字符读入,函数出错返回NULL。  

    ·格式化方法读写文本文件

        fprintf(文件指针,格式字符串,输出列表);  

        fscanf(文件指针,格式字符串,输出列表);  

    相关文章

      网友评论

          本文标题:C的简介

          本文链接:https://www.haomeiwen.com/subject/ykmamktx.html