两个C语言问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 02:03:48
阅读以下两个程序
1、main()
{int k,j,s;
for(k=2;k<6;k++,k++)
{s=1;for(j=k;j<6;j++)s+=j;
}
printf("%d\n",s);}
我想问一下k++,k++是怎么回事?运行的结果为什么会是10
2、main()
{int i,j,m=0;
for(i=1;i<=15;i+=4)
for(j=3;j<=19;j+=4)m++;
printf("%d\n",m);}
感觉有两个不相关的循环语句同时进行,这是怎么回事?
我是C语言初学者,请高手能详细地解答一下,谢谢!
我是对于这两个程序的结果无法预测出来,就是说看不懂,能否有高手能详细的把每一步分析一下

第一题那个foxcer朋友回答的非常清楚 很好

我在这里只是说说第二题
那样的循环就是先先执行第一个循环的 由i=1进入 然后执行整个整个整个整个整个第2个循环for(j=3;j<=19;j+=4)m++;循环结束后 再执行第一个for循环i=2进入 在执行整个整个第二个for(j=3;j<=19;j+=4)m++; 依次执行下去
就相当于for(i=1;i<=15;i+=4)
{for(j=3;j<=19;j+=4)m++;}
下回不懂了就这样办
for(i=1;i<=15;i+=4)
for(j=3;j<=19;j+=4)
{
m++;
printf("%d\n",m);
}
在程序里边加一个输出函数 看每次输出的m值 共输出了多少次 有利于你分析程序是怎么运算的

1:就是k自加两次啦,没什么特别意义,刚才看错了,原来是重复将s赋了值,所以实际上就是1+4+5。
2:什么叫感觉呢?看起来没问题呀,就是i循环之内嵌套了j循环,难道结果不是20吗?

1题
首先k++,k++
的意思就是k=k+2;
关于为什么会等于10
这个问题是因为在
for(k=2;k<6;k++,k++)
{
.....
{
{}中有个s=1这一项,也就是说
当k从2变到4后
又从新给s赋值使s为1;
再执行s=1后的语句,当s=10后
执行再执行k++,k++这是k变成6
不满足k<6条件循环结束
所以s=10哈。
2题:
你可以这样看:
第一个for他执行的语句
是for(j=3;j<=19;j+=4)m++;
然后在往里面走,
第二个for执行的是m++;
这就是所谓的嵌套式循环。
其实不难理解多看看书你就懂了。

第一个两个K++跟K+=2效果一样,不过不知道运算速度是否一样?