自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理
探索Android软键盘的疑难杂症
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制
Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南
版权声明
- 本文原创作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
数组
数组是相同类型数据的集合。换言之,只有类型相同的数据才可以放到同一个数组中。
数组的声明
数组的声明需要指定:元素类型、变量名、元素个数;例如:
int a [5];
在此声明一个int类型的数组a,数组长度为5。
请看如下示例:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a [5];
a[0]=1;
a[1]=2;
a[2]=3;
a[3]=4;
a[4]=5;
int length=sizeof(a)/sizeof(a[0]);
printf("数组长度为%d\n",length);
puts("遍历数组");
for(int i=0;i<5;i++){
printf("a[%d]=%d\n",i,a[i]);
}
}
运行结果:
数组长度为5
遍历数组
a[0]=1
a[1]=2
a[2]=3
a[3]=4
a[4]=5
Process returned 0 (0x0) execution time : 0.472 s
Press any key to continue.
在该示例中声明一个变量,然后为数组中每个元素赋值;最后再对数组进行遍历。有个小东西需要注意一下:在Java里面求数组的长度直接a.length就可以了。但是,在C里面是不一样的,在此采用的是sizeof(a)/sizeof(a[0])的方式。
刚才的示例中是先声明数组,后初始化数组。其实,也可以声明的同时对其进行初始化。例如:
int a[5]={1,2,3,4,5};
也可以在声明的时候不指明元素个数,例如:
int a[ ]={1,2,3,4,5};
也可以只对部分元素进行初始化,例如:
int a[5]={1,2,};等价于int a[5]={1,2,0,0,0};
但是要注意:不能通过赋值语句对数组进行初始化,例如:
int a[5];
a={1,2,3,4,5};
而且C语言中不支持使用=为数组赋值,例如:
int a[5]={1,2,3,4,5};
int b[5];
b=a;
数组的练习
1 数组的复制
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[5]={1,2,3,4,5};
int b[5];
int i;
int length=sizeof(a)/sizeof(a[0]);
for(i=0;i<length;i++){
b[i]=a[i];
}
for(i=0;i<length;i++){
printf("b[%d]=%d\n",i,b[i]);
}
return 0;
}
2 接收键盘的输入为数组元素赋值
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
int a[5];
for(i=0;i<5;i++){
printf("a[%d]:",i);
scanf("%d",&a[i]);
}
puts("遍历数组:");
for(i=0;i<5;i++){
printf("a[%d]=%d\n",i,a[i]);
}
return 0;
}
3 数组的逆置
#include <stdio.h>
#include <stdlib.h>
//逆置数组
int main()
{
int a[]={1,3,5,7,9,11};
int i;
int length=sizeof(a)/sizeof(a[0]);
for(i=0;i<length/2;i++){
int temp=0;
temp=a[i];
a[i]=a[length-1-i];
a[length-1-i]=temp;
}
puts("遍历数组:");
for(i=0;i<length;i++){
printf("a[%d]=%d\n",i,a[i]);
}
return 0;
}
4 获取数组的最大值与最小值
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[]={8,3,5,7,9,11};
int i;
int max=a[0];
int min=a[0];
int length=sizeof(a)/sizeof(a[0]);
for(i=0;i<length;i++){
if(a[i]>max){
max=a[i];
}
if(a[i]<min){
min=a[i];
}
}
printf("数组中最大值为:%d\n",max);
printf("数组中最小值为:%d\n",min);
return 0;
}
二维数组
所谓二维数组就是多个一维数组集合在一起形成的数组,即二维数组的每个元素是一个一维数组。例如: int a[4][3]表示该二维数组有4个元素,每个元素是一个一维数组并且该一维数组中有3个元素。
关于二维数组的遍历,请看如下示例:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
int j;
int a[4][3]={{1,2,3},{4,5,6},{7,8,9},{0,5,8}};
for(i=0;i<4;i++){
for(j=0;j<3;j++){
int temp=a[i][j];
printf("a[%d][%d]=%d\n",i,j,temp);
}
}
return 0;
}
二维数组练习题
4个学生参加3门课的期末考试,请求出每门课程的平均成绩
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
int j;
int a[4][3]={{71,82,93},{64,75,76},{77,78,89},{70,65,78}};
int chineseSum=0;
int mathSum=0;
int englishSum=0;
for(i=0; i<4; i++)
{
for(j=0; j<3; j++)
{
if(j==0)
{
chineseSum+=a[i][j];
}
if(j==1)
{
mathSum+=a[i][j];
}
if(j==2)
{
englishSum+=a[i][j];
}
}
}
printf("语文平均成绩%d\n",chineseSum/4);
printf("数学平均成绩%d\n",mathSum/4);
printf("英语平均成绩%d\n",englishSum/4);
return 0;
}