《算法笔记》2.7小节——C/C++快速入门->指针
问题 E: C语言10.16
题目描述
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求用3个函数实现,分别为输入10个数、进行处理、输出10个数。要求使用指针的方法进行处理。
输入
用空格隔开的10个整数。
输出
输出进行题目描述操作之后的10个整数,每个整数之后输出一个空格。
请注意行尾输出换行。
样例输入
1 5 2 4 9 0 3 8 7 6
样例输出
0 5 2 4 6 1 3 8 7 9
实现代码:
#include <stdio.h>
#include <string.h>
void Input(int *a);
void Output(int *b);
void Change(int *c);
int main()
{
int a[10];
Input(a);
Change(a);
Output(a);
return 0;
}
void Input(int *a)
{
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
}
void Output(int *b)
{
for(int j=0;j<10;j++)
{
printf("%d ",b[j]);
}
printf("\n");
}
void Change(int *c)
{
int max=c[0],min=c[0],maxp=0,minp=0;
for(int i=0;i<10;i++)
{
if(max<c[i])
{
max=c[i];
maxp=i;
}
}
for(int j=0;j<10;j++)
{
if(min>c[j])
{
min=c[j];
minp=j;
}
}
c[minp]=c[0];
c[0]=min;
c[maxp]=c[9];
c[9]=max;
}
结果如下:
1 5 2 4 9 0 3 8 7 6
0 5 2 4 6 1 3 8 7 9