回文函数的定义与调用问题
解决时间 2021-12-30 04:40
- 提问者网友:最爱你的唇
- 2021-12-29 11:11
各路大神,请帮忙看一下这个小程序,我要问的问在注释中,有牛人吗?
#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;
}
最佳答案
- 五星知识达人网友:舍身薄凉客
- 2021-12-29 11:48
只解释一条
n=palind(str,(i/2),i-1);//str后边的数据长度也可以省去??!!调用函数时函数参数的数据类 型可以省略??
在调用函数时 如果参数为指针 那么可以用同类型数组名作为参数传递 这时数组将退化为对应指针
所以这里的调用是合法的
调用时不需要写数据类型 也不可以写 写的话会报错
至于其他两处的问题 不解释 因为这个程序这样的写法是错误的 无法真正判断是否为回文
如果你可以运行的话 可以试试
2113这个输入 它会判断为回文
全部回答
- 1楼网友:归鹤鸣
- 2021-12-29 13:08
我对你的函数做了修改结果可以正确运行,修改如下
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
我要举报
大家都在看
推荐资讯