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 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
仅供大家参考,那么再来个有意思的二分法与冒泡排序,其实本人挺喜欢数据姐与算法,因为好玩而且实用,毕竟是程序的灵魂如下
本人只会有序的冒泡排序,下面是自己初始化一个数组,下面是排序+循环
#include 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 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);}
文本粘贴上来的 格式有点不好看,讲解就么意思不会的可以讨论 毕竟思路是一样的 百度也有大量学习代码