1-4 数组元素的区间删除 (20 分)
生活随笔
收集整理的這篇文章主要介紹了
1-4 数组元素的区间删除 (20 分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:
給定一個順序存儲的線性表,請設計一個函數刪除所有值大于min而且小于max的元素。刪除后表中剩余元素保持順序存儲,并且相對位置不能改變。
函數接口定義:
int Delete( int A[], int L, int minA, int maxA );其中A是整型數組,存儲原始線性表的元素;L是表長,即A中元素的個數;minA和maxA分別為待刪除元素的值域的下、上界。函數Delete應將A中所有值大于minA而且小于maxA的元素刪除,同時保證表中剩余元素保持順序存儲,并且相對位置不變,最后返回刪除后的表長。
裁判測試程序樣例:
#include <stdio.h>#define MAXN 20int Delete( int A[], int L, int minA, int maxA );int main() {int A[MAXN], L, minA, maxA, i;scanf("%d", &L);for (i=0; i<L; i++) scanf("%d", &A[i]);scanf("%d %d", &minA, &maxA);L = Delete(A, L, minA, maxA);for (i=0; i<L; i++) printf("%d ", A[i]);printf("\n");return 0; }/* 你的代碼將被嵌在這里 */輸入樣例:
10
4 -8 2 12 1 5 9 3 3 10
0 4
輸出樣例:
4 -8 12 5 9 10
先上錯誤代碼①
int Delete( int A[], int L, int minA, int maxA ) {int i,k,h=L;for(i=0;i<h;i++){if(A[i]<maxA&&A[i]>minA){for(k=i+1;k<h;k++){A[k-1]=A[k];}h=L-1;}}return h; }第一次的錯因還不清楚
上錯誤代碼②
int Delete( int A[], int L, int minA, int maxA ){int b[L],i,k;for(i=0,k=0;i<L;i++){if(A[i]<=minA||A[i]>=maxA){b[k]=A[i];k++;}}for(i=0;i <=k;i++)A[i]=b[i];return k+1 ;}哈哈哈,注意k最后是多加了個一。
改完后20分 :
總結
以上是生活随笔為你收集整理的1-4 数组元素的区间删除 (20 分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#控件跨线程内容更新
- 下一篇: 四个跑马灯的c语言程序,入门编程语言跑马