问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

编写C语言程序【,从一个已排序的数组中删去某数后,该数组仍然有序】,,必须要可以运行的呀!

发布网友 发布时间:2022-04-24 02:28

我来回答

5个回答

热心网友 时间:2023-10-22 01:10

删除数组中的某个元素,可以采取将删除位置之后的元素依次向前移动一位的办法来实现。

#include <stdio.h>

#define LEN 100 /*数组长度*/
#define elemType int /*元素类型*/


/*打印数组*/
void printArr (elemType arr[], int len) {
int i;
for (i=0; i<len; i++)
printf ("%-4d",arr[i]);
putchar ('\n');
}

/*删除index号元素*/
void delElem (elemType arr[], int *len, int index) {
int i;
for (i=index; i<*len; i++)
arr[i]=arr[i+1];
*len-=1;
}

int main (void) {
elemType arr[LEN] = {1,2,3,4,5,6,7,8,9,10};
int len = 10;
int delIndex = 4; /*删除4号元素*/
int i;

puts ("原数组:");
printArr (arr, len);
putchar ('\n');
puts ("================================================================\n");

delElem (arr, &len, delIndex);
printf ("删除%d号元素后数组:\n",delIndex);
printArr (arr, len);
putchar ('\n');

fflush (stdin); /*清除缓冲区*/
getch (); /*屏幕暂留*/
return 0;
}

运行结果

热心网友 时间: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>

#define LEN 100 /*数组长度*/
#define elemType int /*元素类型*/


/*打印数组*/
void printArr (elemType arr[], int len) {
int i;
for (i=0; i<len; i++)
printf ("%-4d",arr[i]);
putchar ('\n');
}

/*删除index号元素*/
void delElem (elemType arr[], int *len, int index) {
int i;
for (i=index; i<*len; i++)
arr[i]=arr[i+1];
*len-=1;
}

int main (void) {
elemType arr[LEN] = {1,2,3,4,5,6,7,8,9,10};
int len = 10;
int delIndex = 4; /*删除4号元素*/
int i;

puts ("原数组:");
printArr (arr, len);
putchar ('\n');
puts ("================================================================\n");

delElem (arr, &len, delIndex);
printf ("删除%d号元素后数组:\n",delIndex);
printArr (arr, len);
putchar ('\n');

fflush (stdin); /*清除缓冲区*/
getch (); /*屏幕暂留*/
return 0;
}

运行结果

热心网友 时间: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>

#define LEN 100 /*数组长度*/
#define elemType int /*元素类型*/


/*打印数组*/
void printArr (elemType arr[], int len) {
int i;
for (i=0; i<len; i++)
printf ("%-4d",arr[i]);
putchar ('\n');
}

/*删除index号元素*/
void delElem (elemType arr[], int *len, int index) {
int i;
for (i=index; i<*len; i++)
arr[i]=arr[i+1];
*len-=1;
}

int main (void) {
elemType arr[LEN] = {1,2,3,4,5,6,7,8,9,10};
int len = 10;
int delIndex = 4; /*删除4号元素*/
int i;

puts ("原数组:");
printArr (arr, len);
putchar ('\n');
puts ("================================================================\n");

delElem (arr, &len, delIndex);
printf ("删除%d号元素后数组:\n",delIndex);
printArr (arr, len);
putchar ('\n');

fflush (stdin); /*清除缓冲区*/
getch (); /*屏幕暂留*/
return 0;
}

运行结果

热心网友 时间:2023-10-22 01:10

删除数组中的某个元素,可以采取将删除位置之后的元素依次向前移动一位的办法来实现。

#include <stdio.h>

#define LEN 100 /*数组长度*/
#define elemType int /*元素类型*/


/*打印数组*/
void printArr (elemType arr[], int len) {
int i;
for (i=0; i<len; i++)
printf ("%-4d",arr[i]);
putchar ('\n');
}

/*删除index号元素*/
void delElem (elemType arr[], int *len, int index) {
int i;
for (i=index; i<*len; i++)
arr[i]=arr[i+1];
*len-=1;
}

int main (void) {
elemType arr[LEN] = {1,2,3,4,5,6,7,8,9,10};
int len = 10;
int delIndex = 4; /*删除4号元素*/
int i;

puts ("原数组:");
printArr (arr, len);
putchar ('\n');
puts ("================================================================\n");

delElem (arr, &len, delIndex);
printf ("删除%d号元素后数组:\n",delIndex);
printArr (arr, len);
putchar ('\n');

fflush (stdin); /*清除缓冲区*/
getch (); /*屏幕暂留*/
return 0;
}

运行结果

热心网友 时间: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

从已排序的数组中删除某数之后难道还会乱序吗?不是肯定还是有序的吗
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
立秋后钓鱼什么风向好-立秋钓鱼风向怎么选 赱乂砉込儬 怎么读 "赱"读什么? 解决电脑无法搜索到iPhone热点的问题如何修复iPhone热点无法在电脑上显... 电脑搜不到iphone12热点 iphone开热点给电脑搜不到 国企的地产有哪些 国企下设公司是什么意思? 红加蓝加绿是什么色. 梦幻西游75级开三倍抓鬼一轮有多少经验 文件粉碎批处理 【求助】磁盘擦除工具 增长率公式是什么? 批处理用sdelete彻底删除文件时如何选多个文件或文件夹 sdelete使用方法 什么情况下增长率是0? 增长率不可能超过100%吗? 增长率、成长率、达成率有什么不同,怎样表示? 增速,增长率,增幅区别为何? 在“J”型曲线中,增长率为什么不变 增长率怎么算 增长率和增长速率的区别是什么? 增幅和增长率有区别吗? 增长率与实际增长率有何不同,怎样计算 增长率和增长速率的区别? 增长率怎么算? 增长率等于增长倍数吗 什么是增长率 增长量不变和增长率不变有什么 区别啊 梦见逃命意味着什么? 编写fun函数,功能是删除字符串中的数字字符。例输入字符串:48CTYP9E6,则输出:CTYPE。 Win10完全重置(删除所有内容)靠谱吗 html如何设置鼠标悬停div块显示,已经把默认改为不显示,如何设置悬停... 如何给VirtualBox 虚拟硬盘瘦身 怎样缩小QCOW2虚拟磁盘实际占用硬盘空间 mysql 全列插入 如何跳过其中的某列不插入 如何彻底删除diskgenius能够恢复的软件? 为什么我的电脑搜索不能搜索文件? pascal 输入判断H数 加分! 英文翻译 电脑有关 。急用 ok得加50分 virtualbox怎么调整虚拟硬盘默认大小 部分普快列车可互联网订票,订餐价格是否很高? 小说如何写? 小说怎么写?有什么技巧吗?写小说有什么用? 小说怎么写精彩? 小说怎样写才能吸引人呢? 六年级小说怎么写? 小说怎么发表? 如何彻底解决WIN10内存不足现象,是放弃WIN10还是扔了电脑 Win10另存为左侧的导航内容&quot;3D对象,视频、文档等”怎么删除?