关于C语言基础的问题,要求解过程11

来源:百度知道 编辑:UC知道 时间:2024/06/06 09:33:42
详细一点,谢谢
输出多少?
main()
{ int i,j;
for (i=2;i>=0;i--)
{for(j=1;j<=i;j++) printf("*");
for(j=0;j<=2-i;j++) printf("!");
printf("\n"); } }

输出结果为:
**!
*!!
!!!
首先最外循环i从到2到0(从大到小),也就是说循环3次,主要目的是确实输出的结果为三行。

当i=2时,第二个循环j从1到i(即i=2),输出两个“*”,然后第三个循环j从0到2-i(即2-2=0),输出一个“!”。这是第一行的结果。

当i=1时,第二个循环j从1到i(即i=1),输出一个"*",然后第三个循环j从0到2-i (即2-1=1),输出两个“!”。 这是第二行的结果。

当i=0时,第二个循环j从1升到0,这是错误的,不符合条件,所以不输出“*”,直接再执行第三个循环j从0到2-i(即2-0=2),输出三个"!"。这是第三行的结果。

当i=0时,for(j=1;j<=i;j++) 这里检测 j<=i 时就是 1<=0, 是假值, 不会执行循环体, 不该说成:"j从1升到0,这是错误的"

同意一楼,第一个循环只执行了两次.在i=0时不再执行.