|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 mack1983 于 2014-3-10 21:45 编辑
第一步:
代码
#include <stdio.h>
void main()
{
int i=1,sum;
for (sum=0;i<=100;i++)
{
sum=sum+1;
}
printf("%d\n",sum);
}
第二步:
第三步:
另一个例题,1.2.3个循环,第一到二个循环的时候,成功赋值给了变量,第三个循环执行完后再返回到第二循环时for语句中赋初值不成功~
直接上代码和图
题目:有1。2。3。4个数字,能组成多少个互不相同且无重复数字的三位数?
都是多少?
程序分析:可真在百位,十位,个位的数字都是1。2。3。4。组成所有的排列后
再去掉不满足的条件的排列。
#include <stdio.h>
void main()
{
int i,a=1,b,c,w=0;
for (b=1;a<=4;a++)
{ //b=1;
for (c=1;b<=4;b++)
{ //c=1;
for (;c<=4;c++)
{
if (a==b||a==c||b==c)
{
}
else
{
w++;
printf("%d%d%d\n",a,b,c);
}
}
}
}
printf("一共组成%d个数\n",w);
}
第四步:
问题来了,当第三个循环执行完后,返回到第二个循环里,是要把C的值再次改成1的,但单步调试看到,明显没有把C改回1,仍然还是5
1.
执行第二个for语句之前C=5
2.
执行for后,C还是等于5,明显赋初值没有成功
最后,我把C的赋值,放进循环体赋值就可正确了,这是为什么?当第一个循的b的值也要放进循环体,实验结果才完全正确
我的理解是,按这样说,如果赋初值只有在第一次循环才生效,第二次再从别的循环返回来,就不会再赋值,按推算,应该是如果赋初值不有其它赋值,也应该会同样不会赋值成功,还请有空的大虾指点一下~
有些图片弄不上去,不给上传了~~
总之问题出在第二次返第二个循环时,for语句里的赋初值,不能成功赋值,
|
|