0
点赞
收藏
分享

微信扫一扫

7-4 用指针方法求10个数最大和最小值之差 (20 分)

纽二 2022-04-14 阅读 162

请使用指针的方法编写程序,程序的功能是从键盘输入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;
    }
}
举报

相关推荐

0 条评论