C语言学习笔记(八)--数组
来源:互联网 发布:矩阵qr分解 given 编辑:程序博客网 时间:2024/04/30 11:15
1数组
在程序设计过程中我们往往需要处理一批相同类型的数据,如果使用基本类型定义变量来储存,显然是不方便的,这是我们就需要使用数组了。
2数组特点
1.数组大小必须是确定的,不能随机改变的。
2.数组的元素必须是相同类型的,不允许出现混合类型。
3一维数组
3.1一维数组的定义:
类型说明符 数组名[常量表达式];
例如:
int a[10]
数组的生命需要注意以下几个问题:
1.数组的命名规则与变量相同;
2.常量表达式代表的是数组元素的个数,也就是数组的长度;
3.数组的下标是从0开始的,最后一个元素的下标是数组长度减1;
4.数组的定义可以和普通变量一起声明和定义
Float i,j[];
3.2一维数组的引用:数组名[下标表达式];
例如:int a[5]; a[3]=10;
其中下标表达式可以是任意类型的表达式,但值必须是非负整型的。
数组分配内存空间是连续的空间,地址从低地址到高地址。
例子代码:
#include "stdio.h"main() { float score[10]; int i; printf("please input scores:\n"); for (i=0;i<10;i++) /*数组下标为0~9*/ scanf("%f",&score[i]); /*依次输入每个数组元素*/ printf("\n"); for(i=0;i<10;i++) printf("the %d score %f\n",i+1,score[i]);}
一般需要一次访问数组元素时,往往使用循环来实现,在循环时应特别注意数组的下标和循环的次数等问题,防止出现下标越界的错误。
3.3一维数组的初始化:数组类型 数组名[数组长度]={数组元素值};
例如下面的语句:
int a[3]={1,2,3};
注意:
1.定义是可以给数组全部元素赋初值,例如:
float f[3]={1,2,3};
2.也可以只给一部分赋值:
float f[3]={1,2};
这样的话,程序自动从低到高给数组元素赋值,其余的元素值为0.
3.在对数组的全部元素赋值时,可以不指定数组的长度,但[]不能省略:
int a[] = {1,2,3};
4.特别注意的是,数组初始化的赋值方式只能用于数组在定义的同时赋值,在定义之后只能一个一个的赋值,例如下面就是错误的:
int a[4];
a={1,2,3,4}
例子代码:
#include "stdio.h"main() { int i; int a[10]={1,2,3,4,5,6,7,8,9,10}; /*全部初始化*/ int b[]={1,2,3,4,5,6,7,8,9,10}; /*全部初始化时,可省略元素的个数*/ int c[10]={1,2,3,4,5}; /*部分初始化,其余元素的个数为0,数组的长度不可以省略*/ int d[10]; /*没有赋初值,则数组元素的值不定,同样的数组的长度不可省略*/ for (i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); for (i=0;i<10;i++) printf("%d ",b[i]); printf("\n"); for (i=0;i<10;i++) printf("%d ",c[i]); printf("\n"); for (i=0;i<10;i++) printf("%d ",d[i]); printf("\n");}
3.4一维数组的使用实例
保存30个学生的成绩,查看各分数段人数,计算出优秀率和及格率,同时输出所有学生的成绩,并对不及格的做出标记。
代码:
#define N 30#include "stdio.h"main() { float score[N];int count[4]={0,0,0,0};int i;float rate1,rate2;for(i=0;i<N;i++){ /*输入成绩同时统计成绩的等级*/ scanf("%f",&score[i]); if (score[i]>=85 &&score[i]<=100) count[0]++; else if (score[i]>=70) count[1]++; else if (score[i]>=60) count[2]++; else count[3]++; }rate1=(float)count[0]/N; /*计算优秀率和及格率,注意强制类型转换*/rate2=(float)(N-count[3])/N;printf("the number 85-100 %d\n",count[0]); /*输出个分数段的人数*/printf("the number 70-84 %d\n",count[1]);printf("the number over 60 %d\n",count[2]);printf("the number under 60 %d\n",count[3]);printf("the good rate %.2f,the fail rate %.2f\n",rate1,rate2); /*输出优秀率和及格率*/for (i=0;i<N;i++){ /*输出分数,以及不及格的提示*/ if (score[i]<60) printf(" %d fail,socre is %.1f\n",i+1,score[i]); /*学号和相应的成绩下标之间差1*/ else printf("%d score is %.1f\n",i+1,score[i]);}
思考练习:
处理20个斐波那契数列;
求数组的最大值;
冒泡排序;
选择排序;
二分查找:
4二维数组
4.1二维数组的定义:
数据类型 数组名[常量表达式1][常量表达式2];
例如:int [30][4];
4.2二维数组的引用:
数组名[行下标][列下标];
二维数组的输入输出例子代码:
#include "stdio.h"#define M 3#define N 4main( ){ int i , j , a[M][N] ; for(i=0 ; i<M ; i++) /*外循环控制行*/ for(j=0 ; j<N; j++) /*内循环控制列*/ scanf("%d" , &a[i][j]); printf("array a is :\n"); for(i=0 ; i<M ; i++){ for(j=0 ; j<N ; j++) printf("%d ", a[i][j]) ; printf("\n"); }}
4.3二维数组的初始化
1.可以将所有数据写在一个大括号内,以逗号分隔,按数组元素在内存中的顺序对二维数组赋值:
int a[2][3]={1,2,3,4,5,6}
2.也可以对数组的每个元素赋值,将二维数组的每一行写在一个花括号内:int a[2][3]={{1,2,3},{4,5,6}};
3.也可以对数组部分赋值:int a[2][3]={1,2,3,4};相当于:
int[2][3]={{1,2,3},{4}};
4.和一维数组一样,如果对数组的全部元素赋值,可以不指定第一维的长度,但是第二维必须指定长度。
二维数组初始化例子代码:
#include "stdio.h"main() { int a[][3]={1,2,3,4,5,6}; /*全部初始化的时候可以省略第一维*/ int b[2][3]={{1,2,3},{4,5,6}}; /*不可写成 int b[2][3]={{1,2,3}{4,5,6}};的形式*/ int c[3][3]={{1},{2},{3}}; int d[3][3]={{2},{0},{4}}; /*第二行的元素空时不可省略{}和{}内的0*/ int e[3][3]={{0,1},{0,0,3},{4}}; /*对一列中的其他值赋值时,不可省略前面的0*/ int i,j; printf("output array a:\n"); /*分行输出各个数组的值*/ for (i=0;i<2;i++){ for (j=0;j<3;j++) printf("%d ",a[i][j]); printf("\n"); } printf("output array b:\n"); for (i=0;i<2;i++){ for (j=0;j<3;j++) printf("%d ",b[i][j]); printf("\n"); } printf("output array c:\n"); for (i=0;i<3;i++){ for (j=0;j<3;j++) printf("%d ",c[i][j]); printf("\n"); } printf("output array d:\n"); for (i=0;i<3;i++){ for (j=0;j<3;j++) printf("%d ",d[i][j]); printf("\n"); } printf("output array e:\n"); for (i=0;i<3;i++){ for (j=0;j<3;j++) printf("%d ",e[i][j]); printf("\n"); }}
4.4二维数组练习
1.将一个二维数组的元素按照矩阵形式输出。
2.矩阵转换,行列互换。
5数组整体练习
1.判断回文。
- C语言学习笔记(八)--数组
- C语言程序学习(八)笔记
- c语言学习笔记八
- C语言学习笔记<八>
- (八)C语言数组
- C语言笔记(八)
- C语言(八):数组
- C语言学习笔记(四)数组
- 【黑马程序员】C语言学习笔记之函数(八)
- C语言学习笔记(八)——其他计算机知识
- C语言学习笔记<数组>
- C语言学习笔记:数组
- 零基础学C语言 笔记八 二维数组
- C语言入门教程 (八) 数组
- php学习笔记(八)数组
- C语言学习历程(八)数组和指针的关系及几个程序
- lua语言学习八数组
- Java语言基础学习笔记(八)
- windows xp系统的IIS系统asp.net网站部署
- 第八章、从头至尾漫谈虚函数
- ASP.NET自定义错误页面
- 我的FC15声卡好像出问题了
- NMF
- C语言学习笔记(八)--数组
- SQL数据库字段类型图解
- shell实现ssh自动登录远程主机
- 十月百度,阿里巴巴,迅雷搜狗最新面试十一题
- 子网掩码、IP地址、DNS
- 在首页上看到的一道有趣的题
- 十月下旬腾讯,网易游戏,百度最新校园招聘笔试题集锦
- 教你通透彻底理解:BFS和DFS优先搜索算法
- 使用递归 输出文件树