首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >意外的输出-scanf和函数检查

问意外的输出-scanf和函数检查
EN

Stack Overflow用户
提问于 2020-12-22 21:07:41
回答 1查看 44关注 0票数 0

所以我试着写这个程序,但是不管输入是什么,我都得到了10。我的函数对我来说似乎是正确的,所以这是一个scanf问题吗?

编写一个程序来输入10个整数,并确定其中有多少满足以下规则: abcd = (ab + cd)2例如3025=(30+25)使用一个接收整数参数的函数,如果它满足上述规则,则返回1,否则返回0。

代码语言:javascript
复制
int check(int n);
int main(void)
{
    int n, i, j = 0;
    printf("Input 10 integers: ");
    for (i = 0; i < 10; i++)
    {
        scanf("%d", &n);
        if (check(n) == 1)
        {
            j++;
        }
    }
    printf("%d\n", j);
}
int check(int x)
{
    if (((x / 100) + (x % 100)) * ((x / 100) + (x % 100))) 
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-22 21:16:30

我认为问题在于check函数,

代码语言:javascript
复制
if (((x / 100) + (x % 100)) * ((x / 100) + (x % 100)))  // <---- anything not zero will be true
{
    return 1;
}

if中的表达式会将任何非零的整数转换为true。表达式的写法是if (x * x),只有当为x == 0时才为false。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65409304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档