C语言-数组
C语言中使用数组来存储相同类型的大批量数据。
数组:
数组名:起名规则和变量名一样;
定义数组:数组每个元素存储的数据类型+数组名[常量(时表示数组分配存储数据类型的个数也就是长度)]={每个元素,以逗号(,)分割每个数组元素来初始化数组};
以下表读取数组元素,从下标开始,以此累加,分别代表对应数组元素;
该写数组中的元素也是通过下标来读写数组中的元素;
注意数组越累问题,C语言中,程序不能检测数组越界,所以要注意
数组在内存中是一段连续的内存空间
定义方式:
int a[10]={1}; //数组初值只给一个,相当于把第一个元素赋初值,其它元素清零
int a[]={1,2,3,4,5,6,7,8,9,10}; //数组元素赋值个数确定时,可以省略括号中的数组长度
实例:
1、使用键盘输入十个数,保存在数组中,并循环输出:
int a[];
for (int i=; i<;i++ ) {
scanf("%d",&a[i]);//阻塞式:程序运行到这里,或者遇到一个函数,函数必须完成某项任务程序才能继续向下执行
}
for (int i=; i<; i++) {
printf("%d\t", a[i]);
}
2、输入一个数,查询是否在数组中,如果是,输出它所在的位置(该数组元素的下标),如果不是,输出提示。
int a[] = {, , , , , , , , , };
int m=;
int b=;
int i=; for (int k=; k<; k++) { printf("请输入要查找的数:");
scanf("%d",&b); for (i=; i<; i++) {
if (a[i]==b) {
m=i;
break;
}
}
if (i==) {
printf("未找到要查找的数字\n");
}else{
printf("%d\n",m);
}
}
3、输入一个数,插入到一个从大到小排列的有序数组中,我使用的方法比较笨,但是可以得出结果,最简单的办法是定义个flag,用来检测是否插入,如果插入,后续的数组元素后移一位即可
// 输入一个数,插入到一个从大到小排列的有序数组中
int a[] = {, , , , , , , , , };
int b[] = {};
int insert = ; scanf("%d",&insert); for (int i=; i<; i++) {
if (a[i]>=insert && a[i+]<=insert) {
for (int j=; j<i; j++) {
b[j]=a[j];
}
b[i]=insert;
for (int j=i; j<; j++) {
b[j+]=a[j];
}
}else{
if (insert>a[]) {
b[]= insert;
for (int j=; j<=; j++) {
b[j]=a[j-];
}
}else{
for (int j=; j<; j++) {
b[j]=a[j];
}
b[]=insert; }
}
} for (int i=; i<=; i++) { printf("%d\t",b[i]);
}
printf("\n");
4、输入十个数,使用选择法对十个数进行排序,使用数组存储是个数。最终输出排好的顺序。
int a[];
int max;
int tmp;
for (int i=; i<; i++) {
scanf("%d",&a[i]);
}
for (int i=; i<-; i++) {
max = i;
for (int j=i+; j<; j++) {
if (a[max]<a[j]) {
max = j;
}
} tmp = a[max];
a[max] = a[i];
a[i] = tmp; }
for (int i=0; i<10; i++) {
printf("%d\t", a[i]);
}
5、使用冒泡法进行排序:
#define SIZE 10 int a[SIZE];
int b[SIZE];
int max = ; for (int i=; i<SIZE; i++) { scanf("%d",&a[i]); } for (int i=; i<SIZE-; i++) {
max=;
for (int j=; j<SIZE-i-; j++) {
if (a[j] > a[j+]) {
max=j;
}
}
b[SIZE-i-]=a[max];
} for (int i=; i<SIZE; i++) { printf("%d\n",a[i]); } for (int i=; i<SIZE; i++) { printf("%d\n",b[i]); }
6、二维数组的使用:把二位数组相同的列的数字加起来赋给另一个一维数组:
int a[][] = {};
int b[] = {}; for (int i=; i<; i++) {
for (int j=; j<; j++) {
a[i][j]=i+j;
printf("%d\t", a[i][j]);
}
printf("\n");
} printf("\n"); for (int i=; i<; i++) {
for (int j=; j<; j++) {
b[i]+=a[j][i]; }
printf("%d\t",b[i]);
}
printf("\n");
7、使用选择法对五个学生的成绩进行排序,数组表示五个学生,{学号,数学,语文,英语}下面的程序按照数学成绩进行排序:
#define ID 5
#define KEMU 4 int a[ID][KEMU] = {
{, , , },
{, , , },
{, , , },
{, , , },
{, , , }
}; int tmp=,m=; for (int i=; i<ID; i++) {
m=i;
for (int j=i; j<ID;j++) {
if (a[m][]<a[j][]) {
m=j;
}
}
for (int k=; k<; k++) {
if (m!=i) {
tmp=a[i][k];;
a[i][k]=a[m][k];
a[m][k]=tmp;
}
}
} for (int i=; i<; i++) {
for (int j=; j<;j++) {
printf("%d\t",a[i][j]);
}
printf("\n");
}
结果:
Program ended with exit code:
8、给出一个数组,求最大值,最小值,平均值,和:
int a[] = {, , , , , , , , , };
int min = , max = ;
int sum = ;
float avg = ; min = a[];
max = a[];
sum = a[]; for (int i=; i<; i++) {
if (min>a[i]) {
min=a[i];
}
if (max<a[i]) {
max=a[i];
}
sum+=a[i];
} avg=(float)sum/; printf("sum=%d,max=%d,min=%d,avg=%.1f\n",sum,max,min,avg);
C语言-数组的更多相关文章
- GO语言数组和切片实例详解
本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式: ...
- C语言 数组 列优先 实现
C语言数组结构列优先顺序存储的实现 (GCC编译). 从行优先转换为列优先存储方式, 与行优先相比, 不同之处在于改变了数组维界基址的先后顺序, 从而改变了映像函数常量基址. /** * @brief ...
- C语言 数组 行优先 实现
C语言数组结构行优先顺序存储的实现 (GCC编译). /** * @brief C语言 数组 行优先 实现 * @author wid * @date 2013-11-02 * * @note 若代码 ...
- 不可或缺 Windows Native (5) - C 语言: 数组
[源码下载] 不可或缺 Windows Native (5) - C 语言: 数组 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 数组 示例cArray.h #ifn ...
- C语言数组
在C语言中,对于三维或三维以上数组的使用并没有很好的支持,而且使用率也非常的低,后面会对三维数组做一些简单的分析,这篇文章主要以二维数组来探讨一些C语言中数组使用的相关概念和技巧. 1 一个var[i ...
- C语言数组:C语言数组定义、二维数组、动态数组、字符串数组
1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...
- Go语言数组的使用
Go 语言数组 Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 相对于去声明number0 ...
- Go 语言数组
Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 相对于去声明number0, number ...
- C语言 > 数组和指针
C语言 数组和指针 const: 关于指针和const需要注意一些规则.首先,把const数据或非const数据的地址初始化为指向const的指针或为其赋值是合法的. 然而,只能把非const数据的地 ...
- Go语言数组和切片的原理
目录 数组 创建 访问和赋值 切片 结构 初始化 访问 追加 拷贝 总结 数组和切片是 Go 语言中常见的数据结构,很多刚刚使用 Go 的开发者往往会混淆这两个概念,数组作为最常见的集合在编程语言中是 ...
随机推荐
- JSP 语法/标签
┣1.declaration Declaration定义了JSP脚本语言使用的变量和函数,这类似于Java中定义全局变量,或可以把它想像成pascal编程语言中的单元文件的interface部分.声明 ...
- 配置F5 负载均衡(转)
转自<网络运维与管理>201406-11 配置F5交换机的问题在于,与平时所学的交换机.路由器思路完全不同,拿到设备后,完全不知如何下手. 网络拓扑图如下: 两台web服务器对外提供服务, ...
- OSPF的基本配置及DR /BDR选举的实验
OSPF的基本配置及DR /BDR选举的实验 实验拓扑: 实验目的:掌握OSPF的基本配置 掌握手工指定RID 掌握如何修改OSPF的接口优先级 观察DR BDR选举的过程 实验要求:R3当选为DR ...
- filters
http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/admin_hbase_filtering.h ...
- 别在int与float上栽跟头(转)
源:http://www.cnblogs.com/luguo3000/p/3719651.html int与float是我们每天编程都用的两种类型,但是我们真的足够了解它们吗.昨天在博客园看到一个比较 ...
- drawRect & 内存 -> 深究
转载自:http://bihongbo.com/2016/01/03/memoryGhostdrawRect/ 在平日的开发中,随意覆盖drawRect方法,稍有不慎就会让你的程序内存暴增.下面我们来 ...
- 解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录
解决Ubuntu系统中文乱码显示问题 [日期:2014-02-20] 来源:Linux社区 作者:njchenyi [字体:大 中 小] 我是先安装了Ubuntu 12.04 Server,然后 ...
- AD进行行PCB DRC检查时,软件提示...report_drc.xsl不存在
之前装过一次AD软件没有报过这样的错误,卸掉后重新装了之后,在对电气规则检查检查时“软件提示...report_drc.xsl不存在”. 原因:之前装的目录默认在C盘下,所以AD软件输出的报告也是默认 ...
- nginx的内页跳转总结
刚进公司的时候老大一直在要求php做内页跳转,当时也不太了解细节所以一直没有说话.后来php问我你会不会做内页跳转,我说会一点就做了几个,从此搞内页跳转搞了两个星期.至于为什么做内页跳转哪就暂时不 ...
- 只有mdf 没有 日志 恢复数据库
1.先建一个与你要恢复的数据库名称一样的数据库.2.停止sql server,把你的数据库替换这个数据库.3.重启sql server,把数据库设置为紧急状态. sp_configure 'allo ...