已经运行通过.
#include <iostream.h>
void main()
{
int a[20]
int tmp
int i,j
for(i=0i<10i++)
{
cout<<"输入第"<<i+1<<"个数:"
cin>>a[i]
}
for(i=0i<9i++)
{
tmp=a[i]
for(j=ij<10j++)
if(tmp>a[j])
{
tmp=a[j]
a[j]=a[i]
a[i]=tmp
}
}
for(i=0i<10i++)
cout<<a[i]<<""
cout<<endl
cout<<"再输入一个数:"
cin>>tmp
for(i=0i<11i++)
{
if(tmp<a[i])
{
for(j=10j>ij--)
a[j]=a[j-1]
a[j]=tmp
break
}
}
for(i=0i<11i++)
cout<<a[i]<<""
cout<<endl
}
楼主根据实际适当改下应该能符合要求:#include<iostream>
int main()
{
int i,j,a,b,list[12] = {1,2,8,15,99,111,200,201,800,1010,1500}
\\注意定义数组大小\\
printf("请输入你想插入数组的数字:")
scanf("%d",&a)
for (i=0i<11++i)
{ if(a <list[i] ) \\判断插入的条件
{
for(j=10j>=i--j) \\插入地址的元素依次向后移动一位,
list[j+1]=list[j]
break
}
}
list[i]=a \\插入元素
printf("输出插入后数组:")
for(i=0i<12++i)
{
printf("%d ",list[i])
}
printf("\n")
printf("请输入你想删除数组的数字:")
scanf("%d",&b)
for(i=0i<12++i)
{
if(b==list[i])\\判断删除元素的条件
{
for(j=ij<12++j)
list[j]=list[j+1]
\\该删除地址后的的元素依次向前移一位,被删除元素自然被后一位代替
break
}
}
printf("输出删除后数组:")
for(i=0i<11++i)
{
printf("%d ",list[i])
}
printf("\n")
return 0
}
#include<iostream>using namespace std
void main() {
int n
cin >>n
int* a=new int[n]
int* order=new int[n]
for(int i=0i<ni++) {
cin >>a[i] order[i]=0
}
int eqNum=0
for(int ord=1ord+eqNum<=nord++) {
int first=0
while(order[first]!=0) first++
// cout <<"ord: " <<ord <<", first: " <<first
int min=a[first], minAt=first
for(int j=first+1j<nj++) {
if(order[j]!=0) continue
if(a[j]<min) { min=a[j] minAt=j}
}
// cout <<", minAt: " <<minAt <<", min: " <<min <<endl
int ord0=ord
order[minAt]=ord0
for(int k=minAt+1k<nk++) {
if(a[k]==min) { order[k]=ord0 eqNum++ }
}
}
for(int i=0i<ni++) {
if(i>0) cout <<" "
cout <<order[i]
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)