鱼C论坛

 找回密码
 立即注册
查看: 3335|回复: 4

为啥不能进循环

[复制链接]
发表于 2018-4-28 17:39:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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);
}

为啥不能进循环,在线等,急
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-28 18:22:04 | 显示全部楼层
s/(10^n)==0  等于0循环,看你输入什么数了啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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的定义变成了第八行),控制流不会跳出循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-4-28 21:31:21 From FishC Mobile | 显示全部楼层
s/(10^n)==0你要它成立才进入循环啊,这就要看你s输入什么数了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-1 21:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表