入n个数,然后找出其中的最大数与最小数,并将其位置对换(指针)
2022年 02月 18 日

BIGFISH

题目
下面程序的功能是从键盘任意输入n个数,然后找出其中的最大数与最小数,并将其位置对换。
该程序中存在比较隐蔽的错误,请通过分析和调试程序,发现并改正程序中的错误。
注意:将修改后的完整的源程序写在答题区内。
对于没有错误的语句,请不要修改,修改原本正确的语句也要扣分。
当且仅当错误全部改正,且程序运行结果调试正确,才给加5分,
如果只改正了部分错误,则不加分。不能修改函数原型。
改错时不能改变程序原有的意图,不能改变函数原型。

1.改正前

#include  
#define n = 10;
void  MaxMinExchang(int *a, int n)
{
    int  maxValue = *a, minValue = *a, maxPos, minPos;
    int  i, temp;
    for (i=0; i maxValue)
        {
        maxValue = *a+i;
              maxPos = i;
        }
         if (*a+i < minValue)
        {
                 minValue = *a+i;
            minPos = i;
        }
    }   
    temp = *a + maxPos;
    *a + maxPos = *a + minPos;
    *a + minPos = temp;
}
main()
{
    int a[n], i, n;
    printf("Input n(n<=10):\n");
    scanf("%d", n) ;
    printf("Input %d Numbers:\n", n);
    for (i=0; i

2.改正后

#include  
#define N 10

void  MaxMinExchang(int* a, int n);

main()
{
    int a[N], i, n;
    printf("Input n(n<=10):\n");
    scanf("%d", &n);
    printf("Input %d Numbers:\n", n);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    MaxMinExchang(a, n);
    printf("After MaxMinExchange:\n");
    for (i = 0; i < n; i++)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
}
void  MaxMinExchang(int* a, int n)
{
    int  maxValue = *a, minValue = *a, maxPos = 0, minPos = 0;
    int  i, temp;
  //  printf("hhhh%d\n", *(a + 2));
    for (i = 0; i < n ; i++) { if (*(a + i) > maxValue)
        {
            maxValue = *(a + i);
            maxPos = i;
         //   printf("mmmm%d", maxPos);
        }
        if (*(a + i) < minValue)
        {
            minValue = *(a + i);
            minPos = i;
         //   printf("nnnn%d", minPos);
        }
    }
    temp = a[maxPos];
    a[maxPos] = a[minPos];
    a[minPos] = temp;
}

入n个数,然后找出其中的最大数与最小数,并将其位置对换(指针)

题目
下面程序的功能是从键盘任意输入n个数,然后找出其中的最大数与最小数,并将其位置对换。
该程序中存在比较隐蔽的错误,请通过分析和调试程序,发现并改正程序中的错误。
注意:将修改后的完整的源程序写在答题区内。
对于没有错误的语句,请不要修改,修改原本正确的语句也要扣分。
当且仅当错误全部改正,且程序运行结果调试正确,才给加5分,
如果只改正了部分错误,则不加分。不能修改函数原型。
改错时不能改变程序原有的意图,不能改变函数原型。

1.改正前

#include  
#define n = 10;
void  MaxMinExchang(int *a, int n)
{
    int  maxValue = *a, minValue = *a, maxPos, minPos;
    int  i, temp;
    for (i=0; i maxValue)
        {
        maxValue = *a+i;
              maxPos = i;
        }
         if (*a+i < minValue)
        {
                 minValue = *a+i;
            minPos = i;
        }
    }   
    temp = *a + maxPos;
    *a + maxPos = *a + minPos;
    *a + minPos = temp;
}
main()
{
    int a[n], i, n;
    printf("Input n(n<=10):\n");
    scanf("%d", n) ;
    printf("Input %d Numbers:\n", n);
    for (i=0; i

2.改正后

#include  
#define N 10

void  MaxMinExchang(int* a, int n);

main()
{
    int a[N], i, n;
    printf("Input n(n<=10):\n");
    scanf("%d", &n);
    printf("Input %d Numbers:\n", n);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    MaxMinExchang(a, n);
    printf("After MaxMinExchange:\n");
    for (i = 0; i < n; i++)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
}
void  MaxMinExchang(int* a, int n)
{
    int  maxValue = *a, minValue = *a, maxPos = 0, minPos = 0;
    int  i, temp;
  //  printf("hhhh%d\n", *(a + 2));
    for (i = 0; i < n ; i++) { if (*(a + i) > maxValue)
        {
            maxValue = *(a + i);
            maxPos = i;
         //   printf("mmmm%d", maxPos);
        }
        if (*(a + i) < minValue)
        {
            minValue = *(a + i);
            minPos = i;
         //   printf("nnnn%d", minPos);
        }
    }
    temp = a[maxPos];
    a[maxPos] = a[minPos];
    a[minPos] = temp;
}

赞 (0)

猜您想看

201-A9-命令注入

一、漏洞信息1...

01

常见函数及知识点

strcmp ...

02

字符串连接(指针)

用指针做函数参...

03

【tools-download】

爆破工具 ...

06

评论区(暂无评论)

这里空空如也,快来评论吧~

我要评论