发布网友 发布时间:2022-04-24 02:28
共5个回答
热心网友 时间:2023-10-22 01:10
删除数组中的某个元素,可以采取将删除位置之后的元素依次向前移动一位的办法来实现。
#include <stdio.h>运行结果
热心网友 时间:2023-10-22 01:11
#include <stdio.h>
void fun(int *arr,int N,int dat)
{
int i,add=0,num=0;
for(i=0;i<N;i++)
{
if(arr[i]==dat)
{
if(add==0) add = i;
num++;
}
}
if(num>0)
{
memcpy(arr+add,arr+add+num,(N-add-num)*sizeof(arr[0]));
memset(arr+N-num,0,num*sizeof(arr[0]));
}
}
void main(void)
{
int a[20]={1,2,3,3,5,6,7,8,9};
int i;
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\r\n");
fun(a,9,3);
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\r\n");
}
int类型数组,假如类型是unsigned char的数组,你就得改程序了,
热心网友 时间:2023-10-22 01:11
完成 建一个cpp文件放代码进去就可以了
//从一个已排序的数组中删去某数后,该数组仍然有序,必须要可以运行的呀!
#include"stdio.h"
#include"conio.h"
#define MAX 100
typedef int datatype ;//默认数组类型是int 其他类型修改这里
int count = 0 ;
void sort(datatype*);
void input(datatype*);
void sdelete(datatype*) ;
void out(datatype*) ;
int main(void)
{
datatype a[MAX] = {0} ;
input(a) ;
sort(a) ;
printf("当前数组为:");
out(a) ;
printf("\n\n按任意键进行删除");
getch();
sdelete(a);
return 0 ;
}
void sort(datatype* data)
{
int i = 0 ;
int j = 0 ;
int temp = 0 ;
for (i = count - 1; i > 0; --i){
for (j = 0; j < i; ++j){
if(data[j+1] > data[j])
{
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
}
void input(datatype* data)
{
int i = 0 ;
char tempc = 'a' ;
int flag = 0 ;
int tempi = 0 ;
int space=0;
printf("请输入数组 以空格隔开 回车结尾:") ;
fflush(stdin) ;
while((tempc=getchar())!='\n'){
if (tempc==' '){
data[space] = tempi ;
count++ ;
space++;
tempi = 0 ;
flag = 0 ;
}
else{
flag = 1 ;
tempi = tempi*10 + (tempc-48) ; // 将字符数字C转换为实际数字C
}
}
if(flag){//如果回车键之前为非空格,则该数也要存入数组
data[space] = tempi ;
count++ ;
}
}
void out(datatype* data)
{
int i = 0 ;
for(i=0;i<count;i++){
printf("%d ",data[i]) ;
}
}
void sdelete(datatype* data)
{
datatype flag ;
int i = 0 ;
int j = 0 ;
while(1){
printf("\n输入删除的数字 输入555退出:");
fflush(stdin) ;
scanf("%d",&flag) ;
if(flag == 555){
break ;
}
for(i=0;i<count;i++){
if(data[i] == flag){
for(j=i; j<count;j++){
data[j] = data[j+1] ;
count -- ;
printf("\n删除后:");
out(data);
}
}
}
}
}
热心网友 时间:2023-10-22 01:12
#include<stdio.h>
void main()
{
int array[10]={1,2,3,4,5,6,7,8,9,10};
int i,m,j;
printf("请插入要删除的元素:\n");
scanf("%d",&m);
for(i=0;i<10;i++)
{
if(array[i]==m)
{for(j=i;j<10;j++)
array[j}=array[j+1];];
}
array[10]=0;
break;
}
for(i=0;i<9;i++)
printf("%3d",array[i]);
}
热心网友 时间:2023-10-22 01:12
从已排序的数组中删除某数之后难道还会乱序吗?不是肯定还是有序的吗
热心网友 时间:2023-10-22 01:10
删除数组中的某个元素,可以采取将删除位置之后的元素依次向前移动一位的办法来实现。
#include <stdio.h>运行结果
热心网友 时间:2023-10-22 01:11
#include <stdio.h>
void fun(int *arr,int N,int dat)
{
int i,add=0,num=0;
for(i=0;i<N;i++)
{
if(arr[i]==dat)
{
if(add==0) add = i;
num++;
}
}
if(num>0)
{
memcpy(arr+add,arr+add+num,(N-add-num)*sizeof(arr[0]));
memset(arr+N-num,0,num*sizeof(arr[0]));
}
}
void main(void)
{
int a[20]={1,2,3,3,5,6,7,8,9};
int i;
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\r\n");
fun(a,9,3);
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\r\n");
}
int类型数组,假如类型是unsigned char的数组,你就得改程序了,
热心网友 时间:2023-10-22 01:11
完成 建一个cpp文件放代码进去就可以了
//从一个已排序的数组中删去某数后,该数组仍然有序,必须要可以运行的呀!
#include"stdio.h"
#include"conio.h"
#define MAX 100
typedef int datatype ;//默认数组类型是int 其他类型修改这里
int count = 0 ;
void sort(datatype*);
void input(datatype*);
void sdelete(datatype*) ;
void out(datatype*) ;
int main(void)
{
datatype a[MAX] = {0} ;
input(a) ;
sort(a) ;
printf("当前数组为:");
out(a) ;
printf("\n\n按任意键进行删除");
getch();
sdelete(a);
return 0 ;
}
void sort(datatype* data)
{
int i = 0 ;
int j = 0 ;
int temp = 0 ;
for (i = count - 1; i > 0; --i){
for (j = 0; j < i; ++j){
if(data[j+1] > data[j])
{
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
}
void input(datatype* data)
{
int i = 0 ;
char tempc = 'a' ;
int flag = 0 ;
int tempi = 0 ;
int space=0;
printf("请输入数组 以空格隔开 回车结尾:") ;
fflush(stdin) ;
while((tempc=getchar())!='\n'){
if (tempc==' '){
data[space] = tempi ;
count++ ;
space++;
tempi = 0 ;
flag = 0 ;
}
else{
flag = 1 ;
tempi = tempi*10 + (tempc-48) ; // 将字符数字C转换为实际数字C
}
}
if(flag){//如果回车键之前为非空格,则该数也要存入数组
data[space] = tempi ;
count++ ;
}
}
void out(datatype* data)
{
int i = 0 ;
for(i=0;i<count;i++){
printf("%d ",data[i]) ;
}
}
void sdelete(datatype* data)
{
datatype flag ;
int i = 0 ;
int j = 0 ;
while(1){
printf("\n输入删除的数字 输入555退出:");
fflush(stdin) ;
scanf("%d",&flag) ;
if(flag == 555){
break ;
}
for(i=0;i<count;i++){
if(data[i] == flag){
for(j=i; j<count;j++){
data[j] = data[j+1] ;
count -- ;
printf("\n删除后:");
out(data);
}
}
}
}
}
热心网友 时间:2023-10-22 01:12
#include<stdio.h>
void main()
{
int array[10]={1,2,3,4,5,6,7,8,9,10};
int i,m,j;
printf("请插入要删除的元素:\n");
scanf("%d",&m);
for(i=0;i<10;i++)
{
if(array[i]==m)
{for(j=i;j<10;j++)
array[j}=array[j+1];];
}
array[10]=0;
break;
}
for(i=0;i<9;i++)
printf("%3d",array[i]);
}
热心网友 时间:2023-10-22 01:12
从已排序的数组中删除某数之后难道还会乱序吗?不是肯定还是有序的吗
热心网友 时间:2023-10-22 01:10
删除数组中的某个元素,可以采取将删除位置之后的元素依次向前移动一位的办法来实现。
#include <stdio.h>运行结果
热心网友 时间:2023-10-22 01:10
删除数组中的某个元素,可以采取将删除位置之后的元素依次向前移动一位的办法来实现。
#include <stdio.h>运行结果
热心网友 时间:2023-10-22 01:11
#include <stdio.h>
void fun(int *arr,int N,int dat)
{
int i,add=0,num=0;
for(i=0;i<N;i++)
{
if(arr[i]==dat)
{
if(add==0) add = i;
num++;
}
}
if(num>0)
{
memcpy(arr+add,arr+add+num,(N-add-num)*sizeof(arr[0]));
memset(arr+N-num,0,num*sizeof(arr[0]));
}
}
void main(void)
{
int a[20]={1,2,3,3,5,6,7,8,9};
int i;
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\r\n");
fun(a,9,3);
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\r\n");
}
int类型数组,假如类型是unsigned char的数组,你就得改程序了,
热心网友 时间:2023-10-22 01:11
完成 建一个cpp文件放代码进去就可以了
//从一个已排序的数组中删去某数后,该数组仍然有序,必须要可以运行的呀!
#include"stdio.h"
#include"conio.h"
#define MAX 100
typedef int datatype ;//默认数组类型是int 其他类型修改这里
int count = 0 ;
void sort(datatype*);
void input(datatype*);
void sdelete(datatype*) ;
void out(datatype*) ;
int main(void)
{
datatype a[MAX] = {0} ;
input(a) ;
sort(a) ;
printf("当前数组为:");
out(a) ;
printf("\n\n按任意键进行删除");
getch();
sdelete(a);
return 0 ;
}
void sort(datatype* data)
{
int i = 0 ;
int j = 0 ;
int temp = 0 ;
for (i = count - 1; i > 0; --i){
for (j = 0; j < i; ++j){
if(data[j+1] > data[j])
{
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
}
void input(datatype* data)
{
int i = 0 ;
char tempc = 'a' ;
int flag = 0 ;
int tempi = 0 ;
int space=0;
printf("请输入数组 以空格隔开 回车结尾:") ;
fflush(stdin) ;
while((tempc=getchar())!='\n'){
if (tempc==' '){
data[space] = tempi ;
count++ ;
space++;
tempi = 0 ;
flag = 0 ;
}
else{
flag = 1 ;
tempi = tempi*10 + (tempc-48) ; // 将字符数字C转换为实际数字C
}
}
if(flag){//如果回车键之前为非空格,则该数也要存入数组
data[space] = tempi ;
count++ ;
}
}
void out(datatype* data)
{
int i = 0 ;
for(i=0;i<count;i++){
printf("%d ",data[i]) ;
}
}
void sdelete(datatype* data)
{
datatype flag ;
int i = 0 ;
int j = 0 ;
while(1){
printf("\n输入删除的数字 输入555退出:");
fflush(stdin) ;
scanf("%d",&flag) ;
if(flag == 555){
break ;
}
for(i=0;i<count;i++){
if(data[i] == flag){
for(j=i; j<count;j++){
data[j] = data[j+1] ;
count -- ;
printf("\n删除后:");
out(data);
}
}
}
}
}
热心网友 时间:2023-10-22 01:12
#include<stdio.h>
void main()
{
int array[10]={1,2,3,4,5,6,7,8,9,10};
int i,m,j;
printf("请插入要删除的元素:\n");
scanf("%d",&m);
for(i=0;i<10;i++)
{
if(array[i]==m)
{for(j=i;j<10;j++)
array[j}=array[j+1];];
}
array[10]=0;
break;
}
for(i=0;i<9;i++)
printf("%3d",array[i]);
}
热心网友 时间:2023-10-22 01:11
#include <stdio.h>
void fun(int *arr,int N,int dat)
{
int i,add=0,num=0;
for(i=0;i<N;i++)
{
if(arr[i]==dat)
{
if(add==0) add = i;
num++;
}
}
if(num>0)
{
memcpy(arr+add,arr+add+num,(N-add-num)*sizeof(arr[0]));
memset(arr+N-num,0,num*sizeof(arr[0]));
}
}
void main(void)
{
int a[20]={1,2,3,3,5,6,7,8,9};
int i;
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\r\n");
fun(a,9,3);
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\r\n");
}
int类型数组,假如类型是unsigned char的数组,你就得改程序了,
热心网友 时间:2023-10-22 01:12
从已排序的数组中删除某数之后难道还会乱序吗?不是肯定还是有序的吗
热心网友 时间:2023-10-22 01:11
完成 建一个cpp文件放代码进去就可以了
//从一个已排序的数组中删去某数后,该数组仍然有序,必须要可以运行的呀!
#include"stdio.h"
#include"conio.h"
#define MAX 100
typedef int datatype ;//默认数组类型是int 其他类型修改这里
int count = 0 ;
void sort(datatype*);
void input(datatype*);
void sdelete(datatype*) ;
void out(datatype*) ;
int main(void)
{
datatype a[MAX] = {0} ;
input(a) ;
sort(a) ;
printf("当前数组为:");
out(a) ;
printf("\n\n按任意键进行删除");
getch();
sdelete(a);
return 0 ;
}
void sort(datatype* data)
{
int i = 0 ;
int j = 0 ;
int temp = 0 ;
for (i = count - 1; i > 0; --i){
for (j = 0; j < i; ++j){
if(data[j+1] > data[j])
{
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
}
void input(datatype* data)
{
int i = 0 ;
char tempc = 'a' ;
int flag = 0 ;
int tempi = 0 ;
int space=0;
printf("请输入数组 以空格隔开 回车结尾:") ;
fflush(stdin) ;
while((tempc=getchar())!='\n'){
if (tempc==' '){
data[space] = tempi ;
count++ ;
space++;
tempi = 0 ;
flag = 0 ;
}
else{
flag = 1 ;
tempi = tempi*10 + (tempc-48) ; // 将字符数字C转换为实际数字C
}
}
if(flag){//如果回车键之前为非空格,则该数也要存入数组
data[space] = tempi ;
count++ ;
}
}
void out(datatype* data)
{
int i = 0 ;
for(i=0;i<count;i++){
printf("%d ",data[i]) ;
}
}
void sdelete(datatype* data)
{
datatype flag ;
int i = 0 ;
int j = 0 ;
while(1){
printf("\n输入删除的数字 输入555退出:");
fflush(stdin) ;
scanf("%d",&flag) ;
if(flag == 555){
break ;
}
for(i=0;i<count;i++){
if(data[i] == flag){
for(j=i; j<count;j++){
data[j] = data[j+1] ;
count -- ;
printf("\n删除后:");
out(data);
}
}
}
}
}
热心网友 时间:2023-10-22 01:12
#include<stdio.h>
void main()
{
int array[10]={1,2,3,4,5,6,7,8,9,10};
int i,m,j;
printf("请插入要删除的元素:\n");
scanf("%d",&m);
for(i=0;i<10;i++)
{
if(array[i]==m)
{for(j=i;j<10;j++)
array[j}=array[j+1];];
}
array[10]=0;
break;
}
for(i=0;i<9;i++)
printf("%3d",array[i]);
}
热心网友 时间:2023-10-22 01:12
从已排序的数组中删除某数之后难道还会乱序吗?不是肯定还是有序的吗