
4个回答
展开全部
#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<5改成m<20
其他没有问题!
展开全部
好好想想你的for循环是怎么进行的。
第一次,m=0,执行输出“qingshuru:”,然后执行一次输入,将输入结果保存在x[0]中,这时x[1]中还没有数字,你就开始拿x[1]来作比较了,怎么能实现。。。
第一次,m=0,执行输出“qingshuru:”,然后执行一次输入,将输入结果保存在x[0]中,这时x[1]中还没有数字,你就开始拿x[1]来作比较了,怎么能实现。。。
追问
我 不 知道怎么改。第一次 只有x[0] +1 -1 都不行,,
追答
首先你是比较20个数,所以数组长度改成20;然后:
#include
int main()
{
int x[20];
int max,min;
printf("请输入:");
scanf("%d",&x[0]); //先输入一个数
max=x[0];
min=x[0]; //此时最大值最小值都是它
for(int i=1;imax)
max=x[i]; //如果新输入的数比之前的最大值还大,那么最大值等于新输入的数
if(x[i]<min)
min=x[i]; //如果新输入的数比之前的最小值还小,那么最小值等于新输入的数
}
printf("max=%d,min=%d\n",max,min);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组越界了啊,,,,你定义的数组是5个元素,最大到x[4],你仔细看看你的循环,当m=4时,你里边有x[m+1],没有这个元素啊...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
错误原因不说了,给一份我刚写的吧:
#include<stdio.h>
#define N 20
void main()
{
int data[N];
int num_min;
int num_max;
//循环输入N个整数
for (int i = 0; i < N; ++i)
{
scanf_s("%d", data+i);
}
num_min = data[0];
num_max = data[0];
//遍历一遍
for (int i = 0; i < N; ++i)
{
if (num_min > data[i])
{
num_min = data[i];
}
if (num_max < data[i])
{
num_max = data[i];
}
}
//输出最大与最小
printf("the max is:%d\nthe min is:%d", num_max, num_min);
}
PS:scanf_s是scanf的安全版本(VS2013版本)
#include<stdio.h>
#define N 20
void main()
{
int data[N];
int num_min;
int num_max;
//循环输入N个整数
for (int i = 0; i < N; ++i)
{
scanf_s("%d", data+i);
}
num_min = data[0];
num_max = data[0];
//遍历一遍
for (int i = 0; i < N; ++i)
{
if (num_min > data[i])
{
num_min = data[i];
}
if (num_max < data[i])
{
num_max = data[i];
}
}
//输出最大与最小
printf("the max is:%d\nthe min is:%d", num_max, num_min);
}
PS:scanf_s是scanf的安全版本(VS2013版本)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询