C语言 习题~~~

来源:百度知道 编辑:UC知道 时间:2024/06/22 01:15:49
第一题:
intk,j,s
for(k=2;k<6;k++,k++)
{s=1;
for(j=k;j<6;j++)s+=j);
}
printf("%d\n",s);
程序段的输出结果是10...为什么??!
这个是书上的选择题.....我照搬题目的..... 我也不晓得....

这道题逻辑没有错 只是书写上有些错误。
注意题中 初始k=2 S=1是for循环中的 循环体执行一次 S值改变了
但是K=4时 再次进入循环体中 s再次被赋值1
此时 内层循环可以看作 s=1;
for(j=4;j<6;j++)s+=j
即 s=1+4+5=10

for(k=2;k<6;k++,k++)
这个循环内部没有对k进行操作,因此相当于k从2循环到6且步长为2,实际上只循环了两次,k的取值分别为2和4。

循环内部:
s=1;给s重新赋了值,因此第一次循环的s值对结果没有影响,我们只看k=4的第二次循环。
for(j=k;j<6;j++),因为k=4,因此循环了两次,j的取值分别为4和5。
每次循环将j加到s上,因此s=1+4+5=10,最终结果是10。

#include<stdio.h>
void main()
{
int k,j,s;
for(k=2;k<6;k=k+2)
{
s=1;
for(j=k;j<6;j++)
s+=j;
}
printf("%d\n",s);
}
这是正确的程序!

你这段程序错误太多了,编译没问题么?呵呵 705642839 真水无香,有事加我,呵呵

......题目是错的。

先去把书上的程序抄对了再拿出来

你这段代码竟能编译通过,诧异!