请使用指针的方法编写程序,程序的功能是从键盘输入10个数,求其最大值和最小值的差。
输入格式:
输入10个整数,每个整数之间用空格分隔。
输出格式:
同样例。
输入样例:
1 2 3 4 5 6 7 8 9 10
输出样例:
difference value = 9
自用方法(这题不需要冒泡排序,只是想着顺便练习一下然后用了,用选择排序的原理来做会简单很多):
#include<stdio.h>
int main(){
int i,j,t,a[10];
int *pa=0,*pb=0;
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0; j<9; j++)
for (i=0; i<9-j; i++)
{
pa=a+i,pb=a+i+1;
if (*pa>*pb)
{
t=*pa;
*pa=*pb;
*pb=t;
}
}
printf("difference value = %d\n",a[9]-a[0]);
return 0;
}
借鉴别人的冒泡排序自己改了之后:
#include<stdio.h>
void bubble_sort(int *a);
int main()
{
int a[10] = {};
int i;
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
bubble_sort(a);
for (i = 0; i < 10; i++)
printf("%d ", a[9]-a[0);
return 0;
}
void bubble_sort(int *a)
{
for (int i = 0; i < 10 - 1;i++)
{
int flag = 0;
for (int*pa = a,*pb = a+1; pa < a + 10 - 1-i; pa++)
if ((*pa)>(*(pa + 1)))
{
*pa ^= *(pa + 1);
*(pa + 1) ^= *pa;
*pa ^= *(pa + 1);
flag = 1;
}
if (!flag) break;
}
}