一维数组数据的处理(排序,删除,插入)

来源:互联网 发布:淘宝宝贝仓库在哪 编辑:程序博客网 时间:2024/06/08 11:42

注意点
一:排序后数组转移储存,以便后续操作,比如插入处理
二:熟练掌握数组的录入,排序处理
三:掌握障眼法删减数组元素

////  main.c//  123////  Created by utotao on 2017/6/15.//  Copyright © 2017年 乙一. All rights reserved.//#include <stdio.h>#include <unisted.h>#include <stdlib.h>int main(int argc, const char * argv[]){    //定义    const int N = 4;    int i,j,deletenum;    int temp,charu;    int count = 0;    int count1 = 1;    int count2 = 0;    int count3 = 0;    int nums[N],nums1[N];    int num[N + 1];    //录入排行榜    for(i = 0;i <  N;i++)    {        printf("请输入第%d个元素:\n",i + 1);        scanf("%d",&nums[i]);    }    //战斗力从大到小排序    for(i = 0;i < N - 1;i++)    {        for(j = 0;j < N - i - 1;j++)        {            if(nums[j] < nums[j + 1])            {            temp = nums[j];            nums[j] = nums[j+1];            nums[j + 1] = temp;            }        }    }    //打印排列好的战斗力    printf("战斗力从大到小依次为:\n");    for(i = 0;i < N;i++)    {        printf("%d\t",nums[i]);    }    printf("\n");    //将nums[]储存到nums1[]当中    for(i = 0;i < N;i++)    {        nums1[i] = nums[i];    }    //输入需要删除的元素值    //寻找该元素值    while(1)    {    printf("请输入需要删除的元素:\n");    scanf("%d",&deletenum);    //后续操作    for(i = 0;i < N;i++)    {        if(nums[i] == deletenum)        {            count2++;        }    }    //count2 == 0说明输入数据不在数组之中    if(count2 == 0)    {        printf("所输入的值不在数组之中,无法删除!\n");    }    //    else    {    for(i = 0;i < N;i++)    {        if(nums[i] == deletenum)//找到了要删除的数组元素值        {            //将之后的元素之一覆盖并且删除一个数组长度            for(j = i;j < N;j++)            {                nums[j] = nums[j + 1];            }            count++;            break;        }    }        //输出 删除过后的数组        printf("所输入的数据已经删除!\n");        printf("删除过后的数组元素:\n");        for(i = 0;i < N - count1;i++)        {            printf("%d\t",nums[i]);        }        count1++;    }        count2 = 0;        printf("\n");        if(count1 == 5)        {            printf("数组元素已经全部删了!\n");            break;        }    }    //输入想插入的值    printf("请输入想要插入的值:\n");    scanf("%d",&charu);    for(i = 0;i < N;i++)    {        if(charu <= nums1[i])        {            count3++;//将插入的位置i赋值给count3        }    }    printf("count3=%d\n",count3);    //4 3 1 0//2(2位置)    //4 3 2 1 0    //count3 = 2;    //nums[2] = nums[1],num2[3] = nums[2]    for(i = 0;i < count3;i++)    {        num[i] = nums1[i];    }//插入之前的值传递给num[],0,1    num[count3] = charu;//插入的值传递给num[],2    for(i = count3;i < N + 1;i++)// 插入之后的值传递给num[],3,4    {        num[i + 1] = nums1[i];    }    //输出插入之后的新数组    printf("插入新元素之后的数组为:\n");    for(i = 0;i < N + 1;i++)    {        printf("%d\t",num[i]);    }    return 0;}
阅读全文
0 0