C语言输入10个数求最大值和最小值代码解析及错误修正
C语言输入10个数求最大值和最小值代码解析及错误修正
以下代码旨在输入10个数,并求出其中的最大值和最小值:
#include<stdio.h>
int main() {
int i,a[10],max,min;
for(i=0;i<10;i++)
scanf('%d',&a[i]);
max=0;
for(i=0;i<10;i++)
{
if(a[max]<a[i])
max=i;
a[max]=a[i];
}
min=0;
for(i=0;i<10;i++)
{
if(a[min]>a[i])
min=i;
a[min]=a[i];
}
scanf('%d %d',a[max],a[min]);
}
这段代码存在两个错误:
- 在最后一行输入语句中,应该使用地址符'&'来获取输入的最大值和最小值,而不是直接使用a[max]和a[min]。
- 在求最大值和最小值的循环中,应该将a[max]和a[min]分别赋值给max和min,而不是将a[i]赋值给a[max]和a[min]。这样做会改变原数组中的值,导致结果错误。
修正后的代码:
#include <stdio.h>
int main() {
int i,a[10],max,min;
for(i=0;i<10;i++)
scanf('%d',&a[i]);
max=0;
for(i=0;i<10;i++)
{
if(a[max]<a[i])
max=i;
}
min=0;
for(i=0;i<10;i++)
{
if(a[min]>a[i])
min=i;
}
printf('最大值为:%d,最小值为:%d', a[max], a[min]);
return 0;
}
代码解析:
- 输入10个数:使用循环遍历数组a,并使用
scanf函数从标准输入读取10个整数。 - 求最大值:循环遍历数组a,比较当前元素a[i]与当前最大值a[max],如果a[i]更大,则将最大值的下标更新为i。
- 求最小值:循环遍历数组a,比较当前元素a[i]与当前最小值a[min],如果a[i]更小,则将最小值的下标更新为i。
- 输出结果:使用
printf函数输出最大值a[max]和最小值a[min]。
总结
通过以上代码解析和错误修正,我们可以更好地理解C语言求数组中最大值和最小值的算法,并避免一些常见的错误。
原文地址: https://www.cveoy.top/t/topic/ovpQ 著作权归作者所有。请勿转载和采集!