数组数组
在学数组以前,有必要把前面的知识复习一遍,固然个人复习,仅仅只是提一下,而对于你,则应该认真的看一下前面的知识点,不懂能够百度,哈哈。函数
前面咱们大体学了 1.定义变量,2.数据的输入与输出,3.判断语句if...else if ...else ,4.循环语句 while,do while,for 三种循环方式。spa
然而上面面讲的都是废话。。。下面开始讲数组。3d
数组是什么?数组是构造数据类型。很难懂吗?说直白一点,数组就是不少个相同的数据类型的元素汇集在一块儿以后的结果。code
固然,使用数组的时候,一样须要定义它。还记得怎么定义一个变量吗? 如今,请定义一个整型变量a。若是你认真复习过前面的类容,相信能够很容易写出来 int a; 这样的语句。那么,我如今问,如何定义1000个整型变量,难道要取一千个变量名,诸如int a,b,c,d,e......;这样吗?那也太麻烦了吧。因此就出现了数组这一律念。数组的定义很方便,以下blog
#include<stdio.h> int main() {//定义了有一千个空间的整型变量 //此时在计算机中会开辟1000个整型大小的内存空间 //每一个空间均可以表示一个整型变量 int a[1000]; }
上面的程序中就定义了一个大小为1000的整型数组。固然数组的出现就是为了输入和存储的方便。运用数组通常都与上一篇文章的循环相结合。内存
1.从键盘中第一行输入一个数字a,第二行输入a个数字,按回车,而后出现每一个数字加一的结果。字符串
代码:string
#include<stdio.h> int main() { //为防止出现n的值过大的状况,通常吧数组开的比较大 int n,i,a[100000]; scanf("%d",&n); //从键盘中输入一个数 for(int i=0;i<n;i++) {//经过循环从键盘中输入n个数 scanf("%d",&a[i]); //i表明着数组的下标,数组下标从0开始 } for(int i=0;i<n;i++) { a[i]+=1;//经过循环使数组中的每一个数都加1 //输出结果 printf("%d ",a[i]); } return 0; }
运行结果io
固然用while循环也能作到如上操做,本身能够试试,此处就再也不说明了。真正值得关注的是,1.数组必须提早说明开辟了多少的空间,而且要开的够用。例如上题,若是第一行输入的是n是1001
,很明显,我只开了1000个空间,只能存放1000个数,这种现象称为数组越界,程序虽然能够运行,不会报错,可是是错误的。2.访问数组存放的第一个数是0,即a[0]表明数组存放的第一个数,a[n-1]表明数组存放的最后一个数。3.数组空间是逻辑地址是连续的,便可以经过0~n-1来访问数组中的全部的元素。
2.观察这段数字 1,1,2,3,5,8,13,21... 发现规律,如今从键盘中输入一个小于50的数m,按下回车,输出数列中的第m个数。
能够看出,这个数的前两数的和等于这个数。即 a(n)=a(n-1)+a(n-2) n>=3
规律发现了,那么用程序如何实现它:
#include<stdio.h> int main() { /*用数组来存放这个数列, 由于已知前两个数,就能知道下一个数 ,因此能够用递推的思想来求解*/ int n,i,a[50]; //数组的下标从0开始, a[0]=1; a[1]=1; for(i=2;i<=50;i++) { //递推式 a[i]=a[i-1]+a[i-2]; } scanf("%d",&n); /*因为数组下标从0开始,a[0]即数列的第一个数 因此第n个数是a[n-1].*/ printf("%d",a[n-1]); }
运行结果
3.不止语句是能够嵌套使用,数组一样也能够,好比若是有两个数组a[100],b[100]。若是b数组是一个整型数组,彻底能够用b数组里面的某个数数来表示a数组的下标,例如a[b[i]]; b[i]做为了a数组的下标.
不过数组用的比较多的不仅是存数字,它还能够存字符,即字符数组,定义一个字符数组:char a[100];每个空间能够存放一个字符,例如,'a','b','.'.'?','8'......等。此处须要区分字符数组与字符串的区别。字符串通常都有一个结束符‘\0’,放在存放的字符末尾.表示字符串的结束.例如我要存放"good,time",一共有九个字符,在数组中须要开辟10个空间,存放状况为'g','o','o','d',',','t','i','m','e','\0'.最后一个为结束符.而且对于字符数组的操做c定义了许多的库函数,有些例如复制syrcpy,求长度strlen,比较strcmp函数都是很经常使用的,须要掌握它。
例题:从键盘中输入一串字符串,无空格,把它倒着输出出来
代码:
#include<stdio.h> //关于字符,库函数因此须要的头文件 #include<string.h> int main() { int i,l; char a[10000]; //输入字符串 scanf("%s",a); //库函数求字符串的长度 l=strlen(a); //倒着输出 for(i=l-1;i>=0;i--) printf("%c",a[i]); }
因为只想着能让你们对c语言有一个简单的总体的认识,而且限于我的水平,因此都写的是一些比较基础的东西。如想了解的更深刻须要本身去下功夫。