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]);  
}

这段代码存在两个错误:

  1. 在最后一行输入语句中,应该使用地址符'&'来获取输入的最大值和最小值,而不是直接使用a[max]和a[min]。
  2. 在求最大值和最小值的循环中,应该将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;
}

代码解析:

  1. 输入10个数:使用循环遍历数组a,并使用scanf函数从标准输入读取10个整数。
  2. 求最大值:循环遍历数组a,比较当前元素a[i]与当前最大值a[max],如果a[i]更大,则将最大值的下标更新为i。
  3. 求最小值:循环遍历数组a,比较当前元素a[i]与当前最小值a[min],如果a[i]更小,则将最小值的下标更新为i。
  4. 输出结果:使用printf函数输出最大值a[max]和最小值a[min]。

总结

通过以上代码解析和错误修正,我们可以更好地理解C语言求数组中最大值和最小值的算法,并避免一些常见的错误。

C语言输入10个数求最大值和最小值代码解析及错误修正

原文地址: https://www.cveoy.top/t/topic/ovpQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录