永发信息网

回文函数的定义与调用问题

答案:2  悬赏:30  手机版
解决时间 2021-12-30 04:40
各路大神,请帮忙看一下这个小程序,我要问的问在注释中,有牛人吗?

#include

int palind(char str[],int k,int i)//定义回文函数 为什么此函数要有三个参数呢?
{
if(str[k]==str[i-k])
return 1;
else
return 0;
}

int main(void)
{
int i=0,n=0;
char ch,str[20];
while((ch=getchar())!='\n')
{
str[i]=ch;
i++;
}

if(i%2==0)
n=palind(str,(i/2),i-1);//str后边的数据长度也可以省去??!!调用函数时函数参数的数据类 型可以省略??
else
n=palind(str,(i/2-1),i-1);//为什么i要减一呢?

if(n==0)
printf("不是回文数\n");
else
printf("是回文数\n");
return 0;
}
最佳答案
只解释一条
n=palind(str,(i/2),i-1);//str后边的数据长度也可以省去??!!调用函数时函数参数的数据类 型可以省略??
在调用函数时 如果参数为指针 那么可以用同类型数组名作为参数传递 这时数组将退化为对应指针
所以这里的调用是合法的
调用时不需要写数据类型 也不可以写 写的话会报错

至于其他两处的问题 不解释 因为这个程序这样的写法是错误的 无法真正判断是否为回文
如果你可以运行的话 可以试试
2113这个输入 它会判断为回文
全部回答
我对你的函数做了修改结果可以正确运行,修改如下 int mirror(char *p) { int len=0;char *t=p; while(*(t++))len++; //变量len 其实可以不要 t=t-2; while(( *p==*t ) && (t>=p) ) // { p++;t--; } if(t
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯