当前位置:天才代写 > tutorial > C语言/C++ 教程 > c/c++数组排序、计较平均值、最大、小值

c/c++数组排序、计较平均值、最大、小值

2017-11-03 08:00 星期五 所属: C语言/C++ 教程 浏览:389

副标题#e#

最近在辅佐其它人的进修中发明白很多问题就数组和局部变量和全居变量的两道例题举办刨析和思考!

排序操纵

#include
void sort(array,n)
int array[];
int n;
{
int i,j,k,t;
for(i=0;i)/* 轮回9次,这里轮回9次因为分列到第9次的时候最大的已经自动被分列到最后了 */
{
k=i;[/LIGHT] /* 把i记录下来,以便举办变更操纵 */
for(j=i+1;)j/* 在外部i轮回内举办第二次轮回,查抄所有的剩余元素 */
{
if(array[j])/* 操作k比拟j轮回的元素巨细是否比外部i轮回当前元素的值 */
{
k=j; /* 将k的值界说为j轮回的最小元素的(下标),以便举办变更操纵 */
}
t=array[k]; /* 将t的值界说为j轮回的最小值元素的值 */
array[k]=array[i]; /* 把j轮回内的(也就是array[j])的值,变更为此次外部i轮回元素的值 */
array[i]=t; /* 将外部i轮回的当前元素的值替换为前面以t为姑且存储的(也就是array[j])的值 */
}
}
}
main()
{
int a[10],i; /* 界说a[10]为一个数组,用于输入10个差异的数字;界说用于轮回的便量i; */
printf("enter the array\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]); /* 操作这10次轮回给每个数组元素精心赋值操纵从a[0]到a[9] */
}
sort(a,10);/* 把数组a的各数组元素地点和数组数量通报给自界说排序涵数的形式参数 */
printf("the sorted array:\n");
for(i=0;i<10;i++)
{
printf("%d",a[i]); /*操作10次轮回把排序后的数组元素打印在屏幕上*/
}
printf("\n");
}


#p#副标题#e#

此篇代码操练序号留意的是用数组名作涵数实际参数的时候,不是把数组的值通报给形式参数,

而是把实际参数数组的起始地点通报给形式参数数组,这样两个数组就配合占用一段内存单位,而

不需要成立两个差异的数组挥霍内存空间.

求平均值和找最大最小值

#include
floatmax; /* 界说全局变量max用于存储最大的数 */
floatmin; /* 界说全居变量min用于存储最小的数 */
main()
{
float count_avg(); /* 声明自界说涵数的数据范例 */
float score[10]; /* 界说一个数组用于存储输入数字 */
float score_avg;
int i; /* 界说用于轮回的变量i */
for(i=0;i<10;i++) /* 操作一个为10次的轮回为score[0]-score[9]的数组元素输入值*/
{
scanf("%f",&score); /* 名目化输入 */
}
score_avg =count_avg (score,10); /* 挪用count_avg涵数计较平均值,在实际参数中
   带如数组score的地点和数组元素个数 */
printf("avg=%6.2f max=%6.2f min=%6.2f",score_avg,max,min); /* 将平均值,最大值,
   最小值打印在屏幕上 */
}
float count_avg(array,score_num) /* 界说count_avg这个自界说涵数的数据范例为浮点形 */
float array[]; /* 界说形式参数array[]这个数组为浮点形 */
int score_num; /* 界说形式参数score_num为正形,用于获得实际参数也就是数组的元素个数 */
{
inti; /* 界说用于轮回的变量i */
float sum =array[0]; /* 预先配置总数初始值为array[0]以便于后头比拟巨细的操纵 */
float avg; /* 界说avg也就是平局值存储变量为浮点形 */
max=array[0]; /* 预先配置最大值初始值为array[0]以便于后头比拟大的操纵 */
min=array[0]; /* 预先配置最小值初始值为array[0]以便于后头比拟小的操纵 */
for(i=1;i<10 ;i++ ) /* 操作一个为9次的轮回逐个和array[0]举办比拟找出最大值和最小值 */
{
if(array>max) /* 操作已经存储的最大值和当前轮回下的array举办比拟(找大计较) */
{
max=array; /* 切合条件的存储为最大值.留意:(这里操作轮回判定重复的比拟操纵
   慢慢替换最大值最后获得最大的数)*/
}
elseif (array<min) /* 操作已经存储的最小值和当前轮回下的array举办比拟(找小计较) */
{
min=array; /* 切合条件的存储为最小值.留意:(这里操作轮回判定重复的比拟操纵慢慢
   替换最小值最后获得最大的数)*/
}
sum += array; /* 计较个数组元素的总和 */
}
avg =sum / score_num; /* 计较出最后的平均值 */
return(avg); /* 返回平均值 */
}

此例需要留意的是操作全局变量可以淘汰实际参数和形式参数的个数,从而淘汰内存空间和通报值数据是的时间开销.另外c语言也划定外部数组可以富饶初值,而局部数组是不能赋予初值的,发起不在须要的时候不要利用全局变量,因为1:全局变量在措施的全部执行进程中都占用存储单位,而不是仅在需要的时候开发单位.2:它使涵数的通用性低落了,因为涵数在执行进程中要依赖于其他地址的外部变量.3:全局变量利用过多,会低落措施的清晰性,难以清楚判定每个瞬时各个外部变量的值.在各个涵数执行的时候城市改变外部变量的值,导致措施堕落!4.假如外部变量不在文件开头界说,那么它只限与界说点到文件终了这段才起浸染.

在进修中应该多留意细节这些对象在java中也是雷同的,但愿对各人有所开导!

 

    关键字:

天才代写-代写联系方式