发布网友 发布时间:2022-04-21 22:13
共3个回答
热心网友 时间:2023-05-19 12:12
刚才有人求这样的程序,我跟他写了个,我看到你写的程序太多调用函数了,有点花,你看下我写的吧:觉得简单的话,顶个!!!!(你的两个问题好像挨在一起,而且都是一样的问题呢)
其实主要就是两个过程,一排序,二插入,排序我用的选择法,插入的算法就是你先判断你要插入的数刚好比排好序中大的那个数的位置,然后将其后的数后移一个位置,腾出一个空间来给这个插入的数,值得注意的一个特殊情况是如果你插入的数比所有数都小,则要加上一句if(i==5) a[i]=number;
#include <stdio.h>
void main()
{
int a[6],i,j,k,temp,number;
printf("请输入5个不同的数:\n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(i=0;i<=3;i++)
{
k=i;
for(j=i;j<5;j++)
if(a[k]<a[j])
k=j;
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
printf("由大到小排序为:\n");
for(i=0;i<5;i++)
printf("%d ",a[i]);
printf("\n");
printf("请输入你要插入的数:");
scanf("%d",&number);
for(i=0;i<5;i++)
if(number>a[i])
{
for(j=5;j>i;j--)
a[j]=a[j-1];
a[i]=number;
break;
}
if(i==5)
a[i]=number;
printf("插入后的结果为:\n");
for(i=0;i<6;i++)
printf("%d ",a[i]);
printf("\n");
}
热心网友 时间:2023-05-19 12:13
#include<stdlib.h>
#include<stdio.h>
main()
{
int i,j,k,a[9]={1,2,3,4,5,7,8,9,10},b[10]={0};
scanf("%d",&k);
for(i=0;i<=8;i++)
printf("%3d",a[i]);
printf("\n");
for(i=0;i<=8;i++)
if(k<=a[i]){
b[i]=k;
break;
}
for(j=9;j>i;j--)
b[j]=a[j-1];
for(j=0;j<i;j++)
b[j]=a[j];
for(j=0;j<=9;j++)
printf("%3d",b[j]);
system("pause");}
插入的时候再好再重新定义一个数组。。。要不会出现越界的现象。楼主看一下我这个单独进行插入一个数的。
有问题可以hi我。大写一起讨论
热心网友 时间:2023-05-19 12:13
你定义的函数里的数组应该有具体的元素个数啊!像a[5]这样的.
还有就是定义函数后面应该有变量名,不能只一个int就放在那里