数组

在学数组之前,有必要把前面的知识复习一遍,当然我的复习,仅仅只是提一下,而对于你,则应该认真的看一下前面的知识点,不懂可以百度,哈哈。

前面我们大致学了 1.定义变量,2.数据的输入与输出,3.判断语句if...else if ...else  ,4.循环语句 while,do while,for 三种循环方式。

然而上面面讲的都是废话。。。下面开始讲数组。

数组是什么?数组是构造数据类型。很难懂吗?说直白一点,数组就是很多个相同的数据类型的元素聚集在一起之后的结果。

当然,使用数组的时候,同样需要定义它。还记得怎么定义一个变量吗?   现在,请定义一个整型变量a。如果你认真复习过前面的类容,相信可以很容易写出来 int  a; 这样的语句。那么,我现在问,如何定义1000个整型变量,难道要取一千个变量名,诸如int a,b,c,d,e......;这样吗?那也太麻烦了吧。所以就出现了数组这一概念。数组的定义很方便,如下

#include<stdio.h>
int main()
{//定义了有一千个空间的整型变量
//此时在计算机中会开辟1000个整型大小的内存空间
//每个空间都可以表示一个整型变量
int a[];
}

上面的程序中就定义了一个大小为1000的整型数组。当然数组的出现就是为了输入和存储的方便。运用数组一般都与上一篇文章的循环相结合。

1.从键盘中第一行输入一个数字a,第二行输入a个数字,按回车,然后出现每个数字加一的结果。

代码:

#include<stdio.h>
int main()
{
//为防止出现n的值过大的情况,一般吧数组开的比较大
int n,i,a[];
scanf("%d",&n); //从键盘中输入一个数
for(int i=;i<n;i++)
{//通过循环从键盘中输入n个数
scanf("%d",&a[i]);
//i代表着数组的下标,数组下标从0开始
}
for(int i=;i<n;i++)
{
a[i]+=;//通过循环使数组中的每个数都加1
//输出结果
printf("%d ",a[i]);
}
return ;
}

运行结果

当然用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[];
//数组的下标从0开始,
a[]=;
a[]=;
for(i=;i<=;i++)
{
//递推式
a[i]=a[i-]+a[i-];
}
scanf("%d",&n);
/*由于数组下标从0开始,a[0]即数列的第一个数
所以第n个数是a[n-1].*/
printf("%d",a[n-]);
}

运行结果

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[];
//输入字符串
scanf("%s",a);
//库函数求字符串的长度
l=strlen(a);
//倒着输出
for(i=l-;i>=;i--)
printf("%c",a[i]);
}

由于只想着能让大家对c语言有一个简单的整体的认识,并且限于个人水平,所以都写的是一些比较基础的东西。如想了解的更深入需要自己去下功夫。

简单学C——第四天的更多相关文章

  1. HDU 6467 简单数学题 【递推公式 && O(1)优化乘法】(广东工业大学第十四届程序设计竞赛)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6467 简单数学题 Time Limit: 4000/2000 MS (Java/Others)    M ...

  2. HDU 6467.简单数学题-数学题 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)

    简单数学题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  3. HDU 6463.超级无敌简单题-卡边界的暴力 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)

    超级无敌简单题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  4. [老老实实学WCF] 第四篇 初探通信--ChannelFactory

    老老实实学WCF 第四篇 初探通信--ChannelFactory 通过前几篇的学习,我们简单了解了WCF的服务端-客户端模型,可以建立一个简单的WCF通信程序,并且可以把我们的服务寄宿在IIS中了. ...

  5. 一步一步学ZedBoard & Zynq(四):基于AXI Lite 总线的从设备IP设计

    本帖最后由 xinxincaijq 于 2013-1-9 10:27 编辑 一步一步学ZedBoard & Zynq(四):基于AXI Lite 总线的从设备IP设计 转自博客:http:// ...

  6. 从0系统学Android--3.2四种基本布局

    从0系统学Android--3.2四种基本布局 本系列文章目录:更多精品文章分类 本系列持续更新中.... 3.3 系统控件不够用?创建自定义控件 上一节我们学习了 Android 中的一些常用的控件 ...

  7. 从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)

    原文:从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)  1.安装对应dll     Update-Package Xama ...

  8. (素材源代码)猫猫学IOS(四)UI之半小时搞定Tom猫

    下载地址:http://download.csdn.net/detail/u013357243/8514915 以下是执行图片展示 制作思路以及代码解析 猫猫学IOS(四)UI之半小时搞定Tom猫这里 ...

  9. HDU 6464 免费送气球 【权值线段树】(广东工业大学第十四届程序设计竞赛)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6464 免费送气球 Time Limit: 2000/1000 MS (Java/Others)    M ...

随机推荐

  1. 基于iOS,Android的服务器证书失效检测

    1.前言 在目前的iOS,Android手机上,当手机应用进行SSL通信时,手机端默认是不会进行服务器证书是否失效的监测. 在iOS上,系统是会定期获取所访问服务器的证书信息然后出存在本地. 在And ...

  2. Web缩放

    可以这么写,这个网页缩放了 同时滚动条也被绽放了,明显结果不正确 webBrowser1.Document.Body.Style = "zoom:200%"; 正解 http:// ...

  3. Ubuntu vim+ ctags(包含系统函数) + taglist 配置 分类: vim ubuntu 2015-06-09 18:19 195人阅读 评论(0) 收藏

    阅读大型代码,我们经常需要打开很多的代码文件,搜索各种定义.windows下用惯了ide的朋友,转战Linux的时候可能会觉得很难受,找不到合适的阅读工具.其实万能的vim就可以实现.下面介绍一下vi ...

  4. lua function

    This is the main reference for the World of Warcraft Lua Runtime. Note that these are mostly standar ...

  5. static inner class 什么时候被加载

    一直认为在加载outer class 的同时也会加载inner class 并且完成静态变量和代码块的初始化,今天在维基百科上面看到 “The static class definitionLazyH ...

  6. linux常用的压缩与解压缩命令 分类: 学习笔记 linux ubuntu 2015-07-05 19:38 38人阅读 评论(0) 收藏

    1.gzip 压缩 gzip 是压缩文件,压缩之后文件后缀为.gz 用法:gzip 选项 [文件] 2.gunzip 解压 这个命令与gzip的功能刚好相反,这个是解压. 用法 gunzip 选项 [ ...

  7. [转载]js中__proto__和prototype的区别和关系

          首先,要明确几个点:1.在JS里,万物皆对象.方法(Function)是对象,方法的原型(Function.prototype)是对象.因此,它们都会具有对象共有的特点.即:对象具有属性_ ...

  8. cocos2dx_moveby_n_moveto

    对于参数(SEC, POINT)来说,CCMoveTo是移动到WND的绝对的POINT,CCMoveBy是相对当前位置移动一个相当于(0,0)到POINT的向量.

  9. Caused by: java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJC

    Caused by: java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJC 缺少com/sun/tools/inte ...

  10. [上传下载] C#FileDown文件下载类 (转载)

    点击下载 FileDown.zip 主要功能如下 .参数为虚拟路径 .获取物理地址 .普通下载 .分块下载 .输出硬盘文件,提供下载 支持大文件.续传.速度限制.资源占用小 看下面代码吧 /// &l ...