小黄练编程 发表于 2021-11-26 17:38:56

求解答如何输出十个数里的最大值和最小值。我这里错哪里了,


#include<stdio.h>
main()
{
        int a,i,j,max,min;
        for(i=0;i<=9;i++)
        {
                printf("请输入数字");
                scanf("%d",&a);
        }
        max=a;
        for(i=0;i<=9;i++)
        {
                if(a>max)
                        max=a;
        }
        min=a;
        for(i=9;i>=0;i--)
        {
                if(a<min)
                        min=a;
        }
        printf("max=%d\nmin=%d\n",max,min);
}

番杰 发表于 2021-11-26 17:46:28

本帖最后由 番杰 于 2021-11-26 21:17 编辑

第二个for语句:
       for(i=0;i<=9;i++)
      {
                if(a>max)
                        max=a;
      }
不能写成i <= 9;
当i = 9时;
仍满足这个条件,还可以进入到这个for循环;
a就变成了a;
这数组a最大的下标是9;
此时就发生数组越界了;

修改方法有两种:
1.
      for(i=0;i<9;i++)
      {
                if(a>max)
                        max=a;
      }
2.
      for(i=1;i<=9;i++)
      {
                if(a>max)
                        max=a;
      }

basketmn 发表于 2021-11-26 17:51:20

#include<stdio.h>
main()
{
      int a,i,j,max,min;
      for(i=0;i<=9;i++)
      {
                printf("请输入数字");
                scanf("%d",&a);
      }
      max=0;
      for(i=0;i<=9;i++)
      {
                if(a>max)
                        max=a;
      }
      min=a;
      for(i=9;i>=0;i--)
      {
                if(a<min)
                        min=a;
      }
      printf("max=%d\nmin=%d\n",max,min);
}
数组越界了

傻眼貓咪 发表于 2021-11-26 18:11:19

本帖最后由 傻眼貓咪 于 2021-11-26 18:13 编辑

C 代码:#include <stdio.h>

int main()
{
    int min = 32767, max = -32767, num;
    for(size_t i = 0; i < 10; i++){
      scanf("%d", &num);
      max = max > num ? max : num;
      min = min < num ? min : num;
    }
    printf("最大值:%d\n最小值:%d", max, min);
    return 0;
}C++ 代码:#include <bits/stdc++.h>

int main()
{
    int min = 32767, max = -32767, num;
    for(size_t i = 0; i < 10; i++){
      std::cin >> num;
      max = max > num ? max : num;
      min = min < num ? min : num;
    }
    std::cout << "最大值:" << max << std::endl << "最小值:" << min << std::endl;
    return 0;
}Python 代码:arr = list(map(int, input().split()))
print(f"最大值:{max(arr)}\n最小值:{min(arr)}")输出:18 27 65 98 75 14 81 73 9 1
最大值:98
最小值:1

小黄练编程 发表于 2021-11-26 18:11:31

番杰 发表于 2021-11-26 17:46
第二个for语句:

不能写成i

你这第二种,还是有a啊

小黄练编程 发表于 2021-11-26 18:24:11

傻眼貓咪 发表于 2021-11-26 18:11
C 代码:C++ 代码:Python 代码:输出:

{:5_107:}

番杰 发表于 2021-11-26 18:25:07

本帖最后由 番杰 于 2021-11-26 18:26 编辑

小黄练编程 发表于 2021-11-26 18:11
你这第二种,还是有a啊

蛤?不是a吗?

小黄练编程 发表于 2021-11-26 18:31:28

番杰 发表于 2021-11-26 18:25
蛤?不是a吗?

max=a;当a=9时,不就是a了吗

番杰 发表于 2021-11-26 21:18:35

小黄练编程 发表于 2021-11-26 18:31
max=a;当a=9时,不就是a了吗

我没看到下面还有一个a;
尴尬,改成a就行
页: [1]
查看完整版本: 求解答如何输出十个数里的最大值和最小值。我这里错哪里了,