求高手解答一个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;
}
我的大括号开始是这样的,为什么测试没有结果?求解? 展开
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;
}
我的大括号开始是这样的,为什么测试没有结果?求解? 展开
展开全部
其实这个是因为你错误的解答里面的 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语言编程里面的一个很好的习惯。
而你弊贺的if 应该包含3条语句: 1--》 printf("%d",i); 2--》 j++,3--》break 所以要加上大括号。
对于for来说,也是这样。之所以没加大括号的原因是因为把里面的if语句当成一个语句。
其实最好都加上大括号,这是C语言编程里面的一个很好的习惯。
更多追问追答
追问
那么for后面如果不加大括号,执行到哪呢?只执行一句if吗?
追答
if是一个完整的语句,包含了它内括号里的语句
展开全部
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啊
if((a==i%3)&&(b==i%5)&&(c==i%7))
printf("%d",i);
j++;
break;
}
这锋岁里if没有旁漏{}括起来,导致必然执行j++;然后break;
此时j==1也不会运基烂输出noanswer啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
break不在if 范围内,
所以 第一次循环就因直接执行break而中键斗止了。
-----------------------------------------------------------
本来是第一个答稿伍磨的橘判,改了两个字就落到最后了
所以 第一次循环就因直接执行break而中键斗止了。
-----------------------------------------------------------
本来是第一个答稿伍磨的橘判,改了两个字就落到最后了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一次循环时,if括号内表毕塌达式为假,不执行printf语句,然后执行j++,执行break,跳出for循环,此时j=1。下来的if语句也不棚悄执链数渣行,结束。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询