编写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
从已排序的数组中删除某数之后难道还会乱序吗?不是肯定还是有序的吗