试编写一个程序,其功能是:从键盘输入一个整数y,然后再输入y个整数,存入数组中,然后在数组中找出最小数,与第一个数互换位置,在数组中找出最大数,与最后一个数互换位置,然后将数组输出。例如:输入6 23 89 78 -2 -9 -67,输出
-67 23 78 -2 -9 89
试编写一个程序,其功能是:从键盘输入一个整数y,然后再输入y个整数,存入数组中,然后在数组中找出最小数,与第一个数互换位置,在数组中找出最大数,与最后一个数互换位置,然后将数组输出。例如:输入6 23 89 78 -2 -9 -67,输出
-67 23 78 -2 -9 89
帮你写了个. 有问题还请追问.. 望采纳!!
#include <stdio.h>
#include <malloc.h> //malloc
int main()
{
int y,i,max=-123456,min=123456,max_i,min_i;
scanf("%d",&y);
int *a=(int *)malloc(y*sizeof(int)); //动态申请数组. 长度为y.
for(i=0;i<y;i++)
{ //对输入的每一个数.进行判断. 是否大于max,是就保存到max中.并保存下标.最小数也一样
scanf("%d",&a[i]);
if(a[i]>max) max=a[i],max_i=i;
if(a[i]<min) min=a[i],min_i=i;
}
//将最小数和a[0]交换. 最大数和a[y-1]交换.
i=a[0],a[0]=min,a[min_i]=i;
i=a[y-1],a[y-1]=max,a[max_i]=i;
//输出
for(i=0;i<y;i++)
{
printf("%d ",a[i]);
}
printf("\n");
free(a); //释放之前申请的a的空间.
return 0;
}
附图:
我也发个,是c++版的,已测试有效
#include<iostream> using namespace std;
int main() { int num,n[100],*min,*max; int i; cout<<"数据的个数[0~100]:"; cin>>num; if(num==0) { cout<<"没有要输入的数据"<<endl; return 0; } else { for(i=0;i<num;i++) { cin>>n[i]; } min=max=n; for(i=1;i<num;i++) { if(*min>n[i]) min=n+i; } i=*min; n[min-n]=n[0]; n[0]=i; for(i=1;i<num;i++) { if(*max<n[i]) max=n+i; } i=*max; n[max-n]=n[num-1]; n[num-1]=i; for(i=0;i<num;i++) cout<<n[i]<<" "; cout<<endl; } return 0; }