当我运行它时,我的代码没有响应,我似乎无法弄清楚问题,但我最好的猜测是else
的{{1}}部分中的递归调用部分。
strcheck
答案 0 :(得分:3)
r
未初始化。这将调用未定义的行为,您可能会获得垃圾值。另一个是
if(ptr=='\0')
您正在为ptr
指定空终结符,这是错误的。您必须使用取消引用运算符*
,然后分配\0
。
if(*ptr=='\0')
答案 1 :(得分:0)
问题在于递归函数strcheck
的基本情况,在这一行中:
if(ptr=='\0')
它应该是:
if(*ptr=='\0')
此外,r
变量应该是函数的另一个参数:
int strcheck(char *ptr, int r)
{
if(ptr=='\0')
return 0;
else
{
// TODO: fix the two lines below:
r = alphcheck(ptr)+r;
strcheck(++ptr);
return r;
}
它是一个累加器:从main
你应该调用第二个参数等于0的函数:
res = strcheck(name, 0);
以下是完整的工作代码:
#include<stdio.h>
#include<stdlib.h>
int alphcheck(char *ptr)
{
return (*ptr=='a'||*ptr=='e'||*ptr=='i'||*ptr=='o'||*ptr=='u') ? 1 : 0;
}
int strcheck(char *ptr, int r)
{
if(*ptr=='\0') return r;
else
{
r += alphcheck(ptr);
return strcheck(++ptr, r);
}
}
int main()
{
int res;
char name[] = "sahirnoorali";
res = strcheck(name, 0);
printf("%d\n",res);
return 0;
}
答案 2 :(得分:0)
这是工作中的骰子......代码中有错误
int strcheck(char *ptr)
{
static int r = 0; // Declare r as static and initialize it to 0
if(*ptr=='\0') // Comparision problem.
return 0;
else
{
r = alphcheck(ptr)+r;
strcheck(++ptr);
return r;
}
}