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 的开发者往往会混淆这两个概念,数组作为最常见的集合在编程语言中是 ...
随机推荐
- cocos2d-x-2.2.6创建工程
1.下载并安装Python,我的版本是2.7.3,不要太高,据说不能用.2.配置环境变量,将Python的安装的根目录加入系统环境变量的Path路径中(不赘述,自行配置)3.配置好之后打开cmd命令行 ...
- CodeForces 500 A. New Year Transportation
Description New Year is coming in Line World! In this world, there are n cells numbered by integers ...
- 开源内容管理系统Joomla正式发布3.5版本 基于PHP 7
这也是首个完全支持 PHP 7 语言开发的 Joomla 版本 作为深受广大站长喜爱的 Joomla 开源内容管理系统(Content Management System, CMS)正式推出 3.5 ...
- 此博客停止更新,请访问chenshuo.net
非常感谢博客园,该博客不在更新,请访问 chenshuo.net
- 使用Log4net记录日志
首先说说为什么要进行日志记录.在一个完整的程序系统里面,日志系统是一个非常重要的功能组成部分.它可以记录下系统所产生的所有行为,并按照某种规范表达出来.我们可以使用日志系统所记录的信息为系统进行排错, ...
- 转 sqlplus执行sql报错:ORA-01756:
1.sqlplus执行sql报错:ORA-01756: quoted string not properly terminated 分类: 技术 在SQLPLUS中执行SQL文件时 ...
- GridView的RowCreated与RowDataBound事件区别
在西门子面试时,项目负责人除了道试题关于RowCreated与RowDataBound事件区别,经过google一下,得出结果: GridView的RowCreated与RowDataBound的一个 ...
- Java中关于HashMap的使用和遍历(转)
Java中关于HashMap的使用和遍历 分类: 算法与数据结构2011-10-19 10:53 5345人阅读 评论(0) 收藏 举报 hashmapjavastringobjectiterator ...
- IFieldEdit Interface 接口
Description The IFieldEdit interface is used when creating new fields. You should not use it to modi ...
- Bootstrap环境及屏幕适配-(一)
一.环境搭建 1.目录结构 需要引用的文件有, jquery.js.bootstrap.min.js 和 bootstrap.min.css 文件,下面看下在线的文档Hello Word <!D ...