小小小战五渣 发表于 2018-4-28 17:39:53

为啥不能进循环

#include<stdio.h>
main()
{
        int i=0,n=1,t=0;
        long s;
        scanf("%ld",&s);
        for(n;s/(10^n)==0;n++)
        {
                i=s%(10^n)-i;
        if (i%2==0)
                t=i*(10^(n-1)+t;
        }
        printf("%d",t);
}

为啥不能进循环,在线等,急

ba21 发表于 2018-4-28 18:22:04

s/(10^n)==0等于0循环,看你输入什么数了啊。

ABC23 发表于 2018-4-28 19:41:25

#include<stdio.h>
main()
{
      int i=0,n=1,t=0;
      long s;
      scanf("%ld",&s);
      for(n;s/(10^n)==0;n++)
      {
                i=s%(10^n)-i;
      if (i%2==0)
                t=i*(10^(n-1)+t;
      }
      printf("%d",t);
}
===================

1. 第二行:int main(void)
2. 第七行:n未定义
3. 第十一行:括号不匹配,应该在行尾加上括号
4. 第十四行:return 0;写一下吧

至于为什么不会跳出循环,在外面定义好n后因为每次判断都在第八行(原第七行,因为加上n的定义变成了第八行),控制流不会跳出循环。

wjp 发表于 2018-4-28 21:31:21

s/(10^n)==0你要它成立才进入循环啊,这就要看你s输入什么数了

BFSDT 发表于 2018-4-28 22:39:12

本帖最后由 BFSDT 于 2018-4-28 22:40 编辑

s是整型,(10^n)也是整型,使用/会进行截断处理,要使s/(10^n)==0为真的时候才会进入循环,所以必须满足s小于(10^n),
(10^n)每次循环的数值依次为11 8 9 14 15 12 13 2 3 0,所以s要进入第一次循环,必须小于11,要进入第二次循环,必须小于8,以此类推。

还有t=i*(10^(n-1)+t;要改成t=i*(10^(n-1))+t;
页: [1]
查看完整版本: 为啥不能进循环