C_数组详解

数组:

一 一维数组

1.1 一维数组的定义:

类型符 数组名[常量表达式];
int a[10];

说明:

1.数组的命名规则遵循标识符命名规则。
2.定义时需要指定元素的个数。方括号里的常量表达式表示元素的个数。
3.常量表达式中不能包含变量;如:int a[n];不合法,c语言不允许对数组的大小作动态的定义。

1.2 引用一维数组:

格式:
数组名[下标];
#include<stdio.h>
int main() {
#if(0)//逆序输出一个数组的元素
#endifint a[10],i;for(int i = 0;i < 10;i++) {a[i] = i;}for(i = 9;i > 0;i--) {printf("%d ",a[i]);}printf("\n");return 0;
}

1.3 一维数组的初始化:

1.在定义数组时对全部数组赋予初值;
eg: int a[10] = {0,1,2,3,4,5,6,7,8,9};
2.可以给数组中的一部分赋值
eg: int a[10] = {0,1,2,3,4};//系统会给后面未付赋值的空间赋值0.
3.如果对数组去不赋值可以不定义长度。
eg: int a[5] = {0,1,2,3,4};int a[] = {0,1,2,3,4};
#include<stdio.h>
int main() {
#if(0)//逆序输出一个数组的元素int a[10],i;for(int i = 0;i < 10;i++) {a[i] = i;}for(i = 9;i > 0;i--) {printf("%d ",a[i]);}printf("\n");
#endif#if(1)//利数组求Fibonacci数列,前二十项
#endifint i, fi[20] = {1,1};for(i = 2;i < 20;i++) {fi[i] = fi[i-2] + fi[i-1];}for(i = 0;i < 20;i++) {if(i%5 == 0) {//每行5个数换行printf("\n");}printf("%12d",fi[i]);}printf("\n");return 0;
}
#include<stdio.h>
int main() {
#if(0)//逆序输出一个数组的元素int a[10],i;for(int i = 0;i < 10;i++) {a[i] = i;}for(i = 9;i > 0;i--) {printf("%d ",a[i]);}printf("\n");
#endif#if(0)//利数组求Fibonacci数列,前二十项int i, fi[20] = {1,1};for(i = 2;i < 20;i++) {fi[i] = fi[i-2] + fi[i-1];}for(i = 0;i < 20;i++) {if(i%5 == 0) {//每行5个数换行printf("\n");}printf("%12d",fi[i]);}printf("\n");
#endif#if(1)//利用冒泡法进行排序。int a[10];int i,j,k;printf("请输入10个数字:\n");for(i = 0;i < 10;i++) {scanf("%d",&a[i]);}printf("\n");for(i = 0;i < 9;i++) {for(j = 0;j < 9-i;j++) {if(a[j] > a[j+1]) {k = a[j];a[j] = a[j+1];a[j+1] = k;}}}printf("数字的大小顺序是:\n");for(i = 0;i < 10;i++) {printf("%4d",a[i]);}printf("\n");
#endifreturn 0;
}

二 二维数组

2.1 二维数组定义

类型说明符 数组名[常量表达式][常量表达式];
eg:int [3][4];//三行四列的数组,形象的可容认为三行四列的矩阵float [2][3];

说明:在C语言中,二维数组可以看成是特殊的一维数组,实质上在内存中是连续的地址存储。是线性存储的。几行几列是逻辑上的表示。

2.2 二维数组的引用

格式:
数组名[下标][下标];
a[2][3];

2.3 二维数组的初始化

1.分行给二维数组赋初值
eg: int a[3][4] = {{1,2,3,4},{2,3,4,6},{1,3,4,5}};
2.可以将所有的值放在一个打括弧里。和线性存储一致。这样可以对第一维的长度可以不写,第二维的长度必须写。
eg: int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
3.也可以对局部元素赋初值
eg: int a[3][4] = {{1},{0,5},{0,0,9,8}};
#if(0)
//二维数组练习
//1.一个两行三列的矩阵转换成三行两列的矩阵int a[2][3] = {{1,2,3},{4,5,6}};int b[3][2],i,j;printf("a矩阵为:\n");for(i = 0;i < 2;i++) {for(j = 0;j < 3;j++) {printf("%5d",a[i][j]);b[j][i] = a[i][j];}printf("\n");}printf("b矩阵:\n");for(i = 0;i < 3;i++) {for(j = 0;j < 2;j++) {printf("%5d",b[i][j]);}printf("\n");}#endif#if(1)//有一个3*4的矩阵,求出矩阵中最大的一个数int a[3][4] = {{23,4,-2,3},{4,45,9,-45},{31,67,45,0}};int i,j,row,col,max;max = a[0][0];for(i = 0;i < 3;i++) {for(j = 0;j < 4;j++) {if(a[i][j] > max) {max = a[i][j];row = i;col = j;}}}printf("最大的元素为:%d\n 第%d行\n 第%d列\n",max,row,col);
#endifreturn 0;
}

三 字符数组

3.1 定义字符数组

char c[10];//包含10个字符

3.2 字符数组的初始化

char c[12] = {'I',' ','a','m',' ','l','i','k','e','c','/','c++'};

说明:字符数组必须初始化,如果提供的处置个数大于数组的个数则会出现语法错误,如果小于数组长度,系统会给最后一个自动补'\0';如果两者相等即可省略个数。 char c[] = {'I',' ','a','m',' ','l','i','k','e','c','/','c++'};
二维字符数组初始化;
char diamond[5][5] = {{'','',''},{'','','','',''},{'','','','',''},{'','','','',''},{'','',''}}//代表一个菱形

3.3 字符数组的引用

#include<stdio.h>
int main() {
#if(1)
//利用字符二维数组输出一个菱形char diamond[5][5] = {{' ',' ','*'},{' ','*',' ','*',' '},{'*',' ',' ',' ','*'},{' ','*',' ','*',' '},{' ',' ','*'}};//没有的字符有个空格int i,j;for(i = 0;i < 5;i++) {for(j = 0;j < 5;j++) {printf("%c",diamond[i][j]);}printf("\n");}#endifreturn 0;
}

3.4 字符串和字符串结束的标志

在C语言中,字符串是作为字符数组来处理的。定义一个字符串就会利用一个一维数组来存放。字符中的字符是逐个放到数组中的,两者的长度是相同的。
为了测定字符串的实际长度,C语言规定了一个“字符串结束的标志”,其中有一个'\0',则'\0'前面的为有效长度。

字符串常量使字符数组初始化

char c[] = {"I love C/C++"};
or
char c[] = "I love C/C++";

而下面的并不等价
char c[12] = {'I',' ','l','o','v','e','C','/','C','+','+'};
不等价
char c[12] = {'I',' ','l','o','v','e','C','/','C','+','+','\0'};

说明:字符数组并不要求他的最后一个字符'\0',根据自己的需求定义。而系统会给字符串添加一个'\0',便于测定字符串的实际长度。由于字符串的处理方式是字符数组的形式,为了处理方式一致可对字符数组也认为的添加'\0',便于处理。

转载于:https://www.cnblogs.com/intelwisd/p/8060419.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS节选——选择器

CSS&#xff0c;cascading style sheet&#xff0c;层叠样式表&#xff0c;请留意层叠概念。 css3为了区分伪类和伪元素&#xff0c;伪元素采用双冒号写法。 常见伪类——:hover,:link,:active,:target,:not(),:focus。 常见伪元素——::first-letter,::first-line,::before…

python游戏循环设置_Pygame:游戏循环前的初始菜单

我正在制作一个this game的版本&#xff0c;并尝试将起始菜单设置为&#xff1a;我的计划是先做surface.fill(overlaycolor)&#xff0c;然后将这个图像blitting到屏幕上。在一个while循环中。之后&#xff0c;在用户想玩(另一个问题除外)之后&#xff0c;我们将进入另一个whil…

vue.js基础知识篇(7):表单校验详解

目录 网盘 第12章:表单校验 1.npm安装vue-validator $ npm install vue-validator 代码示例: var Vuerequire("vue"); var VueValidatorrequire("vue-validator"); Vue.use(VueValidator); 2.直接使用script标签引入vue.js 要下载vue-validator&#xff0c…

修改linux绑定的域名,手工修改linux系统下DA面板绑定的域名

举例说明手工修改DA面板下虚拟主机ryan绑定的域名&#xff0c;只需要 vi /usr/local/directadmin/data/users/ryan/httpd.conf代码如下&#xff1a;# Auto generated apache config file by DirectAdmin version 1.46.3# Modifying this file is not recommended as any change…

在JUnit测试中使用Builder模式

这并不是要成为技术含量很高的职位。 这篇文章的目的是为您提供一些指导&#xff0c;以使您的JUnit测试生活更加轻松&#xff0c;使您能够在几分钟内编写复杂的测试场景&#xff0c;并具有易于阅读的测试优势。 单元测试中有两个主要部分&#xff0c;需要编写许多引导程序代码&…

SQL数据库中临时表、临时变量和WITH AS关键词创建“临时表”的区别

原文链接&#xff1a;https://www.cnblogs.com/zhaowei303/articles/4204805.html SQL数据库中数据处理时&#xff0c;有时候需要建立临时表&#xff0c;将查询后的结果集放到临时表中&#xff0c;然后在针对这个数据进行操作。 创建“临时表”&#xff08;逻辑上的临时表&…

python 三维绘图库_Python第三方库matplotlib(2D绘图库)入门与进阶

Matplotlib一 简介&#xff1a;Matplotlib是一个Python 2D绘图库&#xff0c;它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。 Matplotlib可用于Python脚本&#xff0c;Python和IPython shell&#xff0c;Jupyter笔记本&#xff0c;Web应用程序服务…

zbb20170626 myeclipse 2017 ci 构建 spring hibernate struts jar

转载于:https://www.cnblogs.com/super-admin/p/7081209.html

linux处理机调度实验报告,模拟Linux操作系统下处理机调度实验报告

在采用多道系统的设计程序中,往往有若干进程同时处于就绪状态。当就绪状态进程数大于处理机数时,就必须按照某种策略来决定哪些进程优先占用处理机。本实验模拟在单处理机情况下处理机调度处理机调度一、实验目的&#xff1a;1、了解Linux下Emacs编辑器的使用方法&#xff0c;掌…

Java线程:保留的内存分析

本文将为您提供一个教程&#xff0c;使您可以确定活动应用程序Java线程保留Java堆空间的数量和位置。 将提供来自Oracle Weblogic 10.0生产环境的真实案例研究&#xff0c;以使您更好地理解分析过程。 我们还将尝试证明过多的垃圾回收或Java堆空间的内存占用问题通常不是由真正…

软件测试白皮书-等价类

设有一个档案管理系统&#xff0c;要求用户输入以年月表示的日期。假设日期限定在1990年1月~2049年12月&#xff0c;并规定日期由6位数字字符组成&#xff0c;前4位表示年&#xff0c;后2位表示月。现用等价类划分法设计测试用例&#xff0c;来测试程序的"日期检查功能&qu…

深入css布局 (1) — 盒模型 元素分类

深入css布局&#xff08;1&#xff09;—— 盒模型 & 元素分类 “ 在css知识体系中&#xff0c;除了css选择器&#xff0c;样式属性等基础知识外&#xff0c;css布局相关的知识才是css比较核心和重要的点。今天我们来深入学习一下css布局相关的知识。” 首先来列下大纲 盒模…

批改网禁止粘贴怎么破_教育部对家长批改作业表态了,明令禁止!你怎么看?...

互联网的发展&#xff0c;的确方便了现代人生活。视频电话、出去买东西你都不用带钱带卡&#xff0c;手机一扫就可以完成支付。很多中小学的家长都会建一个家长群&#xff0c;方便老师和家长的沟通。这个群可以说是家长和学校的桥梁和纽带&#xff0c;家长们为了支持老师的工作…

电子科大专科c语言作业1,电子科大15春《C语言(专科)》在线作业试卷.docx

电子科大 15 春《 C 语言(专科)》在线作业一、单选题(共20 道试题&#xff0c;共100 分。)1.对于 int*p;inta[];pa;的合法运算 ()a;pa;p; 相当于 a;p; 相当于 a[1];若 p 中的地址为 100 则 p; 运算后&#xff0c;则其值为 100-----------------选择&#xff1a; C已知 intb; 则…

MapReduce算法–顺序反转

这篇文章是介绍MapReduce算法的系列文章的另一部分&#xff0c;该书在使用MapReduce进行数据密集型文本处理中找到。 先前的文章是Local Aggregation &#xff0c; Local Aggregation PartII和创建共现矩阵 。 这次我们将讨论阶数反转模式。 顺序反转模式利用的MapReduce来计算…

xss防御

http://blog.csdn.net/ghsau/article/details/17027893转载于:https://www.cnblogs.com/jiangjing/p/8076216.html

移动端页面字体在微信被放大,导致排版错乱

在开发微信页面的时候&#xff0c;之前一直没有测出这个问题。直到某天领导的手机出现了排版错位的问题&#xff0c;拿着手机质问我的工作态度。 Google了一下发现原来微信调整了字体大小会放大网页的字体&#xff0c;导致排版混乱。通过设置可以禁止网页字体被放大&#xff1a…

液压支架销轴力学计算分析研究_基于RFID射频精准定位的智能开采研究与应用...

一、项目背景近年来随着智能开采技术的不断发展&#xff0c;装备和新工艺不断更新换代,在智能开采中&#xff0c;对采煤机位置的精准定位是能否实现智能开采的关键&#xff0c;只有准确无误地获取煤机的准确位置&#xff0c;才能实现工作面的智能化开采&#xff0c;进而提高生产…

cf 821E Okabe and El Psy Kongroo(矩阵快速幂)

链接&#xff1a;http://codeforces.com/problemset/problem/821/E 分析&#xff1a;由于有边界而且不同段边界还不同&#xff0c;直接算是不行的。。k是1e18&#xff0c;dp也不行。。用一个16维的向量表示某一列16个位置可能的种类数&#xff0c;到下一列的转移矩阵容易得到&a…

您是否能及时编译?

还记得上次被C开发人员嘲笑的时候吗&#xff1f; Java如此繁琐&#xff0c;以至于他们甚至都不会考虑使用这种语言&#xff1f; 在许多方面&#xff0c;这一概念仍然成立。 但是对于典型的用法&#xff08;在大型企业的骨干中&#xff09;&#xff0c;Java性能绝对可以与许多竞…