C语言for语句
答案:4 悬赏:60
解决时间 2021-12-22 01:51
- 提问者网友:朱砂泪
- 2021-12-21 16:46
for语句()中三个表达式是不是都是可选项?比如第一个赋初值的?
比如下段代码,这样运行无输出,但是如果在for语句()中赋初值,就可以正常运行,求解~~!
#include void main()
{
int m=1,n=1,a,b;
int gcd(int,int);
for(;m<=667;m++)for(;n<=667;n++){
a=gcd(m,n);b=m*n/a;
if (m+n==667&&b/a==120)printf("%d,%d\n",m,n);
}
}
int gcd(int m,int n){
int max,min,mo;
if(m>=n){
max=m;min=n;}
else {
max=n;min=m;}
do{
mo=max%min;
max=min;
min=mo;
}while(mo!=0);
return max;
}
最佳答案
- 二级知识专家网友:冷态度
- 2021-12-21 17:48
for中三个语句都是可以省略了
例如
for(; ;)
这样的写法也是正确的。
你的上面是双重循环,如果第二个赋初值提出来放在 第一个for循环上面 和 放在第二个for中赋初值是不相同的。
关键看你想要的是什么?
全部回答
- 1楼网友:留下所有热言
- 2021-12-21 20:00
1) for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项, 即可以缺省,但“;”不能缺省。
2) 省略了“表达式1(循环变量赋初值)”, 表示不对循环控制变量赋初值。
3) 省略了“表达式2(循环条件)”, 则不做其它处理时便成为死循环。
例如:
for(i=1;;i++)sum=sum+i;
相当于:
i=1;
while(1)
{sum=sum+i;
i++;}
4) 省略了“表达式3(循环变量增量)”, 则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。
例如:
for(i=1;i<=100;)
{sum=sum+i;
i++;}
5) 省略了“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”。
例如:
for(;i<=100;)
{sum=sum+i;
i++;}
相当于:
while(i<=100)
{sum=sum+i;
i++;}
6) 3个表达式都可以省略。
例如:
for(;;)语句
相当于:
while(1)语句
7) 表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。
例如:
for(sum=0;i<=100;i++)sum=sum+i;
8) 表达式1和表达式3可以是一个简单表达式也可以是逗号表达式。
for(sum=0,i=1;i<=100;i++)sum=sum+i;
或:
for(i=0,j=100;i<=100;i++,j--)k=i+j;
9) 表达式2一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。
例如:
for(i=0;(c=getchar())!=’\n’;i+=c);
又如:
for(;(c=getchar())!=’\n’;)
printf(“%c”,c);
- 2楼网友:冷眼_看世界
- 2021-12-21 19:05
for中的三个表达式分别表示 初始条件 终止条件 和 变化条件
三个都不一定需要,但是在你的程序中可以有。
比如for(;;)就是可以没有的情况,和while(1)等价
- 3楼网友:年轻没有失败
- 2021-12-21 18:22
可能是编译器问题,一般来说不赋初值是可以的,如果for里面三个都是空的话,那就是无限循环
我要举报
大家都在看
推荐资讯