Time life C

文化、时代、生活 仿佛还在昨天。
C语言严谨的来说是一门面向过程的语言,面向对象、面向过程到底是怎样,困扰了我一年两年的时光。C的好处灵活性、效率高这些就不一一介绍来了,C++与C其实并不是一门语言,C++兼容C,C++面向对象。就像起床,C就会定义怎样睁眼,怎样动胳膊等等,而C++简答说把这些过程存储了,函数调用,换句话说C++的标准库要比C强大多的。
既然都这样了还学啥C语言,直接学C++不就好了吗?这也完全没问题,直接学习C++也是没有问题的,就像说的那样这是两种语言,只不过关联程度大,但是大多数人还是会从C学起来,因为可以了解每一个过程,灵活性算是语言中很强的,可以随心所欲写自己想要的过程,对于优秀的程序员对封装下面都是很清楚,出现的问题调试都是在这个层面完成的,所以C基础牢固的人与没接触过C的人一起学习C++考虑的层面,涉及到的程度是不一样的,久而久之差距会越来越大。
说了那么多废话就是想说,学习C++可以没C的基础一样学习,C语言可以学,也可以不学,但是学好了之后你会在编程上看到更多深层面知识。
学习C之后,从基础学习到函数却不知道记录什么样的重点与大家分享交流,留下的是一堆文本代码,学习C这段时间最大的感触认真两个字的确不简单,最近也逛一些论坛一起来看几个有意思的小故事
1、关于scanf

scanf("%f %f",&a,&b);scanf是接收用户数据的关键字类似于python中raw_input函数,读取不检查边界的!会出现内存访问越界。而且不需要引入stdio.h(inputout)头文件也可以使用与Printf函数是一样的。
scanf接收格式很严格要求,如果中间空格,在命令行输入时候必须也是空格,是逗号就得输入逗号。这个地方本人就经常犯低级的错误。
普及一下%d(整型1,2,3),%f(浮点型1.0,2.0,3.0),%c(字符串),%f最为有意思,也是比较灵活的double与float类型都用%f接收
sizeof()这个函数用来查看这些类型占几个bit位,1byte=8bit 一个字节8位,**注意并不是int就一定是占4和字节32位,这是不科学的,有的书上是2个字节,有的是4个字节,其实占几个字节根据根据系统来的**,并不是C定义好的。 

再来说两个函数pow这个函数在后面全被Double类型取代了,输入输出都是double,求立方的函数,自己写的源码贴出来供大家参考,本人代码风格是谭老师风格,因为学的他的书,所以有时候代码不符合大家感觉

include <stdio.h>

void  main()
{

    double power(double a,double b);
    double x,y;

    scanf("%lf,%lf",&x,&y);

    printf("%lf\n",power(x,y));

}

double power(double a,double b)
{   

    double f=1;
    int i;
//  printf("%f,%f",a,b);

    for(i=0;i<b;i++)
    {
        f*=a;
    }
    return f;
}

仅供大家参考,那么再来个有意思的二分法与冒泡排序,其实本人挺喜欢数据姐与算法,因为好玩而且实用,毕竟是程序的灵魂如下

本人只会有序的冒泡排序,下面是自己初始化一个数组,下面是排序+循环

#include <stdio.h>

void main()
{
    int i,j,l,d;
    static int a[5]={5,1,3,6,2};

    int b[5];
    for(i=0;i<5;i++)
    {
        for(j=i;j<4;j++)
        {
            if(a[i] > a[j+1])
            {
                b[j] = a[j+1];
                a[j+1] = a[i];
                a[i] = b[j];
            }
        }
        printf("{%d}",a[i]);
    }
    printf("\nPlease enter find numbers:\n");
    scanf("%d",&d);
    for(l=0;l<5;l++)
    {   
        if(d == a[l])
        {
            printf("您查询%d是本数组中的元素,排在数组中第%d位",d,l+1);
        }

    }
    printf("\n");
}

下面再来个二分法查找

#define M 7
#include <stdio.h>

void main()
{
    static int a[M]={-12,0,6,16,23,56,80};
    int n,start,middle,finlly,found;
    start = 0;
    finlly = M - 1;
    found = 0;
    printf("请输入:\n");
    scanf("%d",&n);

    while(start <= finlly)
    {
        middle = (start+finlly)/2;
        if(n == a[middle])
        {
            found=1; break;
        }
        else if(n > a[middle])
            start = middle+1;
        else
            finlly = middle -1;

    }
    if(found==1)
        printf("您查找%d",middle+1);
    else
        printf("没有查找到%d",n);
}

文本粘贴上来的 格式有点不好看,讲解就么意思不会的可以讨论 毕竟思路是一样的 百度也有大量学习代码

猜你喜欢

转载自blog.51cto.com/13352079/2104064