C语言数组编程题。在线等。

2025-03-28 23:07:16
推荐回答(3个)
回答(1):

程序如下,不明白的地方就追问吧!
#include
void sort_up(int *p,int len);
void insert(int *p,int len);
int main(){
int i,a,b,n,idx,buf[255];
printf("请输入数组元素初始个数n\n");
scanf("%d",&n);
for(i=0;i printf("请输入第%d个元素\n",i+1);
scanf("%d",&buf[i]);
}
while(1){
printf("\n排序请选-->(1)\n插入请选-->(2)\n退出请选-->(0)\n");
scanf("%d",&idx);
if(idx==0) break;
else if(idx==1) sort_up(buf,n);
else if(idx==2) insert(buf,++n);
else{
printf("输入错误,请重新输入!\n");
continue;
}
}
return 0;
}
void insert(int *p,int len)
{
int temp;
printf("请输入要插入的元素...\n");
scanf("%d",&temp);
*(p+len-1)=temp;
sort_up(p,len);
}
void sort_up(int *p,int len)
{
int i,j,temp;
for(i=0;i for(j=0;j if(*(p+j)>*(p+j+1)){
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
printf("操作后的结果为...\n");
for(i=0;i printf("%d ",*(p+i));
}
}

回答(2):

排序的代码有很多,经典的代码网上很多,套用就可以,两层循环加判断交换
很简单

插入也不难,就是放到数组的最后,和前一个判断,如果小了,两个交换,直到不交换了退出循环

回答(3):

#include

#define MAX 1024

void sort(int *a, int n)
{
int i,j, tmp;
for (i=0; i {
for (j=i+1; j {
if (a[i]>a[j])
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
}

void insert(int *a, int n, int m)
{
int i, j;

if a[0]>=m)
{
for (j=n-1; j>i; j--)
{
a[j+1] = a[j];
}
a[0] = m;
return;
}

for (i=0; i {
if (a[i]<=m && m<=a[i+1])
{
for (j=n-1; j>i; j--)
{
a[j+1] = a[j];
}
break;
}
}
a[i+1] = m;
}

int main(void)
{
int n, m, a[MAX], i;

scanf("%d", &n);
for (i=0; i {
scanf("%d", &a[i]);
}

sort(a, n); //排序

scanf("%d", &m);
insert(a, n, m); // 插入数字

for (i=0; i {
printf("%d ", a[i]);
}
printf("\n");

return 0;
}