文化、时代、生活 仿佛还在昨天。
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);
}
文本粘贴上来的 格式有点不好看,讲解就么意思不会的可以讨论 毕竟思路是一样的 百度也有大量学习代码
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。