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 的开发者往往会混淆这两个概念,数组作为最常见的集合在编程语言中是 ...
随机推荐
- as3 组件定义
package kingBook{ import flash.display.MovieClip; import flash.events.Event; import flash.utils.setT ...
- “#ifdef __cplusplus extern "C" { #endif”的定义-----C和C++的互相调用
"#ifdef __cplusplus extern "C" { #endif"的定义 看一些程序的时候老是有 "#ifdef __cplusplus ...
- scp命令报错-bash: scp: command not found
# scp -bash: scp: command not found # which scp /usr/bin/scp # rpm -qf /usr/bin/scp openssh-clients- ...
- Linux 安装 Redis 服务
下载地址 http://download.redis.io/releases/redis-3.2.0.tar.gz 官网下载地址 http://redis.io/download 1.下载安装包 cd ...
- iOS之tabbar图片去除渲染以及字体颜色统一配置
转发:http://www.cnblogs.com/qianLL/p/5521228.html 方式一 代码实现 这种要写很多代码 ,每个控制器都要写 UIImage *image=[UII ...
- 自己用wireshark 抓了个包,分析了一下
我自把对应 ip 包的头部拿出来手动分析了一下 :)
- zencart侧边导航点击一级目录展开二级目录
[小 大] 2013-09-17 00:20 来源: 未知 作者:wtozz_admin 我要投稿 zencart侧边导航点击一级目录展开二级目录 zen cart Categories默认的是只显示 ...
- js中:Date.utc()方法与getTime()方法返回值不相等的原因
// Date.UTC() 方法接受的参数同日期构造函数接受最多参数时一样,返回从1970-1-1 00:00:00 UTC到指定日期的的毫秒数. var utcDate = Date.UTC(201 ...
- JAVA实现的截屏程序
http://hadeslee.iteye.com/blog/125386 http://www.jb51.net/article/75114.htm JAVA截屏程序(第三版) JavaEXTSwi ...
- 2016"百度之星" - 资格赛(Astar Round1) Problem C
字典树. 插入的时候update一下节点出现的次数. delete的时候,先把前缀之后的全删了.然后看前缀最后一个节点出现了几次,然后前缀上每个节点的次数都减去这个次数. 前缀从上到下再检查一遍,如果 ...