C语言基础五 数组
数组跟变量的区别?
数组是可以在内存中连续存储多个元素的结构,所有元素必须属于相同类型。
格式:元素类型 数组名[元素个数];
数组的特点: 只能存放单一元素的数据,里面存放的数据成为元素。
数组的声明:声明数组的类型 ,声明数组的元素个数
变量是可以在内存中存储一个数据的结构。
格式: 元素类型 变量名。
声明变量: Datatype varialename;
定义时初始化变量:Datatype varialename= value;
定义后初始化变量:varialename=value;
数组的简单使用:
初始化:int age[5]={1,2,3,4,5,};
元素由顺序之分,每个元素都有唯一的下标(索引 ),从0开始。
可以声明的元素个数不使用,int a[3] = {1,2}
可以不声明元素个数:int a[] = {1, 2, 3};
错误使用:
int a[];无数组数据
int[4] a;元素个数在元素名前面,JAVA语言中允许
int a[b];不是元素类型
a = {10, 11};没声明元素类型
示例:
//声明数组;数据类型 数组名[数组长度]
int scores[5];
//为数组赋值:数组名[下标]=值;--->下标从0开始
scores[0]=10;
scores[1]=20;
scores[2]=30;
scores[3]=40;
scores[4]=50;
//获取数组中的元素,数组名[下标]
printf("%d,%d,%d,%d,%d\n",scores[0], scores[1],scores[2],scores[3],scores[4] );
//声明赋值一步完成;数据类型 数组名[长度]={值1,值2,值3}; 对应的个数应和元素个数对应
int nums[5]={1,2,3,4,5};
printf("%d,%d,%d,%d,%d\n",nums[0],nums[1],nums[2],nums[3],nums[4]);
int arr[10]={1,2,3,4,5};//6个元素未赋值将使用默认值0
int arr[] = {9,8,7};//正确 ,未指定数组的长度(数组长度取决于元素的个数)
示例:让用户输入5个成绩,根据用户输入的成绩计算最高分,最低分和平均分
int scores[5];//声明5个用于存储用户输入的成绩
int sun=0,avg;//总成绩,平均值
int max,min;//最大值,最小值
int i;
//循环获取用户输入的成绩,并将其输入成绩保持到数组中
for(i=0;i<5;i++){
printf("请输入第%d个人成绩:",i+1);
scanf("%d",&scores[i]);
sum+=scores[i]; //计算总成绩
}
avg=sum/5;//计算平均成绩
min=max=scores[0];//假设第一个人的成绩是最高分,最低分
for(i=1;i<5;i++){
if(scores[i]>max){//获取最高分
max=scores[i];
}
if(scores[i]<min){//获取最低分
min=scores[i];
}
}
printf("平均分为:%d,最高分是%d,最低分%d\n",avg,max,min);
冒泡排序;由小到大
int num[]={2,5,9,7,15};//定义一个数组,数组中可无元素个数
int i,j,temp;//定义变量
//外层控制比较的轮数(N-1)
for(i=0;j<4;i++){
//内层循环控制每轮比较的次数
for(j=0;j<4-i;j++){
if(num[j]>num[j+1]){//比较最大值
temp=num[j];//使用中间变量换位置
num[j]=num[j+1];
num[j+1]=tem;
}
}
}
printf("排序后的数字为:");
//利用循环遍历输出
for(i=0;i<5;i++){
printf("%d\t",nums[i]);
}
二维数组可以看成由一维数组嵌套
二维数组: 一维数组中的值为一个数组.
声明: 数据类型 数组名[rowsize][colsize];
int nums[5][6];
声明并赋值:
int nums[4][2]={{10,11},{20,21),{30,31},{40,41}}; 正确
int nums[][2]={{10,11},{20,21),{30,31},{40,41}}; 正确
int nums[4][]={{10,11},{20,21),{30,31},{40,41}}; 错误
示例:声明一个三行三列的二维数组用于保持用户输入的整型数据,打印用户输入的数据并计算对角线之和
int num[3][3];
int i,j,k=0;
//循环获取用户输入的数据,并将其数据保存到二维数组中
for(i=0;i<3;i++)
{
for(j=0;j<3;j++){
printf("请输入第%d行第%d列数据\n",i+1,j+1);
scanf("%d",&nums[i][j]);//获取用户输入值
}
}
//循环遍历二维数组的数据,并打印成矩形
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d\t",nums[i][j]);
if(i==j){
sum+=nums[i][j];
}
}
printf("\n");
}
printf("二维数组对角线之和为%d",sum);
C语言基础五 数组的更多相关文章
- C语言基础五 数组的应用
.根据用户输入的10人成绩并将其保存到数组中,求最高成绩,最低成绩和平均成绩 int scoure[10];//存储10个数据的数组 int i; int sum;//总成绩 int max,min, ...
- C语言基础知识-数组和字符串
C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...
- R语言基础:数组&列表&向量&矩阵&因子&数据框
R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...
- Java之--Java语言基础组成—数组
Java语言基础组成-数组 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的数组,数组 ...
- Go语言基础之数组
Go语言基础之数组 本文主要介绍数组(array)及它的基本使用. Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化 ...
- 第二十四节:Java语言基础-讲解数组的综合应用
数组的综合应用 // 打印数组 public static void printArray(int[] arr) { for(int x=0;x<arr.length;x++) { if(x!= ...
- GO学习-(8) Go语言基础之数组
Go语言基础之数组 Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 基本语法: // 定义一个长度为3元素类型为 ...
- go语言基础之数组比较和赋值
1.go语音基础之数组比较和赋值 示例: package main //必须有个main包 import "fmt" func main() { //支持比较,只支持 == 或 ! ...
- js脚本语言基础和数组
js和PHP中,字符串赋值:要使用"双引号"或"单引号"引起来:例如:var c="你好"不同类型进行数学运算,要转换,类型转换:强制转换p ...
随机推荐
- 初探ASP.NET Core 3.x (3) - Web的运作流程和ASP.NET Core的运作结构
本文地址:https://www.cnblogs.com/oberon-zjt0806/p/12215717.html 注意:本篇大量地使用了mermaid绘制图表,加载需要较长的时间,请见谅 [TO ...
- 团队第一次作业(软工C#造梦厂)
一.团队简介 a.团队名称:软工C#造梦厂 b.队员列表 姓名 学号 张旭(组长) 201731024123 周成杰 201731024136 邹扬锋 201731024134 赵俊安 2017310 ...
- 面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他
初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...
- 工具 之uniq
uniq命令的作用:显示唯一的行,对于那些连续重复的行只显示一次!接下来通过实践实例说明. [关键字] Linux Shell uniq 看test.txt文件的内容,可以看到其中的连续重复行 [ro ...
- ReactNative---setState与性能的平衡
setState用来更新RN的视图层显示,每一次setState操作都会更新整个 视图,于是对应的是性能消耗,在某些特殊情况下就会造成卡顿 app假死等问题: 因此个人使用setState中总结的原则 ...
- IdentityServer4身份认证授权入门
一.简介 IdentityServer4 是为ASP.NET Core 系列量身打造的一款基于 OpenID Connect 和 OAuth 2.0 认证框架 特点: 1.认证服务 2.单点登录登出( ...
- zabbix3.4搭建微信报警
身为小白的我在历经被百度查到的资料坑了无数次之后,终于找到了一个正确的文档,下面是我自己的对于安装过程的理解与阐述. 一.申请微信企业号,获取以下数据. 企业ID:(在我们企业最下方可以看到) 应用的 ...
- .Net Core初识以及启动配置
.net程序员为什么要学习.net core .Net Core 是.Net的未来,微软在19年 5月已经明确说明,未来只有.Net 5(=.NET Core vNext),.Net 5是.net c ...
- ros之自定义服务数据
如何自定义服务数据 string name Uint8 age Uint8 sex Uint8 unknown =0 Uint8 male =1 Uint8 female = 2 (上面的是Reque ...
- cookie理解与实践【实现简单登录以及自动登录功能】
cookie理解 Cookie是由W3C组织提出,最早由netscape社区发展的一种机制 http是无状态协议.当某次连接中数据提交完,连接会关闭,再次访问时,浏览器与服务器需要重新建立新的连接: ...