温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

              一维数组的简单总结

发布时间:2020-06-27 17:53:07 来源:网络 阅读:635 作者:buzhbuzh 栏目:编程语言

一     使用数组的目的:可以让多个数据使用一个变量,用不同的下标加以区分;

           数组的需要先定义后使用,int a[10];//定义了一个长度为10,存放int型数据的数组;以下定义是错误的:

       int a[a+1];//不能有表达式

        int  b[n];//不能有字母

        int n=10;

        int a[n];//错误,有字母

总结:[ ]中的值只能是正整数

 二 数组的引用:通过下标引用

      int a[10];这十个元素分门别为a[0]至a[9];引用时注意不要下标越界;这十个数在内存中连续存放

三 数组的赋值:数组的赋值需要在未定义完时候进行,如 int a[10]={1,2,4};不可以写成 :

     int a[10];

     a[10]={1,2};

     int a[10]={1,2};//不完全赋值,a[0]到a[1]值分别为1,2,其余均为0(注意不是垃圾数据);

    定义数组不声明数组个数的时候必须赋初值,数组个数取决于初值个数;

      int a[]={1,1,1};//数组个数为3

四 数组的遍历使用for语句;

    数据在数组中存储的三个特点:

    1.从0开始;

    2.连续存放;

    3.上述两个特点必须动态满足(不论删除数据还是增加数据);

五 对于数组的输入,插入,删除,求均值,排序的讲解:

     编写程序,对若干名同学成绩进行处理,包括输入成绩,删除成绩,插入成绩,求平均值,按升序排序:

     输入成绩:因为输入学生不定,所以不能提前预知输入的个数,所以我们规定当输入为 -1 时候结束输入       

     程序代码:

        printf("请输入数据(当输入-1时候结束):\n");

        scanf("%d", &num);

        for(i=0;i!=num;i++)

        {

                  score[i]=num;

                  printf("请输入数据(当输入-1时候结束):\n"); 

                  scanf("%d", &num);

       }              

     插入成绩:插入成绩分两步完成 第一步是查找 第二步插入(找到原有成绩,并将新成绩插到原有成绩之前)

     1.查找的第一步是找到原有成绩,第二步是找到其下标i,第三步是输入要插入的成绩

     2.插入采用前插法,具体查找的过程:

         已知:插入成绩 newScore

                    数组的有效元素:count

                    插入点下标: j

        插入成绩的 伪代码:

                    for(i=count;i>j;i--)

                    {

                        score[i]=score[i-1];

                    }

                    score[i]=newScore;

                    count;

        将倒数第二赋值给倒数第一,将倒数第三赋值给倒数第二,找到将原有插入点下标的数据赋值给后一位,留下的空位由插入点数据补充;

       3.查找的目的是找到旧成绩的下标

                伪代码:

                for(i=0;i<count&&score[i]!=oldScore;i++)

                        ;

                if(i>count)

                    printf("插入错误");

                else

                    ;//真正插入的代码

        删除成绩:

            1.输入要删除的成绩

            2.找到这个成绩(从头依次查找)

            3.删除这个成绩(将之后的成绩依次提前一位)        

        

            伪代码如下

             printf("请输入删除的成绩:\n");

            scanf("%d" , &delescore);   

            for(i = 0; i<count&&score[i]! = delescore;i++)

                ;

            if(i>count)

                printf("未有要删除的成绩\n");

            else

             {   

                for(;i<count-1;i++)

                 {

                        score[i]=score[i+1];

                }

                

            }

     求和:相加除以人数即可:

     按升序排序:将一堆混乱的数据从新有小到大排序

        for(i = 0;i < count ;i++)//控制放置最小的数字

            for(j = i+1;j < count ;j++)

                {

                        if(score[i] >score[j])//将小的放前面

                        {

                                num = score[j];

                                score[j] =score[i];

                                score[i] = num;

                                

                          }  

                }

                    

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI