2. 编程实现输入10个整数放入数组中,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。除了main函数,另写出三个函数,功能分别是:输入10个数;进行处理;输出10个数(使用指针实现)。
【样例输入】
input 10 numbers:1 2 3 4 5 6 7 8 9 0
【样例输出】
now,they are:0 2 3 4 5 6 7 8 1 9
代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h>
void inputfun(int a[],int n)
{
int i = 0;
printf("请输入%个整数:");
for (i = 0; i < n; i++)
{
scanf("%d",&a[i]);
}
}
void Change(int a[],int n)
{
int max,min;
int i,j,maxindex = 0,minindex = 0;
max = a[0];
min = a[0];
for (i = 1; i < n; i++)
{
if(a[i] > max)
{
max = a[i];
maxindex = i;
}
if (a[i] < min)
{
min = a[i];
minindex = i;
}
}
//最小数与第一个交换
j = a[0];
a[0] = min;
a[minindex] = j;
if (maxindex == 0)
{
maxindex = minindex;
}
j = a[n-1];
a[maxindex] = j;
a[n-1] = max;
}
void outputfun(int a[],int n)
{
int i = 0;
for(i = 0; i < n; i++)
printf("%d ",a[i]);
printf("\n");
}
void main()
{
int a[10];
inputfun(a,10);
Change(a,10);
outputfun(a,10);
return;
}
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
int main(){
void *input(int *p,int n);
int array[10];
int n = sizeof(array)/4;
printf("n的值是%d\n", n);
input(array,n);
printf("数组从大到小排序后:\n");
for (int i = 0; i < n; i++){
printf("%d ",*(array+i));
}
printf("将最大数和最后一个数交换,将最小数和第一个数交换后:\n");
int temp;
temp = *array;
*array = *(array + n - 1);
*(array + n - 1) = temp;
for (int i = 0; i < n; i++){
printf("%d ", *(array + i));
}
system("pause");
return 0;
}
void *input(int *p,int n){
int* sort(int *p,int n);
int *newP = p;
int *newarray;
printf("请输入10个整数:\n");
for (int i = 0; i < n;i++)
scanf("%d",p++);
printf("函数输入完成。\n");
newarray = sort(newP,n);
}
int *sort(int *p,int n){
int *tempP = p;
for (int i = 0; i < n-1; i++){
for (int j = 0; j < n - i - 1; j++, p++){
int temp = 0;
if ((*p)<*(p + 1)){
temp = *p;
*p = *(p + 1);
*(p + 1) = temp;
}
}
p = tempP;
}
return p;
}