猿问

请帮我理解一下这段C代码

#include<stdio.h>
int main()
{
	int i;
	int	max;
	int	a[]={10,5,20,4,31,};
	max =a[0]; 
	
	for(i=0;i<10;i++)		
		//printf("%d\n",i);
		if (a[i]>max)
			max=a[i];
		printf("最大的数字为%d\n",max);
		return 0;
}
if (a[i]>max)
max=a[i];
20也大于max为什么就不直接输出20=max,而是输出31呢?


涟漪前世泪
浏览 984回答 1
1回答

这都不会

是这样的,因为for循环,所以会把数组a都遍历一遍。详细说一下过程:i = 0,max = 10,不赋值i = 1,max = 10,不赋值i = 2,max = 10,因为20大于10,赋值,max变为20。注意:此时仍未结束循环,所以不做输出。为什么不结束呢?因为for、if这些关键字后面如果不带有大括号,只对后面一句代码有效,如果想对多行代码使用for,就必须用大括号括起来。虽然这里你的printf缩进了,但其实并不是for循环内的语句,而在循环外。所以在循环结束之后才会运行printfi = 3,max = 20,不赋值i = 4,max = 20,因为31大于20,赋值,max变为31。......循环结束后,输出31。
随时随地看视频慕课网APP
我要回答