学习一维数组中对课上程序的改进
首先附图课上的程序
在看到这个程序的时候,我就实操了一下,发现其实相邻的数据调换好像能够拓展成全数据顺序排列,那就开始吧!
首先第一步是分析上面每一段的大概用处。
#include <stdio.h>
#define N 10
void main()
{
int a[N],i,t;
for(i=0;i<N;i++){ //输入数据
printf("a[%d]:",i);
scanf("%d",&a[i]);}
for(i=0;i<N;i++) //控制顺序
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<N;i++)
printf("%d",a[i]);
}
三个整数变量,a[N]是一维数据组,i为数据组中的下标号改变量(记得是从0~N-1哦),t是一个中间量。然后上面的代码大概大家也能很快的理解,我最主要去修改的是控制顺序这一段。在修改后的代码里我加入了d,用于变化比较时的数组下标号。
#include <stdio.h>
#define N 10
void main()
{
int a[N],i,d,t;
for(i=0;i<N;i++)
{
printf("a[N]:");
scanf("%d",&a[i]);
}
for(i=0;i<N-1;i++)
{
for(d=i+1;d<N-1;d++)
if(a[i]>a[d])
{
t=a[i];
a[i]=a[d];
a[d]=t;
}
}
printf("\n");
for(i=0;i<N;i++)
printf("%d\t",a[i]);
}
这里关注一点就是在d的初值是i+1,因为在每次循环的时候,i会变大,d也应该变大!但是如果是d的初值是1,就会发现以下情况。
第二点需要注意的就是一定要注意空格,因为如果不注意,你可能得到一长串你也不认识的数据hhhhh。
当然说了正确的方法,就要说一下离谱的思路
其实这个问题是昨天遗留的……自己太懒然后就去睡觉了。我最开始设想是求ave=sum/N,然后每个数和平均数比较,但是后面一想,平均数好像没啥用emmm(因为可能数值偏差比较严重);第二次就想能不能求MAX,MIN,设想很好但是实际真的还不如平均数hhhhhhh(PASS;那我就在原程序的基础上再叠一层嵌套呗,这种能行吧……尝试了设想了一下,要是这个N是1000,机器岂不是得boom,所以不行。
今天就到这儿啦,明天继续折腾自己~
有一说一,今天最好的学姐在找工作,然后和我将实习的重要性,我突然又开始焦虑了,会不会大学毕业,我就成为社会垃圾哇呜呜呜呜呜。希望自己能好好加油,未来的公司能包吃,加班无所谓!!!!!