如何在c语言中使用布尔函数
任何人请告诉我,这个代码有什么问题如何在c语言中使用布尔函数,c,boolean,C,Boolean,任何人请告诉我,这个代码有什么问题 #include<stdio.h> bool func(char *,int); void main() { char *a="Interview"; if(func(a,9)) { printf("True"); } else { printf("False"); } } bool func(char *s, int len) { if(len < 2)
#include<stdio.h>
bool func(char *,int);
void main()
{
char *a="Interview";
if(func(a,9))
{
printf("True");
}
else
{
printf("False");
}
}
bool func(char *s, int len)
{
if(len < 2)
return true;
else
return s[0] == s[len-1] && func(&s[1], len-2);
}
#包括
布尔函数(字符*,整数);
void main()
{
char*a=“面试”;
if(func(a,9))
{
printf(“真实”);
}
其他的
{
printf(“假”);
}
}
布尔函数(字符*s,整数len)
{
if(len<2)
返回true;
其他的
返回s[0]==s[len-1]&func(&s[1],len-2);
}
我相信这个函数总是返回
TRUE
。这是一个面试问题。但是,当我试图编译它时,它显示了6个错误 我猜它不知道什么是bool
和true
bool
不是C语言中的基本数据类型,您需要额外的包含:
#include <stdbool.h>
这是真的。您可以跳过这里的递归逻辑,因为它不会修改字符串,只需查看第一部分:
s[0] // this has to be 'I'
== // we need so what we compare against has to be 'I' as well
s[len-1] // This will be 'w'
所以。。。这不会变成真的。。。谁关心递归部分的ANDIN(
&&
)呢?我怀疑编译器甚至会对此进行优化,因为这里的所有内容都是硬编码的。您只需包含正确的标题即可
#include <stdbool.h>
#包括
或者,您可以使用不需要包含任何内容的
\u Bool
类型bool
只是此类型的别名。顺便说一下,别忘了用C99编译。您缺少#include
。main
的返回类型应为int
。您可以使用int代替bool,使用1/0代替true/false。或者#define bool int,#define true 1,#define false 0语法错误:标识符'func'@JX是的,我可以,但这是一个面试问题。。所以我不能对这个修正做任何修正,bool不是一个原始数据类型,但它是C99中的标准数据类型,下面(因此stdbool)请修正我。。。特定函数将始终返回TRUE
或not\,因为<代码>s[len-1]&函数(&s[1],len-2)代码>最后func(&s[1],len-2)
返回TRUE
,这意味着它变成s[len-1]&&TRUE
,除0
之外的任何内容也被称为TRUE
。这就是为什么。请纠正我。如果我的逻辑是错误的。@coders-对。。。所以s[len-1]&&true
将是真的,但它不会就此结束。。。您需要有s[0]==s[len-1]
才能使其为真。那是不可能的。查看我的文章中关于logic@Mike谢谢但是程序显示错误。致命错误C1083:无法打开包含文件:“stdbool.h”:没有这样的文件或目录
为什么会这样??
#include <stdbool.h>