我是小白中的小白


私信TA

用户名:2917915098

访问量:1199

签 名:

等  级
排  名 2922
经  验 2103
参赛次数 0
文章发表 10
年  龄 0
在职情况 学生
学  校 湖北民族大学
专  业

  自我简介:

TA的其他文章

解题思路:

首先声明了四个函数,依次分别为:赋值函数,最小数最与第一位交换的函数,最大数与最后一位交换的函数,以及打印结果的函数。

  1. 赋值函数:首先在主函数中定义一个十位 的数组,再进入赋值函数中,在函数中,用数组指针的方式,作为形参(此处我也不知道这么用是什么道,只知道是传递的数组的首地址),利用for循环结合scanf函数依次赋值。

  2. 最小值与第一位交换的函数:首先不能改变数组里面的值,而是先找最小值的大小,并确定在哪一位。在此处利用中间变量temp,把a[0]的值传递给temp,用于循环函数当中去判断,利用第一位数,去与数组中的每一个数进行对比,如果有比temp小的值,就把这一位的数赋值给temp,依次循环判断,直至找到最小的值,并把最小值的“位数”赋值给flag,以记录哪一位是最小的数。 然后就简单了 ,再借助一个中间变量,把最小值与第一位交换就行了。

  3. 最大数与最后一位交换的函数:与上类型,只是找出的是最大的值。

  4. 最后把整理好的数组的数据打印出来即可。



注意事项:

有很多坑,需要清晰的思路

参考代码:

#include"stdio.h"

void fuzhi(int *a);

void zui_xiao(int *a);

void zui_da(int *a);

void dayin(int *a);


int main()

{

    int a[10];

    fuzhi(a);

    zui_xiao(a);

    zui_da(a);

    dayin(a);

}


void fuzhi(int *a)

{

    for(int i=0;i<10;i++)

    {

        scanf("%d",&a[i]);

    }

}


void zui_xiao(int *a)

{

    int temp = a[0];

    int temp1;

    int flag;

    for(int i=0;i<10;i++)

    {

        if(temp>a[i])

        {

            temp = a[i];//找到最小值

            flag = i;//记录哪一位最小

        }

    }

    //最小值与第一位交换

    temp1 = a[0];

    a[0] = temp;

    a[flag] = temp1;


}


void zui_da(int *a)

{

    int temp = a[0];

    int temp1;

    int flag;

    for(int i=0;i<10;i++)

    {

        if(temp<a[i])

        {

            temp = a[i];//找到最大值

            flag = i;//记录哪一位最大

        }

    }

    //最大值与最后一位交换

    temp1 = a[9];

    a[9] = temp;

    a[flag] = temp1;

}


void dayin(int *a)

{

  for(int i=0;i<10;i++)

    {

        printf("%d ",a[i]);

    }


}



 

0.0分

0 人评分

  评论区

  • «
  • »