为什么我的循环用BREAK跳出不是跳出整个循环
从键盘输入的10个整数中,找到第一个能被7整除的数,若找到打印此数后退出循环,若未找到则打印“未找到此数”#include<stdio.h>
#define N 3
int main(){
int a;
int i;
for(i=0;i<N;i++){
scanf("%d",&a);
}
for(i=0;i<N;i++){
if(a%7==0){
printf("%d\n",a);
break;
}
else
printf("\n未找到此数\n");
}
return 0;
}
要如何修改,
我是这样改的,
#include<stdio.h>
#define N 3
int main(){
int a;
int i;
for(i=0;i<N;i++){
scanf("%d",&a);
}
for(i=0;i<N;i++){
if(a%7==0){
printf("%d\n",a);
return 0;
}
}
printf("\n未找到此数\n");
return 0;
}
但是我知道第一个错在break循环跳出不对,但是我不知道如何修改,想问下如何修改才能正确得出结果? 本帖最后由 xuzitong 于 2022-8-3 21:24 编辑
首先,第一个程序是有错误的,但是错误不只是你修改的地方。还有#define N 3。题目要求键盘输入10个数,你这里只有3个。其次,你可以加一个标志,例如int find = 0; 然后if里面找到了, find = 1; 最后根据find是否等于1来printf,这个能够解决你的打印问题。 首先,你确定是十个数??
定义一个BOOL变量find=0
若找到,退出并将find=1
循环后,find如果还是0,就输出没找到 xuzitong 发表于 2022-8-3 21:23
首先,第一个程序是有错误的,但是错误不只是你修改的地方。还有#define N 3。题目要求键盘输入10个数,你 ...
那个N设置成3是方便我验证程序是否正确,为啥我这个break不能跳出全部循环,知能跳出当前循环?如何才能跳出全部循环,是只有设置中间变量才能跳出嘛? aaron0919 发表于 2022-8-3 21:23
首先,你确定是十个数??
定义一个BOOL变量find=0
若找到,退出并将find=1
那个N设置成3是方便我验证程序是否正确,为啥我这个break不能跳出全部循环,知能跳出当前循环?如何才能跳出全部循环,是只有设置中间变量才能跳出嘛? break 确实只作用于最近一层循环;设置中间变量是可行的方法,另外像您改的那样直接 return 显然也是可行的,也可以用 goto 语句来跳出多层循环。 #include <stdio.h>
#define N 10
int main(void)
{
int a , i ;
for(i = 0 ; i < N ; i ++) scanf("%d", & a) ;
for(i = 0 ; i < N ; i ++) if(a % 7 == 0) break ;
if(i < N) printf("%d\n" , a) ; // 如果找到,必然不能完成循环,一定会满足条件 i < N
else printf("未找到此数\n") ;
}
页:
[1]