签到

06月21日
尚未签到

共有回帖数 0

    懂得生活的人

    等级:
    下面给大家留个Homework:怎么打印出How are you ?


    有了上面的基础,我们进入C语言的学习。
    由于是在C吧做讲座,所以学习的东西跟普通的课本有顺序差异,但是整体还是差不多的。
    首先了解几个名词解释:
    常量:不可变的量,ex:2,456等等。
    变量:可变的量,ex:a,b等等。
    整型常量:它有3种表示方法:1,八进制:ex:017 2,十进制:ex:24 3,十六进制:ex:0x14。(注:八进制以0开头,十六进制用0x开头)
    实型数据:两中表示方法:1,小数:ex:1.52 2,指数形式: 1e6 (注:用指数表示的时候e前面必须有数,而且后面必须是整数)
    暂时先了解这些,然后讲整型数据在内存中的存放方式:
    因为在TC中整数占两个字节(即:00000000 00000000)由此,我们可以把最大的数和最小的数用2进制形式表示出来
    首先,左边第一位表示符号位0表示正,1表示负。由上,那么,最小的正数就可以表示为:00000000 00000000  (0) ,最大的正数则是

    01111111 11111111   (32767) ,那么负数也类似的表示为:10000000 00000000    (-32768),11111111 11111111  (-1).
    在这里要提醒大家注意,负数是用“补码”的形式存放的,关于补码大家可以查阅相关资料。我这里给大家一个口诀“负数取绝对值然后加一

    ”。由于补码要说清楚估计要很多时间,所以就不在叙述。顺便提一下,很多初学者不懂为什么32767+1=-32768。你看看上面的存放方式就一

    目了然了,首先32767的2进制为 01111111 11111111 加上一是不是就变成了10000000 0000000 不就是我门上面的-32768了吗?明白了吧?


    关于长整型,无符号的知识大家自己看书吧,不懂的再来问,我没必要再打一次(很累)。顺便提一下,无符号的数最左边一位不是符号位,

    因为它没符号,所以他的范围也扩大了1倍,即65535。
    接下来讲运算符: = 赋值 ,注意,很多新手把它读成“等于”这是不对的,这“==”才是等于。
    由 = 运算符,我们引出C语言的第一个算法---交换。如果有一瓶酱油个一瓶醋,怎么把酱油和醋交换呢?大家先想想看。
    然后在来看我们的交换算法。
     例题:已知两个数a,b,交换之。
     首先分析算法:
    很容易知道,我们必须借助第三个数做中间变量t才能实现交换(不用也可以,大家以后就知道了)
    ,把a的值给t,b的值给a,t的值给b,这是我们的伪码算法(一种算法表示方法),由算法,我们得出代码如下:
    /*exchange a and b*/

    main()
    {  
     int a,b,t;  //line 1
     t=a;a=b;b=t;  //line 2
     printf("%d %d",a,b);  //line 3
    }
    下面我们来分析代码:
    最开始是我门刚才说的main()主函数。
    line 1 是定义语句,定义两个变量
    line 2 是算法表示,也就是程序的处理过程
    line 3 是输出a,b的值。括号里面的%d 是格式控制,参见课本。这里提一句:printf函数双引号里面除了“格式控制”“转义字符”,其余的

    按原样输出。

    接下来继续学习运算符:+加  -减  *乘  /除 %求余,具体内容还是参见课本,这里提下需要注意的地方:1/2结果为0;1.0/2.0结果才是0.5

    ; 1%3结果是1;不懂的话自己理解理解就好了。不懂的跟帖问。
    由几种运算符,又引申出来复合运算符号,即+=   -=   *=  /=  %=,ex:i+=5等价于i=i+5,其余类同。

    接下来说自加自减,分别是i++ ++i;i-- --i; 前缀++是先算i=i+1;后缀是后算i=i+1;减类同。
    不理解的话,大家可以根据实验来加深:
    main()
    { int i=4,p;
     p=i++;   //把这行改成p=++i;再试试  
    printf("%d",p);  
    }

    顺便提一下强制转换的格式:(int)2.13结果是2,因为整型舍去小数点后面的。然后是逗号表达式,ex: 4,5;这是个逗号表达式,整个式子

    的结果是5,逗号表达式取最后那个表达式的值。逗号表达式是优先级最低的。

    这堂课就上到这里,下面是给大家的一些初学者应知道的入门例题;
    1:求两个整数之和。
    main()
    { int a,b,c;
     c=a+b;
     printf("%d",c);
    }
    Homework:求矩形的面积;根据2个数的交换引申出:怎样交换三个数?

    接下来附带的说一下编译程序的时候遇到的问题:
    如果在编译的时候出现错误,应该改动代码,然后再一次存盘,再一次编译(编译过程出现的错误叫语法错误),然后执行接下来的步骤。
    在连接的时候出现的错误叫 函数错误,一般错在函数相关的问题上,同样,在这个环节上出了问题也要返回到第二个步骤存盘,然后编译,连

    接,运行。在编译和连接都没错的话,可能在运行的时候出现错误,叫逻辑错误。此时你应该检查你的算法有没有问题。这个错误是最难检查

    出来的,新手特别应该注意。  
       
     好了,今天就到这里,大家有什么不懂的地方请跟帖问,同时如果有什么错误也请大家指出,不要误了新手。

    楼主 2016-02-19 16:43 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知