如何解决意外输出 -scanf 和功能检查
所以我正在尝试编写这个程序,但无论输入是什么,我都会得到 10。我的功能对我来说似乎是正确的,所以它是一个 scanf 问题吗?
编写一个程序输入 10 个整数,并决定其中有多少满足 以下规则: abcd = (ab + cd)2 例如3025=(30+25) 使用接收整数参数的函数,如果满足上述条件,则返回 1 规则,否则返回 0。
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;
}
}
解决方法
我认为问题是 check
函数,
if (((x / 100) + (x % 100)) * ((x / 100) + (x % 100))) // <---- anything not zero will be true
{
return 1;
}
if
中的表达式会将任何不为零的整数转换为真。所写的表达式为 if (x * x)
,仅当 x == 0
为假。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。