如何用C语言的四个if语句从四个整数找到最大值和最小值

可以用else语句
2025-03-14 00:16:42
推荐回答(2个)
回答1:

首先,你的程序由于定义了变量a,又定义了数组a,而此时数组名a不是变量,与前面定义的变量a重复,只要把数组名a改成非a,b,c,maax,min,i,j的其他字母就行啦但是修改后的程序只能输入数据,不能输出结果。其中一个很明显的错误就是第7行i=1,数组是从下标0开始,很明显你只能存储2个数。经过一番调试,如果你非得用数组解题,可用如下程序:#include
void main()
{
int i,j,a[3],t;for (i=0;i<3;i++)
{printf("请输入第%d个数的值:",i+1);scanf("%d",&a[i]);printf("\n");}for(i=0;i<2;i++)
for(j=i+1;j<=2;j++)
if(a[i]{
t=a[i];
a[i]=a[j];
a[j]=t;
}printf("最大值为%d\n",a[0]);
printf("最小值为%d\n",a[2]);
}程序结果: 对于你后来问到的为什么改后的程序没错而能运行的问题,是因为你定义了一个含有三个元素的数组,而元素下标只能从0-2,而你编的时候刚好写多了一个a3,所以程序对于a1和a2还能分配存储空间,但是对于a3这个额外生出的数据就不知道往哪里存储;还有,你下面进行比较是从a0开始,而这个变量又没分配数值,无法进行比较,所以就无法输出结果 如果你真的很想用abc三个变量和if语句,那么下面这个程序应该适合你,程序如下:#include
void main()
{
int a,b,c,t;
printf("输入a、b、c的值(用空格分开):");
scanf("%d %d %d",&a,&b,&c);
if(aif(aif(bprintf("最大数:%d\n",a);
printf("最小数:%d\n",c);
}程序结果: 这种题目我看用if语句就最简单啦,至于用到数组和函数调用就有点大题小做。其实函数调用只是if语句的浓缩。

回答2:

#include
int main(){
int arr[4];
int min1,max1;
int min2,max2;
int min,max;
printf("请输入四个整数\n");
scanf("%d%d%d%d",&arr[0],&arr[1],&arr[2],&arr[3]);
if(arr[0] min1=arr[0];
max1=arr[1];
}else{
min1=arr[1];
max1=arr[0];
}
if(arr[2] min2=arr[2];
max2=arr[3];
}else{
min2=arr[3];
max2=arr[2];
}
if(min1 min=min1;
}else{
min=min2;
}
if(max1 max=max2;
}else{
max=max1;
}

printf("最小值是:%d,最大值是:%d\n",min,max);
system("pause");
return 0;
}

原理就是,

第0个和第1个比,找到其中最小的min1和最大的max1;

第2个和第3个比,找到其中最小的min2和最大的min2;

最后比较min1和min2,找到最小值,记为min;

比较max1和max2找到最大值,记为max;

这样就只需比较4次,便能找到最大值和最小值;