C语言.定义20元素的一维数组 ,从键盘输入20个元素,找出20个元素中的最大值,最小值

问题描述:

C语言.定义20元素的一维数组 ,从键盘输入20个元素,找出20个元素中的最大值,最小值

哪里错了呢
1个回答 分类:综合 2014-12-02

问题解答:

我来补答
#include <stdio.h>
int main()
{   
 int min = 0;
 int max = 0;
 int arr[20];
 int i = 0;
 scanf("%d", &arr[i]);
 min = max = arr[0];
 do 
 {
  if(arr[i] > max)
   max = arr[i];
  if(arr[i] < min)
   min = arr[i];
  scanf("%d", &arr[++i]);
 } while (i < 19);
 if(arr[i] > max)
  max = arr[i];
 if(arr[i] < min)
  min = arr[i];
 printf("max is %d, min is %d", max, min);
 return 0;
}1、数组越界2、找最大最小应该是每个都与最终的最大最小值比较的 如果不考虑特殊的输入值,可以给min和max初始值,代码会简单很多:#include <stdio.h>
int main()
{   
 int min = 100000000;
 int max = 0;
 int arr[20];
 int i;
 for(i = 0; i < 20; ++i)
 {
  scanf("%d", &arr[i]);
  if(arr[i] > max)
   max = arr[i];
  if(arr[i] < min)
   min = arr[i];
 }
 printf("max is %d, min is %d\n", max, min);
 return 0;
}
再问: 看不怎么懂,根据你得我给你看看我做得  但是 就是 要错。。
再答: 20个数,所以x[5]改成x[20]
z=w=x[m];
这里你的x[0]是未定的数据,不能直接给z,w赋值,因为如果编译器给w的是个很小的负数,那你最后的最小值肯定不对。建议你的z和w都分别初始化为一个极小值和极大值!

m
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识