求高手解答一个C语言问题!

#include<stdio.h>intmain(){inta,b,c,i,j=0;scanf("%d%d%d",&a,&b,&c);for(i=10;i<=100;i+... #include <stdio.h>
int main()
{
int a,b,c,i,j=0;
scanf("%d %d %d",&a,&b,&c);
for(i=10;i<=100;i++)
if((a==i%3)&&(b==i%5)&&(c==i%7)){
printf("%d",i);
j++;
break;
}
if(j==0)printf("No answer");
return 0;
}
嗯,就是这段韩信点兵的程序(这段是修改后的,经测试正确);
附上错误程序:
#include <stdio.h>
int main()
{
int a,b,c,i,j=0;
scanf("%d %d %d",&a,&b,&c);
for(i=10;i<=100;i++){
if((a==i%3)&&(b==i%5)&&(c==i%7))
printf("%d",i);
j++;
break;
}
if(j==0)printf("No answer");
return 0;
}
我的大括号开始是这样的,为什么测试没有结果?求解?
展开
 我来答
piaoxuwuyu
2013-07-19 · TA获得超过208个赞
知道小有建树答主
回答量:138
采纳率:0%
帮助的人:111万
展开全部
其实这个是因为你错误的解答里面的 if 语句加没加括号的问题。如果是一个语句,那么不需要加括号。比如你里面的 if(j==0)printf("No answer"); 这句话,其实就是 if(j==0) { printf("No Answer");},
而你的if 应该包含3条语句: 1--》 printf("%d",i); 2--》 j++,3--》break 所以要加上大括号。

对于for来说,也是这样。之所以没加大括号的原因是因为把里面的if语句当成一个语句。

其实最好都加上大括号,这是C语言编程里面的一个很好的习惯。
更多追问追答
追问
那么for后面如果不加大括号,执行到哪呢?只执行一句if吗?
追答
if是一个完整的语句,包含了它内括号里的语句
百度网友c59c581
2013-07-19 · TA获得超过196个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:113万
展开全部
for(i=10;i<=100;i++){
if((a==i%3)&&(b==i%5)&&(c==i%7))
printf("%d",i);
j++;
break;
}
这里if没有{}括起来,导致必然执行j++;然后break;
此时j==1也不会输出noanswer啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GodHlpMe
2013-07-19 · TA获得超过8455个赞
知道大有可为答主
回答量:4600
采纳率:46%
帮助的人:946万
展开全部
break不在if 范围内,
所以 第一次循环就因直接执行break而中止了。
-----------------------------------------------------------
本来是第一个答的,改了两个字就落到最后了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SpaceShip9
2013-07-19
知道答主
回答量:9
采纳率:0%
帮助的人:6.2万
展开全部
第一次循环时,if括号内表达式为假,不执行printf语句,然后执行j++,执行break,跳出for循环,此时j=1。下来的if语句也不执行,结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式