1. 程式人生 > >一維陣列資料的處理(排序,刪除,插入)

一維陣列資料的處理(排序,刪除,插入)

注意點
一:排序後陣列轉移儲存,以便後續操作,比如插入處理
二:熟練掌握陣列的錄入,排序處理
三:掌握障眼法刪減陣列元素

//
//  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; }