删除数组中给定范围t到s的值(用-1表示删除)

题目要求:
0:删除数组中给定范围t到s的值(用-1表示删除)
1:通过键盘输入随机数个数来填充数组的初始值;
2:通过delete()函数实现;
3:考虑输出结果,数组内元素的位置发生改变和不发生改变俩种情况;

输出情况一:数组内元素位置发生改变的情况(使用了冒泡排序)

#include <stdio.h>
#include <stdlib.h>
#include "time.h"
void myrand(int,int[]);
void delete(int,int[]);//删除给定元素
void sort(int n,int[]);//冒泡排序
void show(int n,int arr[]);//输出结果
int main(){
    //使用随机数要用这两个头文件:"time.h",stdlib.h
    int n;
    printf("输入随机数的个数:");
    scanf("%d",&n);
    int arr[n];    //定义了一个动态数组
    myrand(n,arr);
    sort(n,arr);
//    1:如果不考虑数组其他元素的位置关系,可以先用sort冒泡排序,再对数组进行操作
//    2:如果考虑数组元素其他元素的位置关系,就不要使用sort冒泡排序
    delete(n,arr);
    show(n,arr);
}
//生成随机数填充数组;并输出该数组
void myrand(int n,int arr[]){
    srand((int)time(0));
    printf("\n生成的随机数如下:\n");
    for(int i=0;i<n;i++){
        arr[i]=rand()%291+10;
        printf("%d ",arr[i]);
    }
}

void delete(int n,int arr[]){
    int min,max,i=0,flag=0;
    printf("\n请输入你要删除的最大值和最小值: ");
    scanf("%d %d",&min,&max);
    do {//不知道循环次数
        if(arr[i]>=min && arr[i]<=max){
            arr[i]=-1;
        }
        i++;
    }while(i<n);
}
//冒泡排序
void sort(int n,int arr[]){
    int temp;
    for(int i=0;i<n-1;i++){
        for (int j = 0; j < n-1-i; j++) {
            if(arr[j]>arr[j+1]){
                temp = arr[j];//不要写成arr【i】了
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}
//输出数组的值
void show(int n,int arr[]){
    printf("\n-----------the result as follow-----------:\n");
    for (int i = 0; i < n; ++i) {
        printf("%4d ",arr[i]);
        if((i+1)%10==0 ){
            printf("\n");
        }
    }
}
//删除给定t-s的值
//思路:先冒泡排序,后比较大小,通过将后面的元素往前移动达到删除效果

输出结果如下:
在这里插入图片描述

输出情况二:数组内元素位置没有发生改变的情况(未使用冒泡排序)

将sort冒泡排序函数注释掉即可;

输出结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值