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 的开发者往往会混淆这两个概念,数组作为最常见的集合在编程语言中是 ...
随机推荐
- 学习笔记——门面模式Facade
门面模式,其实在我们不经意间已经使用了此设计模式.当我们需要将两个子系统,合并对外提供一个大的接口时,我们使用的就是门面模式.对外,子系统的接口是不可见的,只有我们的门面在.
- 把APP做成libary的注意事项
首先把build.gradle(app里的),里面改成这样 apply plugin: 'com.android.library'然后删掉applicationId这一行 注意,千万不能用注解,要把所 ...
- hdu_5648_DZY Loves Math
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5648 题意:给你n,m 让你求出 for(1-n)for(1-m)gcd(i&j,i|j)的s ...
- WiresShark 图解教程1
Wireshark是世界上最流行的网络分析工具.这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息.与很多其他网络工具一样,Wireshark也使用pcap network ...
- 常用的dos命名
注销:logoff 注册表:regedit 查看显存:dxdiag 删除文件: del +文件 删除文件夹: rd+(/s)+文件名 (/s表示删除文件下的子目录和文件); 系统配置实用程序: msc ...
- Spring+Struts集成(第二种方案)
在上一篇文章中我们了解到了第一种Spring跟Struts集成的方案,但此集成方案的不足是WEB层中知道Spring的相关内容,因为需要去主动的查找对象:BeanFactory.方案二便是通过依赖注入 ...
- CentOS 6.5 安装Suricata(with PF_RING & CUDA)
0.基础包 确保已安装 yum install mpfr cpp ppl cloog-ppl gcc kernel-devel pcre-devel libpcap-devel yum-plugin- ...
- 自己写的angularJs排序指令【原创】
首先,给大家看看指令完成的效果.(请注意区分下面几张图片中,对象值的变化) 好了,效果图已经看完了,如果大家有兴趣的话可以继续往下看,接下来要讲的是关于angularJs中filter内置好的orde ...
- Web安全检测工具的使用.
Nikto2 Nikto2是一款使用perl语言写的多平台扫描软件,是一款命令行模式的工具,它可以扫描指定主机的WEB类型 主机名.特定目录.Cookie.特定CGI漏洞.XSS漏洞.sql注入漏洞. ...
- (转)mahout中k-means例子的运行
首先简单说明下,mahout下处理的文件必须是SequenceFile格式的,所以需要把txtfile转换成sequenceFile.SequenceFile是hadoop中的一个类,允 ...