C语言的for循环出错问题
答案:6 悬赏:40 手机版
解决时间 2021-02-12 03:25
- 提问者网友:自食苦果
- 2021-02-11 21:33
#include
main()
{
int x,y,z,r;
for(x=6;x<13;x++)
for(y=101;y<400;y++)
for(z=51;z<200;z++)
for(r=2;r<30;r++)
if((y-z)+(x*(r-17))==318)
printf("%d,%d,%d,%d\n",x,y,z,r);
system("pause");
}
运行后,得出第一个结果后,就不经过f((y-z)+(x*(r-17))==318)直接按循环输出了,哪里出了问题?
结果
6,297,51,29
6,298,52,29
6,299,53,29
6,300,54,29
6,301,55,29
6,302,56,29
。。。。。。
最佳答案
- 五星知识达人网友:轻熟杀无赦
- 2021-02-11 22:05
首先你这个程序的风格就非常的不正确,for后面的{}符号一定要加,不然以后你要找你for循环的有效空间都很困难,程序也很难让别人读懂
其次你的程序没什么问题啊,至于只有当(y-z)+(x*(r-17))==318这个条件成立后才会输出,我这边vc6试了没问题
要是你用别的编译器你可以把for后面的{}符号都加全了再调试一下
全部回答
- 1楼网友:雪起风沙痕
- 2021-02-12 03:24
因为这些数本来就满足条件呀,你看看:
x y z r (y-z)+(x*(r-17)
6,297,51,29 (297-51) +(6*(29-17)) =318
6,298,52,29 (298-52) +(6*(29-17)) =318
6,299,53,29 (299-53) +(6*(29-17)) =318
6,300,54,29
6,301,55,29
6,302,56,29
- 2楼网友:旧脸谱
- 2021-02-12 01:48
#include<stdio.h>
main()
{
int x,y,z,r;
for(x=6;x<13;x++)
for(y=101;y<400;y++)
for(z=51;z<200;z++)
for(r=2;r<30;r++)//我把它们后边的分号都去掉了,不知道你是不是特意带的分号。
//// x=6;y=101;z=51;r=2;////////有了这一句循环好像永远跳不出去吧。
if(y-z+x*(r-17)==318)///////////这里边 的判断关系不是赋值关系。=换成==了。
printf("%d,%d,%d,%d\n",x,y,z,r);
else ;///这里我加了一个分号,但我觉得else应该去掉。
system("pause");
}
- 3楼网友:老鼠爱大米
- 2021-02-12 01:06
难道你是想只输出一个结果就跳出循环?
那就改成
if((y-z)+(x*(r-17))==318)
{
printf("%d,%d,%d,%d\n",x,y,z,r);
system("pause");
return 0;
}
- 4楼网友:低音帝王
- 2021-02-11 23:45
如果没有经过if((y-z)+(x*(r-17))==318),则输出的第一组数就是6 101 51 2了,显然程序是经过了if判断,并且你的结果也是对了,可以代入试一试,你是不是想在得到一组结果就pause,那么需要括号如下:
main()
{
int x,y,z,r;
for(x=6;x<13;x++)
for(y=101;y<400;y++)
for(z=51;z<200;z++)
for(r=2;r<30;r++)
if((y-z)+(x*(r-17))==318)
{ printf("%d,%d,%d,%d\n",x,y,z,r);
system("pause");}
}
- 5楼网友:人间朝暮
- 2021-02-11 23:04
没有弄错 , 你的程序是对的
都经过 f((y-z)+(x*(r-17))==318) 判断啊
你还没有写完呢 x从6到12
6,297,51,29
6,298,52,29
.............
7,304,56,27
7,304,63,28
.............
7,349,115,29
..............
8,311,65,26
8,311,73,27
................
9,314,86,27
9,314,95,28
9,314,104,29
............
9,349,139,29
..............
10,316,88,26
10,316,98,27
...............
10,349,151,29
.............
11,317,131,29
11,318,55,22
11,318,66,23
11,318,77,24
................
11,349,163,29
......................
12,319,61,22
...............
12,349,175,29
请按任意键继续. . .
不过我的只能显示有限个数值 就是x是6的时候出来的结果都显示不完 哈哈
按你的程序 我的只显示x=12的时候的值,前面的被覆盖了(个人的原因)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯