c语言编程中,一个有n个元素的数组a,输入两个下标,对两点下标之间的

c语言编程中,一个有n个元素的数组a,输入两个下标,对两点下标之间的元素进行降序排列,输出所有元素

#include<stdio.h>
#include <malloc.h> 
#include<stdlib.h>
void sort(int * arr,int length)
{
if(arr==NULL)
return ;
if(length<=0)
return;
int temp=0;
for(int i=0;i<length-1;i++)
{
for(int j=0;j<length-1-i;j++)
if(arr[j]>arr[j+1])
{
temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
int main()
{
printf("please input a number(>0)\n");
int num;
scanf("%d",&num);
while(num<=0)
{
printf("input is not right\tplease input a number(>0)\n");
scanf("%d",&num);
}
printf("please input %d number\n",num);
int * a=(int *)malloc(num*sizeof(int));
for(int i=0;i<num;i++)
scanf("%d",&a[i]);
int lowindex=0;
int highindex=0;
printf("please input two index number\n");
scanf("%d%d",&lowindex,&highindex);
while(!(lowindex>=0&&lowindex<=highindex&&highindex<num))
{
printf("input is not right\tplease input two index number\n");
scanf("%d%d",&lowindex,&highindex);
}
sort(a+lowindex,highindex-lowindex+1);
for(int j=lowindex;j<=highindex;j++)
printf("%d\t",a[j]);
printf("\n");
system("pause");
free(a);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-20
#include<stdio.h>
void main(){
int a[100000],n,temp,max,min,i,j;
printf("请输入数组a的大小:");
scanf("%d",&n);
while(1==1){
if(n>=1){
break;
}
if(n<=0){
printf("数组的大小必须大于等于1!")
printf("\n\n");
printf("请输入数组a的大小:");
scanf("%d",&n);
}
}
for(i=0;i<n;i++){
printf("请输入第%d个数的:",(i+1));
scanf("%d",&a[i]);
}
printf("请输入要排序的区间的最小值:");
scanf("%d",&min);
printf("请输入要排序的区间的最大值:");
scanf("%d",&max);
while(1==1){
if(min>=0&&max>=0&&(min<max&&max<=n)){
break;
}
if(min<0||max<0||(min>=max||max>n){
printf("你的输入不合法!");
printf("\n\n");
printf("请输入要排序的区间的最小值:");
scanf("%d",&min);
printf("请输入要排序的区间的最大值:");
scanf("%d",&max);
}
}
for(i=min;i<max;i++){
for(j=min;j<max-i-1){
if(a[j]<a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
printt("数组a的全部元素有:");
for(i=0;i<n;i++){
printf("%d",a[i]);
}
}
}本回答被网友采纳
相似回答