for语句的循环赋初值
本帖最后由 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语句里的赋初值,不能成功赋值,
我觉得你应该这么写
int main()
{
int w=0;
for (int a=1;a<=4;a++)
{
for (int b=1;b<=4;b++)
{
for (int c=1;c<=4;c++)
{
if (a!=b&&b!=c&&c!=a)
{
w++;
printf("%d%d%d\n",a,b,c);
}
}
}
}
printf("一共组成%d个数\n",w);
system("pause");
return 0;
}
for循环执行第一次的时候才是三个语句都执行,后边的话就只执行后边两句判断和自增,第一句已经不执行啦,楼主可明白了? 本帖最后由 feitianqu 于 2014-3-11 09:32 编辑
sum=sum+一?
sum=sum+I
你给的什么条件啊如果sum=0那么sum就加100次1什么逻辑啊
int i=1,sum=0;
for (i=1;i<=100;i++)
{
sum=sum+i;
}
直接SUM=100得了
void main()
{
int i=1,sum=0;
for (i=1;i<=100;i++)
{
sum=sum+1;
}
printf("%d\n",sum);
}
本帖最后由 feitianqu 于 2014-3-11 09:53 编辑
不要用电脑不会的算法
电脑习惯穷举法
int main()
{
int w=0;
int a,b,c;
for (a=1;a<=4;a++)
{
for (b=1;b<=4;b++)
{
for (c=1;c<=4;c++)
{
if (a!=b&&b!=c&&c!=a)
{
w++;
printf("%d%d%d\n",a,b,c);
}
}
}
}
printf("一共组成%d个数\n",w);
return 0;
}
zhaopengfei 发表于 2014-3-11 08:26 static/image/common/back.gif
for循环执行第一次的时候才是三个语句都执行,后边的话就只执行后边两句判断和自增,第一句已经不执行啦,楼 ...
刚开始的确没有注意到这个问题,理解成每次循环都会把C的值赋为1,所以才想到在上层for语把C的值赋回1,理论上来说,这也没错~我上面的写法是受了按键精灵里for的语句的影响~~
谢了哈~~~~ machimilk 发表于 2014-3-10 23:22 static/image/common/back.gif
我觉得你应该这么写
谢谢大虾有空来回答,问题己经解了,再次感谢~~ zhaopengfei 发表于 2014-3-11 08:26 static/image/common/back.gif
for循环执行第一次的时候才是三个语句都执行,后边的话就只执行后边两句判断和自增,第一句已经不执行啦,楼 ...
谢谢大虾有空来回答,问题己经解了,再次感谢~~
页:
[1]