
一道C++的题目,请帮忙解答一下几条语句
#include<iostream.h>boolfun(char*str)//请问这个bool函数究竟是怎么实现功能的,为什么看不懂??{intlen=0;for(;st...
#include <iostream.h>
bool fun(char* str) //请问这个bool函数究竟是怎么实现功能的,为什么看不懂??
{
int len=0;
for(;str[len] != 0; len ++); //这里的for循环里一开始就是 ; 是什么意思呢?
len--;
for(int i=0; i<len; i++,len--)
{
if( str[i] != str[len] )
return 0;
}
return 1;
}
void main()
{
char str[1024];
cout<<"请输入一行文字"<<endl;
cin.getline(str,1024);
cout<<fun(str)<<endl;
return;
} 展开
bool fun(char* str) //请问这个bool函数究竟是怎么实现功能的,为什么看不懂??
{
int len=0;
for(;str[len] != 0; len ++); //这里的for循环里一开始就是 ; 是什么意思呢?
len--;
for(int i=0; i<len; i++,len--)
{
if( str[i] != str[len] )
return 0;
}
return 1;
}
void main()
{
char str[1024];
cout<<"请输入一行文字"<<endl;
cin.getline(str,1024);
cout<<fun(str)<<endl;
return;
} 展开
3个回答
展开全部
//程序应该是判断输入字符串是不是对称
#include <iostream.h>
bool fun(char* str) //请问这个bool函数究竟是怎么实现功能的,为什么看不懂??
{
int len=0;
for(;str[len] != '\0'; len ++); //这是是不是应该这样写
//for空循环,直到字符串结束符,最终得到字符串长度
len--; //此处是为了减去'\0'占用的一个长度
for(int i=0; i<len; i++,len--)
{
if( str[i] != str[len] )//这个是判断字符串首位对称位置的字符是不是相等
return 0; //不相等返回0
}
return 1;
}
void main()
{
char str[1024];
cout<<"请输入一行文字"<<endl;
cin.getline(str,1024);
cout<<fun(str)<<endl;
return;
}
追问
非常感谢,我还有一处不明白,就是 for(;str[len] != '\0'; len ++); 是不是可以换成 for(len=0;str[len] != '\0'; len ++); 我不太明白for中直接有; 的意思。
追答
完全可以,只不过前面一句
int len=0;//此处对len定义的同时已经初始化为0
所以for里面就不需要重复赋值为0了,如果前面定义未初始化,则for里面最好加上初始条件len=0,否则可能发生错误
展开全部
bool fun(char* str) //将数组传入函数,子函数不会重新分配空间建新数组,共用实参数组内存,所以传入指针,最好加一个参数(数组长度)
int len=0;
for(;str[len] != 0; len ++); //这里的for循环省略了,循环变量len的初始化,for中的表达式都可以省,但是;不能省
int len=0;
for(;str[len] != 0; len ++); //这里的for循环省略了,循环变量len的初始化,for中的表达式都可以省,但是;不能省
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
呵呵,实际上是查找字符串中是否有重复的字母。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询