第9章实验 指针
- 题目9.3:
利用例9.6程序中的函数Swap(),从键盘输入10个整数,用函数编程实现计算其最大值和最小值,并互换他们所在数组中的位置。
1、解题思路:
主函数中,定义数组,使用指针定义最大值,最小值及其位置,并对指针赋初值,在循环中输入10个数,在外层函数原型声明输出函数,调用此函数,输出初始数组数。外层函数原型声明,用指针指最大值,最小值及其位置,主函数调用,外层定义最大值,最小值的位置起始为0,循环中进行比较if(a[j]>=a[m]) m=j;if(a[j]<=a[p]) p=j;用指针指出最大值,最小值及其位置带出来。输出最大值,最小值。交换最大值与最小值的位置,外层函数声明交换函数,定义temp,交换后,用指针带出来,输出交换后的数组。
2、源代码:
#include <stdio.h>
#include <stdlib.h>
int n=10;
void Swap(int *a,int *b);
void printfnum(int a[],int n);
void Findnum(int a[],int n,int *pMax,int *pMin,int *pMaxpos,int *pMinpos);
int main()
{
int i,c,d;
int a[n],Max,Min,Maxpos,Minpos,*pMax,*pMin,*pMaxpos,*pMinpos;
pMax=&Max;
pMin=&Min;
pMaxpos=&Maxpos;
pMinpos=&Minpos;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printfnum(a,n);
Findnum(a,n,pMax,pMin,pMaxpos,pMinpos);
printf("Max = %d",*pMax);
printf("Min = %d",*pMin);
printf("\n");
c=&a[*pMaxpos];
d=&a[*pMinpos];
Swap(c,d);
printfnum(a,n);
return 0;
}
void Swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void printfnum(int a[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%5d",a[i]);
}
printf("\n");
}
void Findnum(int a[],int n,int *pMax,int *pMin,int *pMaxpos,int *pMinpos)
{
int i,j,m=0,p=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(a[j]>=a[m]) m=j;
if(a[j]<=a[p]) p=j;
}
}
*pMax=a[m];
*pMin=a[p];
*pMaxpos=m;
*pMinpos=p;
}
3、程序运行效果截图: