关于C语言中数组的使用

论坛 期权论坛     
匿名小用户   2019-10-20 18:16   334   0
<br><h1 align="center"><strong>数组</strong></h1>
<h2>数组定义<br></h2>
<p>如何声明一个数组:<span><br></span></p>
<p><span> 数据类型 数组名称[长度]; </span>
</p>
<p>C语言中的数组初始化是有三种形式的,分别是:</p>
<p>1、<span> 数据类型 数组名称[长度n] = {元素1,元素2…元素n};</span></p>
<p>2、<span> 数据类型 数组名称[] = {元素1,元素2…元素n};</span></p>
<p>3、<span> 数据类型 数组名称[长度n]; </span><span>数组名称[0] = 元素1; 数组名称[1] = 元素2; 数组名称[n-1] = 元素n;</span></p>
<p>我们将数据放到数组中之后又如何获取数组中的元素呢?</p>
<p>获取数组元素时:<span> 数组名称[元素所对应下标]; </span></p>
<p>如:初始化一个数组 int arr[3] = {1,2,3}; 那么arr[0]就是元素1。</p>
<p><span style="color:#FF0000;">注意:</span></p>
<p>1、数组的下标均以0开始;</p>
<p>2、数组在初始化的时候,数组内元素的个数不能大于声明的数组长度;</p>
<p>3、如果采用第一种初始化方式,元素个数小于数组的长度时,多余的数组元素初始化为0;</p>
<p>4、在声明数组后没有进行初始化的时候,静态(static)和外部(extern)类型的数组元素初始化元素为0,自动(auto)类型的数组的元素初始化值不确定。</p>
<strong></strong>
<h2><strong>数组传递</strong><br></h2>
<p>数组可以由整个数组当作函数的参数,也可以由数组中的某个元素当作函数的参数:</p>
<p>1、整个数组当作函数参数,即把数组名称传入函数中,例如:</p>
<p><img alt="" height="245" src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-f88029ae1b2180a75f9ebc87b61f3f6f.jpg" width="232"></p>
<p>2、数组中的元素当作函数参数,即把数组中的参数传入函数中,例如:</p>
<p><img alt="" src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-216a2d66b4f487221ad60f3fa278accb.jpg"></p>
<p></p>
<p align="left">数组作为函数参数时注意以下事项:</p>
<p align="left">1、数组名作为函数实参传递时,函数定义处作为接收参数的数组类型形参既可以指定长度也可以不指定长度。</p>
<p align="left">2、数组元素作为函数实参传递时,数组元素类型必须与形参数据类型一致。</p>
<p align="left"><br></p>
<p align="left">实例:替换数组中的最大元素</p>
<p align="left">#include &lt;stdio.h&gt;<br>
void replaceMax(int arr[],int value)<br>
{<br>
int max = arr[0];<br>
int index = 0;<br>
int i;<br>
for(i=1;i&lt;5;i++)<br>
{<br>
if(arr[i]&gt;max)<br>
{<br>
max=arr[i]; //将数组中较大的数赋值给max<br>
index = i; //记录当前索引<br>
} <br>
} <br>
arr[index] = value;<br>
}<br><br>
int main()<br>
{<br>
int arr1[] = {10,41,3,12,22};<br>
int arr2[] = {1,2,3,4,5};<br>
int i;<br>
replaceMax(arr1 ,arr2[0] ); //将数组arr1和数组arr2的第一个元素传入函数中<br>
for(i=0;i&lt;5;i++)<br>
{<br>
printf("%d ",arr1[i]); <br>
}<br>
return 0; <br></p>
<p align="left">}<br></p>
<p align="left">运行结果<br></p>
<p align="left"><img alt="" src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-990b42ceaeca46fb8661c693f7665309"></p>
<p align="left"><br></p>
<h2 align="left"><strong>冒泡排序法</strong></h2>
<p>以升序排序为例冒泡排序的思想:相邻元素两两比较,将较大的数字放在后面,直到将所有数字全部排序。</p>
<p>实例<strong> : </strong>有10人要参加比赛,按大小个升序排队,用冒泡排序写一个小程序进行排序</p>
<p>#include &lt;stdio.h&gt;<br>
int main()<br>
{<br>
double arr[]={1.78, 1.77, 1.82, 1.79, 1.85, 1.75, 1.86, 1.77, 1.81, 1.80};<br>
int i,j;<br>
printf("\n************排队前*************\n");<br>
for(i=0;i&lt;10;i++)<br>
{<br>
if(i != 9) <br>
printf("%.2f, ", arr[i]); //%.2f表示小数点后精确到两位<br>
else<br>
printf("%.2f", arr[i]); //%.2f表示小数点后精确到两位<br>
}<br>
for(i=8; i&gt;=0; i--)<br>
{<br>
for(j=0;j&lt;=i;j++)<br>
{<br>
if(arr[j]&gt;arr[j+1] ) //当前面的数比后面的数大时<br>
{<br>
double temp; //定义临时变量temp<br>
temp=arr[j];//将前面的数赋值给temp<br>
arr[j]=arr[j+1] ; //前后之数颠倒位置<br>
arr[j+1]=temp; //将较大的数放在后面 <br>
} <br>
} <br>
}<br>
printf("\n************排队后*************\n");<br>
for(i=0;i&lt;10;i++)<br>
{<br>
if(i != 9) <br>
printf("%.2f, ", arr[i]); //%.2f表示小数点后精确到两位 <br>
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:50
帖子:1079
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP