因为你第二个循环是(j=1;j<=i;j++),也就是说当i=1的时候,里面循环1次,i=2.里面循环两次.i是一个会变动的值,从1变到n,每次循环都不一样.你那个(i=1;i<n;i++),这里面n是死的,不会随着外面的而变化
,之所以他用i和j两个变量,是因为i不仅在第一个循环里递增用,他还要传入到第二个循环里面决定循环次数,所以不能省一个变量;
你两个循环用同一个i作为变量,这个i是会相互影响的,也就是本来i++,在内循环递增1,外循环不变,你在内循环递增1的时候,外循环也少循环了一轮.
如果你实在想在两个循环里面只用一个i,那就for(int i=1;)两个都这么写.这样i就只在单独的循环内递增.详细看一下局部变量和全局变量