前言
今天笔者学了有序序列插入一个数组,和各位分享一下。
一、序列中删除指定数字
题目来源:
二、解题步骤
1.分析问题
本道题主要是在一个有序序列里删去一个指定数字,这就要我们去比对了。
2.错误代码如下
我最开始的思路:
我想先顺序查找,找到一样的了交换到下一位,最后输出的时候我输出少一位把最后那个给去掉
#include<stdio.h> int main(){ int n=0,a=0,b=0; int arr[51]={0}; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d ",&arr[i]); //循环输入构成数组 } scanf("%d",&a); for(int j=0;j<n;j++){ if(a==arr[j]){ //找出输入整数a的位置 b=arr[j]; //接下来的步骤是交换位置 arr[j]=arr[j+1]; arr[j+1]=b; } } for(int k=0;k<n-1;k++){ //n-1是为了少输出一位,达到删去效果 printf("%d ",arr[k]); } return 0; }
以上就是我自以为完美的过程。
但是它有一个问题:
它只能去掉一个需要去掉的数字!!只能比对一个!
因为我们只抓住了第一个就有放开,一直抓着它往后面推,其他的不管一不一样都不管了。
3、修改之后:
其实很简单。
#include<stdio.h> int main(){ int n=0,a=0,b=0; int arr[51]={0}; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d ",&arr[i]); } scanf("%d",&a); for(int j=0;j<n;j++){ if(arr[j]!=a) //一个不等于就输出一个,等于就,不输出直接略过 printf("%d ",arr[j]); } return 0; }
总结
以上就是今天要讲的内容,本文仅仅简单介绍了删除数组中具体数字的方法,如有错误欢迎指正。