2-22

作者: henry_bin | 来源:发表于2017-02-22 16:06 被阅读0次

    2017.2.22 周三
    c语言 :一门编程语言
    用途 :用来编写程序的,即按照我们的意图和想法编写一条条可执行的
    指令,这些指令在内存中运行得到一个我们想要的结果
    程序 :是由多条指令集合而成,他们能工作,并能实现一定的功能。
    程序的特点:数据结构+算法
    数据结构 :多数据的描述,即数据以何种形式存在,是计算机操作的对象。
    算法 :对操作的描述。即对数据的操作步骤。
    数据 :一切信息都是数据,数据有可变(变量)和不变(常量)之分。

    常量:特点
    一个整型的表示方法:二进制,八进制,十进制,十六进制

    变量 :1.取名 2.怎么定义一个变量
    基本的数据类型 :int short long char float double

    标准输入和标准输出:scanf printf

    include <stdio.h>

    //以.h为后缀的文件为头文件,c程序的一般函数的定义都在此头文件中
    

    void main()
    //主函数,整个程序只有一个主函数,它是程序开始执行和结束的地方,
    void 是函数的返回值类型,void 说明函数没有返回值
    {
    printf("hello world!\n");
    //程序要执行的指令,此处为向屏幕输出双引号中的内容。'\n':换行,
    指令以';'为结尾

    }
    /*
    编写一个c程序:vim 文件名.c 即打开一个.c为后缀的文件,该文件是用
    来书写c源程序,写完之后:wq保存退出。
    编译 :gcc 文件.c 若文件源程序有语法错误,在次步骤就会报错,修
    改完成后编译成功就会生成计算机可直接执行的二进制文件a.out
    运行 :./a.out
    */

    gcc的4个步骤:
    1.预处理:gcc -E 1.c -o 1.i
    包含头文件中的内容,做一些准备工作,是整个程序真正变得完整。
    2.编译:gcc -S 1.i -o 1.s
    编译生产汇编文件
    3.汇编:gcc -c 1.s -o 1.o
    生产二进制文件
    4.链接:gcc 1.o -o 1
    生产可执行的二进制文件

    include <stdio.h>

    void main()
    {
    int a=-1;
    //原码:10000000000000000000000000000001
    //补码:11111111111111111111111111111111
    // 37777777777
    // ffffffff
    //数据在内存中以补码的形式存储的,显示的时候显示的也是补码
    //原码:二进制码,最高位为符号位,正数为0,负数为1
    //正数的补码=原码
    //负数的补码=原码的符号位不变,其余位取反+1
    printf("%d %o %x\n",a,a,a);
    }
    /*
    常量:
    特点:1.不能够被改变的量
    2.可以不经说明直接使用的量
    分类:
    1.直接常量:
    整型常量:10,20
    实型常量:1.2
    字符型常量:
    普通字符常量(用单引号括起来的字符):'a','b'
    转义字符常量:'\n'
    字符串常量:"qwerty"
    2.标识符常量:宏定义的名字
    #define S 30
    S即为30
    整型常量的表达方式:
    二进制 :每位数上满2进1,0~1.
    例:二转十:1101 => 12^3+122+1*20=13

    八进制 :以0开头,每位数上满8进1,0~7
        例:023 转十进制 -> 2*8^1+3*8^0=19
    十进制 :每位数上满10进1,0~9,除了0之外,负数前面加负号
        例:10,-1,0;
    十六进制    :以0x或0X开头,每位数上满16进1,0~9 a b c d e f/ A B C D E F
        例:0x23f 转十进制 -> 2*16^2+3*16^1+f*16^0
    

    二转八:
    11011110 =>0336
    转16 =>0xde

    基本的数据类型:
    int:基本整型,用来定义整型变量,接受一个整数
    // short [int]:短整型,接受一个整数
    // long [int]:长整型,接受一个较大的整数

    float:单精度型,接受一个实数
    //    double:双精度型,接受一个较大的实数
    
    char:字符型,接受一个字符常量
    

    定义变量 :在内存中根据变量的数据类型给它在内存中开辟空间,同一个
    变量只能定义一次,但是可以声明多次
    只定义不赋值:
    int a;
    定义的同时赋值:初始化变量
    int a=10;
    用运算的结果给变量赋值
    int b=1;
    int c=3;
    int a=b+c;
    先定义后赋值:
    int a;
    a=10;

    声明:int a;
    调用1.c 2.c
    141593

    变量名:
    1.由字母,数字,下划线'_'三者自由组合而成。
    2.数字不能打头。
    3.在c语言中有保留字(int ,float),不能用来做变量的名字
    4.在c语言中区分大小写,所有price和PRICE是2个不同的变量
    int a,b,c=10,d;

    转义字符:以‘\’开头的字符常量,具有特殊的功能
    \n 换行
    \r 回车
    \b 退格
    \t 制表符tab
    ' 输出'
    " 输出"
    \ 输出\

    printf() :标准输出函数,指向显示屏输出数据
    格式:printf("格式控制=格式声明+普通字符",输出表列);
    例:printf("a=%d\n",a);
    注:在双引号中,以%开头的较格式声明,它是控制输出表列中的数据
    以何种形式输出,双引号中的其他字符叫普通字符,是会原样输出的。
    格式声明:
    1.d格式符 :输出带符号的十进制数
    %d :输出十进制数
    %nd :输出的数占n个字宽,从右边开始
    %ld :输出长整型数。
    2.c格式符 :输出字符型数据
    %c :输出一个字符
    %nc :输出的字符占n个字宽
    3.f格式符 :输出实型数据
    %f :整数部分全部输出,默认输出小数后六位,第七位四舍五入
    %.nf :整数部分全部输出,小数部分输出n位,第n-1位四舍五入。
    %lf :输出双精度型数据
    4.s格式符 :用来输出字符串
    5.o格式符 :用来输出八进制数
    6.x格式符 :用来输出十六进制数。

    */

    scanf() :标准输入函数,从键盘上按指定的格式获取输入的数据。
    格式 :scanf("格式控制",输入表列);
    格式控制 :同printf,
    输入表列 :在每个变量前加&
    例:
    #include <stdio.h>
    void main()
    {
    int a;
    float b;
    scanf("%d%f",&a,&b);
    printf("%d %.1f\n",a,b);
    }
    /*
    1.当scanf中的格式控制符之间紧紧相邻,则在输入数据的时候,默认各数据
    之间以空白符间隔(tab,空格,enter).输入数据结束后按回车结束。
    */
    练习:从键盘上一次获取int a;float b,char c三个变量的数据,并输出他们的值。

    include <stdio.h>

    void main()
    {
    int a;
    float b;
    char c;
    scanf("%d %f %c",&a,&b,&c);
    printf("%d %.1f %c\n",a,b,c);
    }======================================
    /*
    在scanf的双引号中格式控制符之间通常以空格间隔,输入的时候输入空格间隔。
    通常,双引号中有什么普通字符,那么输入数据的时候就原样输入什么字符。
    例 :scanf("a=%d,b=%d,c=%f",&a,&b,&c);
    输入:a=1,b=2,c=1.2<回车>
    */

    include <stdio.h>

    void main()c=2
    {
    int a;
    char b;
    int c=scanf("%d",&a);//scanf有返回值,返回数据列表的变量个数。
    getchar();//吸收残留回车
    scanf("%c",&b);
    printf("a=%d b=%c\n",a,b);
    }

    ASCII:给每一个存储的字符找到的对应的数字
    'a':97
    ‘0’:48
    1.每一个大写字母比它的小写字母的码值小32
    2.后面一个字母比前一个字母的码值大1
    3.后一个数字的码值比前一个数字大1
    练习:输入一个大写字母,输出它对应的小写字母。
    #include <stdio.h>
    void main()
    {
    char ch,A='B';
    ch=A+32;
    printf("%c\n",ch);
    // scanf("%c",&ch);
    // printf("%c\n",ch+32);
    }

    c语言中的注释:注释只是便于阅读,不参与编译,
    1. // :单行注释
    2./×...×/:多行注释

    int sizeof(变量名/类型名);计算变量或类型在内存中所占的字节的大小。
    #include <stdio.h>
    void main()
    {
    int a;
    printf("%d\n",sizeof(a));
    printf("int:%d short:%d long:%d float:%d double:%d
    char:%d\n",sizeof(int),sizeof(short),sizeof(long),
    sizeof(float),sizeof(double),sizeof(char));
    }

    算术运算符:加(+),减(-),乘(*),除(/),求模/求余(%)
    1.两个整数相除,结果一定是整数,小数部分直接抹掉。
    例:printf("%d\n",5/2);
    2.求模运算符2边的操作数必须是整数

    不同类型的数据间的混合运算:
    1.把float型的数据赋给int型数据,整数部分赋值,小数部分丢失
    2.把int型数据付给float型数据,数据不丢失,多了6个0
    3.字符可以和整数直接进行运算,他们可以看做相互等价的。
    4.在printf中格式声明输出的变量列表中的变量类型得严格匹配,除了字符
    和整数之间可以互相等价之外。

    强制类型装换运算符:()
    例:
    #include <stdio.h>
    void main()
    {
    float a=7.8;
    int b=3;
    printf("%d\n",(int)a%b);//%左右的操作数类型必须是int型,所以此需要强转
    }
    适用于自动类型转换不能够进行的时候使用,并没有改变变量的真实数据类型,
    只是产生了相应的中间变量。

    练习:有4个水渠a,b,c,d往一个池子里注水,单开a,1天注满;单开b,2天注满;单开c,
    3天注满;单开d,4天注满;请问,a,b,c,d同时开,几天注满。
    #include <stdio.h>
    void main()
    {
    float a=1,b=2,c=3,d=4;//a=1.000000
    printf("%f\n",1/(1/a+1/b+1/c+1/d));
    }

    自增运算符:++使变量的值加1
    前置加加:++i 用(i)之前加
    后置加加:i++ 用(i)之后加
    例:#include <stdio.h>
    void main()
    {
    int i=1;
    // printf("%d\n",++i);
    // printf("%d\n",i);
    printf("%d\n",i++);
    printf("%d\n",i);
    }
    自减运算符:--使变量的值减1
    前置减减:--i 先自减再用
    后置减减:i-- 先用再自减
    a=i++;
    a=++i;
    a=i--;
    a=--i;
    #include <stdio.h>
    void main()
    {
    int i=1,a;
    //a=i++;
    a=++i;
    printf("%d\n",a);
    printf("%d\n",i);
    // printf("%d\n",i++);
    // printf("%d\n",i);
    }

    putchar(字符常量/字符变量);
    例:
    #include <stdio.h>
    void main()
    {
    putchar('a');
    char a='b';
    putchar(a);
    putchar('\n');
    }
    练习:向屏幕输出boy
    #include <stdio.h>
    void main()
    {
    /* putchar('b');
    putchar('o');
    putchar('y');
    putchar('\n');*/
    putchar(98);
    putchar(111);
    putchar(121);
    putchar('\n');
    }

    getchar():从标准输入(键盘)获取一个字符,该函数有返回值,返回获取的那个字符,
    如果没有获取到,会一直等待,直到获取到,因此可以利用该特性进行暂停程
    序的运行,在在调试代码的时候可以单步运行
    例:
    #include <stdio.h>
    void main()
    {
    char ch=getchar();
    putchar(ch);
    }
    练习:从键盘输入boy,并输出boy.
    #include <stdio.h>
    void main()
    {
    /*
    char ch1=getchar();
    char ch2=getchar();
    char ch3=getchar();
    putchar(ch1);
    putchar(ch2);
    putchar(ch3);
    putchar('\n');*/
    char ch=getchar();
    putchar(ch);
    ch=getchar();
    putchar(ch);
    ch=getchar();
    putchar(ch);
    putchar('\n');
    }

    1.程序是顺序执行,从第一行依次往下执行,同一行如果有多条指令,从左往右执行。
    2.“左=右” :等号叫赋值运算符,即先执行右边的,再执行左边的,把右边的值付给左边的变量
    3.从键盘上输入数据的过程:从键盘上输入数据,直到按了回车键才会把所有的数据放到键盘缓冲区中去,当程序运行的时候需要获取输入,如果键盘缓冲区中有数据,则会自动去键盘缓存区中依次取,如果缓冲区中没有了数据,才会需要你继续从键盘输入数据,直到你按了回车键才把数据的数据继续填充到键盘缓冲区,然后再从缓冲区中取数据

    相关文章

      网友评论

          本文标题:2-22

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