求解答如何输出十个数里的最大值和最小值。我这里错哪里了,
#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 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;
} #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: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 17:46
第二个for语句:
不能写成i
你这第二种,还是有a啊 傻眼貓咪 发表于 2021-11-26 18:11
C 代码:C++ 代码:Python 代码:输出:
{:5_107:} 本帖最后由 番杰 于 2021-11-26 18:26 编辑
小黄练编程 发表于 2021-11-26 18:11
你这第二种,还是有a啊
蛤?不是a吗? 番杰 发表于 2021-11-26 18:25
蛤?不是a吗?
max=a;当a=9时,不就是a了吗 小黄练编程 发表于 2021-11-26 18:31
max=a;当a=9时,不就是a了吗
我没看到下面还有一个a;
尴尬,改成a就行
页:
[1]