标题:为什么在i=y的时候不退出循环 而继续运行?? 大佬们哪里出错了
只看楼主
WAN_N
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-8-17
结帖率:75%
已结贴  问题点数:10 回复次数:3 
为什么在i=y的时候不退出循环 而继续运行?? 大佬们哪里出错了
int main()//这是一个求绝对素数的  我首先判断它是不是素数 然后嵌套判断他的逆序数是不是素数
{
    int i,t,a,y=0;
    scanf("%d",&a);
    if(a<=10)
        printf("%d不是绝对素数1\n",a);
    else
    for(i=2;i<a;i++)
    {
        if(a%i==0)
        {
        
            printf("%d 不是绝对素数2\n",a);
            break;
        }
        else if(i==a-1)
        {
            t=a;
            while(t>0)
            {
            
                y=y*10+t%10;
                t=t/10;
            }
            for(i=2;i<y;i++)
            {
            
                if(y%i==0)
                {
               
                    printf("%d 不是绝对素数3\n",a);
                    printf("%d %d\n",i,y);
                    break;
                }
                else if(i==y-1)
                    printf("%d是绝对素数\n",a);
            }
        }

    }
return 0;

}

输入31
31是绝对素数
31 不是绝对素数3
13 1313
31 不是绝对素数3
3 131313
31 不是绝对素数3
13 13131313
31 不是绝对素数3
13 1313131313
31 不是绝对素数3
7 1598107441
31 不是绝对素数3
23 896954161
31 不是绝对素数3
3 1649897265
31 不是绝对素数3
5 1780969265
31 不是绝对素数3
97 2003267377
搜索更多相关主题的帖子: 绝对 退出 出错 printf 素数 
2020-09-27 23:16
WAN_N
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-8-17
得分:0 
在最后一个for循环中 i会干扰那个前面if语句中的i  但是我不知道它是怎么运行的  干扰的过程
2020-09-27 23:50
WAN_N
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-8-17
得分:0 
是不是   那个i重新赋值后再第一个for循环中进行判断 就不会结束陷入了循环
2020-09-27 23:52
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:10 
程序代码:
int main()//这是一个求绝对素数的  我首先判断它是不是素数 然后嵌套判断他的逆序数是不是素数
{
    int i,j,t,a,y=0;
    scanf("%d",&a);
    if(a<=10)
        printf("%d不是绝对素数1\n",a);
    else
        for(i=2;i<a;i++)
        {
            if(a%i==0)
            {
                printf("%d 不是绝对素数2\n",a);
                break;
            }
            else if(i==a-1)
            {
                t=a;
                while(t>0)
                {
                    y=y*10+t%10;
                    t=t/10;
                }
                for(j=2;j<y;j++)
                {
                    if(y%j==0)
                    {
                        printf("%d 不是绝对素数3\n",a);
                        printf("%d %d\n",j,y);
                        break;
                    }
                    else if(j==y-1)
                        printf("%d是绝对素数\n",a);
                }
            }
        }
    return 0;

}

将else if里的i变量换一个,否则循环后,不会退出for(i=2;i<a;i++)循环。

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-09-28 08:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503296-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017229 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved