C语言的问题

向一个一维数组中输入10个整数,将数组中前 5个元素移至后5个位置,后5个移到前面,然后对前面5个元素进行升序排序,输出整个数组。
例如:
输入:3,2,4,5,1,6,8,0,9,7
输出:0,6,7,8,9,3,2,4,5,1

第1个回答  2010-11-26
#include<stdio.h>
#define n 10
void main()
{
int i,j,temp,a[n];
printf("Input %d numbers:",n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(j=0;j<5;j++){
temp=a[0];//用变量temp保留数组第一个元素
for(i=0;i<n-1;i++){
a[i]=a[(i+1)%n];//循环向前移动数组
}
a[i]=temp; //将temp即之前数组第一个元素的值赋给新数组最后一个元素
}
//用选择排序法对数组前5个元素进行排序
for(i=0;i<4;i++){
for(j=i+1;j<5;j++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<n;i++){
printf("%d\t",a[i]);
}
}
结果验证正确,楼主运行一下试试!
第2个回答  2010-11-26
#include <stdio.h>
void main()
{
int a[10];
int i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<=4;i++)
{
t=a[i];
a[i]=a[i+5];
a[i+5]=t;
}
for(i=4;i>=1;i--)
for(j=i-1;j>=0;j--)
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}

for(i=0;i<10;i++)
printf("%d",a[i]);
}

运行已通过,请验证,不明白在线hi本回答被提问者采纳
第3个回答  2010-11-26
这个问题好啊 一会我想出来给你发过去啊