C语言达人进~小妹考2级~~~还是我问~~~~

来源:百度知道 编辑:UC知道 时间:2024/05/31 03:32:54
有如下程序:
main()
{intj,k,s,m;
for(k=1;k<10;k++)
{s=1;m=k+2;
for(j=k;j<m;j++,k++)s+=j;
)
printf("s=%d,k=%d",s,k);
}

程序输出结果_________

答案是s=16 k=10

我不知道怎么下手~~~~~

知识浅薄 嗄 ,,,,来详解下额。。。

。。。。这个很简单了。把基础复习一遍就明白了。

你赢了

外层循环只需要看最后一次循环,就是k=10的那次
因为每一次进循环s都被赋值为1,所以前面几次可以直接略过
再把k=10代入内层循环,循环3次就出结果了

错了,错了
没这么简单...

外层循环的终止条件为k=10,所以最终k的值肯定是等于10
再来看,k的值是在内层循环决定
内层循环的终止条件为j0=m=k0+2(j0,k0表示外层循环传入的j,k值)
(这里注意,在内层循环终止一次后,外层循环还要执行一次k++)
所以每次外层循环的k分别为1,4,7,10
11传回到外层时,外层循环终止
所以我们只看k=7时的内层循环
(j=k=7) -> (j<9) -> (s=1+7=8) -> (j=7+1=8,k=7+1=8) -> (j<9) -> (s=8+8=16) -> (j=8+1=9,k=8+1=9) -> (j<9)这里终止掉,本次外层循环结束所以k++=10,然后外层循环也结束
所以s=16,k=10

你先看看书的 循环结构中的 for循环

#include<stdio.h>
void main()
{int j,k,s,m,a=0;
printf("s m k j\n");
for(k=1;k<10;k++)
{s=1;m=k+2;
for(j=k;j<m;j++,k++)
{
s+=j;
printf("%d %d %d %d\n",s,m,k,j);
}
}
//printf("s=%d,k=%d",s,k);
scanf("%d",a);
}
那次程序去观测每一步结果

#include <stdio.h>
#include &