1163028233 发表于 2022-8-3 21:16:04

为什么我的循环用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:23:04

本帖最后由 xuzitong 于 2022-8-3 21:24 编辑

首先,第一个程序是有错误的,但是错误不只是你修改的地方。还有#define N 3。题目要求键盘输入10个数,你这里只有3个。其次,你可以加一个标志,例如int find = 0; 然后if里面找到了, find = 1; 最后根据find是否等于1来printf,这个能够解决你的打印问题。

aaron0919 发表于 2022-8-3 21:23:34

首先,你确定是十个数??
定义一个BOOL变量find=0
若找到,退出并将find=1
循环后,find如果还是0,就输出没找到

1163028233 发表于 2022-8-3 22:05:42

xuzitong 发表于 2022-8-3 21:23
首先,第一个程序是有错误的,但是错误不只是你修改的地方。还有#define N 3。题目要求键盘输入10个数,你 ...

那个N设置成3是方便我验证程序是否正确,为啥我这个break不能跳出全部循环,知能跳出当前循环?如何才能跳出全部循环,是只有设置中间变量才能跳出嘛?

1163028233 发表于 2022-8-3 22:06:25

aaron0919 发表于 2022-8-3 21:23
首先,你确定是十个数??
定义一个BOOL变量find=0
若找到,退出并将find=1


那个N设置成3是方便我验证程序是否正确,为啥我这个break不能跳出全部循环,知能跳出当前循环?如何才能跳出全部循环,是只有设置中间变量才能跳出嘛?

dolly_yos2 发表于 2022-8-3 22:20:40

break 确实只作用于最近一层循环;设置中间变量是可行的方法,另外像您改的那样直接 return 显然也是可行的,也可以用 goto 语句来跳出多层循环。

jackz007 发表于 2022-8-3 22:45:59

#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]
查看完整版本: 为什么我的循环用BREAK跳出不是跳出整个循环