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语言-数组的更多相关文章

  1. GO语言数组和切片实例详解

    本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式: ...

  2. C语言 数组 列优先 实现

    C语言数组结构列优先顺序存储的实现 (GCC编译). 从行优先转换为列优先存储方式, 与行优先相比, 不同之处在于改变了数组维界基址的先后顺序, 从而改变了映像函数常量基址. /** * @brief ...

  3. C语言 数组 行优先 实现

    C语言数组结构行优先顺序存储的实现 (GCC编译). /** * @brief C语言 数组 行优先 实现 * @author wid * @date 2013-11-02 * * @note 若代码 ...

  4. 不可或缺 Windows Native (5) - C 语言: 数组

    [源码下载] 不可或缺 Windows Native (5) - C 语言: 数组 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 数组 示例cArray.h #ifn ...

  5. C语言数组

    在C语言中,对于三维或三维以上数组的使用并没有很好的支持,而且使用率也非常的低,后面会对三维数组做一些简单的分析,这篇文章主要以二维数组来探讨一些C语言中数组使用的相关概念和技巧. 1 一个var[i ...

  6. C语言数组:C语言数组定义、二维数组、动态数组、字符串数组

    1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...

  7. Go语言数组的使用

    Go 语言数组 Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 相对于去声明number0 ...

  8. Go 语言数组

    Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 相对于去声明number0, number ...

  9. C语言 > 数组和指针

    C语言 数组和指针 const: 关于指针和const需要注意一些规则.首先,把const数据或非const数据的地址初始化为指向const的指针或为其赋值是合法的. 然而,只能把非const数据的地 ...

  10. Go语言数组和切片的原理

    目录 数组 创建 访问和赋值 切片 结构 初始化 访问 追加 拷贝 总结 数组和切片是 Go 语言中常见的数据结构,很多刚刚使用 Go 的开发者往往会混淆这两个概念,数组作为最常见的集合在编程语言中是 ...

随机推荐

  1. html标签中head中两个标签的作用

    <meta name="render" content="webkit">     //浏览器使用急速模式打开 <meta http-equi ...

  2. $.ajax和$.post的区别(前者根据key-value/后者根据形参)

    post不需要给key-value形式: $("#btn").click(function(){ var url=basePath+"/emp/login"; ...

  3. jquery给img添加按钮事件

    1. img控件加id <a href="#"><img width="20" height="20" id=" ...

  4. cisco 密码重置

    密码重置 分类: 转贴技术资料 2007-12-28 16:38 http://www.cisco.com/en/US/products/hw/routers/ps259/products_passw ...

  5. Android音乐编程:管理音频焦点

    Android 系统保持相互独立的音频流通道来播放音乐,报警,通知,来电铃声,系统声音,呼叫(通话)音量,和 DTMF 音调(键盘拨号).这样做主要是为了使用户能够独立地控制每个流的音量. AD: h ...

  6. 操,escape sequence的输入方法我以前找过一次,这次又忘了,又找了一次,记下来,

    所有的手册和回答都没有说,都是用 echo -e '\e[22;22m,如果不愿意使用echo -e,也可以 输入CvC[[22:22m 不要再忘记了.

  7. 用SqlBulkCopy批量插入数据 遇到的错误

    在将txt文本格式的数据导入到数据库中时候,使用的是SqlBulkCopy.但是出现了多处错误,在网上查到得资料如下: 错误一:来自数据源的 String 类型的给定值不能转换为指定目标列的类型 nv ...

  8. ida调试 android so

    C:\Documents and Settings\Administrator>adb shellshell@htc_v2_dtg:/ $ susushell@htc_v2_dtg:/ # cd ...

  9. Type safety: Unchecked cast from Object to ArrayList

    表明Object转化为ArrayList这个转化并不是安全的.. 编译的时候需要加入修饰符才能正常编译(具体是那个修饰符..不记得了.^_^),否则会提示有警告 当然这只是一个警告,如果楼主自信这个转 ...

  10. photo中的图文混排

    photoshop中无法象word中自动图文混排,但可以通过手工绘制路径完成图文混排. 如下图,先摆放图像,然后绘制路径,然后在路径中输入或粘贴文字即可.