橙啊橙


私信TA

用户名:Jesty

访问量:959

签 名:

等  级
排  名 12350
经  验 978
参赛次数 3
文章发表 5
年  龄 0
在职情况 学生
学  校 饶职
专  业 大前端

  自我简介:

垃圾前端狗

TA的其他文章

bak bin 二进制
浏览:61

解题思路:

    说来说去 这题是真的很简单 

    看下我原来的代码(50分)

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>

void scf(int a[])
{
    for (int i = 0; i < 10; i++)
        scanf("%d", &a[i]);
}
 
void handle(int a[])
{
    // 找最小下标
int min = 0, max = 0;
    for (int i = 0; i < 10; i++)
    {
        if (a[min] >= a[i])
        {
            min = i;
        }
        if (a[max] <= a[i])
        {
            max = i;
        }
    }
    // 将其中最小的数与第一个数对换
    int temp = a[0];
    a[0] = a[min];
    a[min] = temp;

    // 把最大的数与最后一个数对换
    int temp2 = a[9];
    a[9] = a[max];
    a[max] = temp2;
    // printf("min = %d , max = %d", min, max);
}
void printArr(int a[])
{
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", a[i]);
    }
}

int main()
{
    int a[10];
    scf(a);
    handle(a);
    printArr(a);
    
    return 0;
}

然而这只有50分  因为忽略了一点 --将其中最小的数与第一个数对换--    这里一定是先干完这个事情再去干下一个事情也就是 把最大的数与最后一个数对换


所以结果是

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>

void scf(int a[])
{
    for (int i = 0; i < 10; i++)
     
        scanf("%d", &a[i]);
 
}
 
void handle(int a[])
{
    // 找最小下标
int min = 0, max = 0;
    for (int i = 1; i < 10; i++)
    {
        if (a[min] >= a[i])
            min = i;
    }

    // 将其中最小的数与第一个数对换
    int temp = a[0];
    a[0] = a[min];
    a[min] = temp;

    for (int i = 1; i < 10; i++)
    {
        if (a[max] <= a[i])
        {
            max = i;
        }
    }

    // 把最大的数与最后一个数对换
    int temp2 = a[9];
    a[9] = a[max];
    a[max] = temp2;
    // printf("min = %d , max = %d", min, max);
}
void printArr(int a[])
{
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", a[i]);
    }
}

int main()
{
    int a[10];
    scf(a);
    handle(a);
    printArr(a);

return 0;
}


注意事项:

参考代码:

...突然发现排版错了 ...

 

0.0分

2 人评分

  评论区

  • «
  • »