vc判断两个字符是不是相同
#include<iostream.h>intcmp(charstr1[],charstr2[],intlength);voidresult(intnum);intmai...
# include <iostream.h>
int cmp (char str1[], char str2[], int length);
void result (int num);
int main (void)
{
char str1[] = {"hello"};
char str2[] = {"hello"};
result(cmp (str1, str2, sizeof (str2)));
}
int cmp (char str1[], char str2[], int length)
{
int i;
for(i = 0; (i < length -1) && (str1[i] == str2[i]); i++);
if (i==length -1 )
return -1;
else
return i+1;
}
void result (int num)
{
if (num == -1)
cout << "they are the same string" <<endl;
else
cout << num <<endl;
}
在cmp的for语句和if语句中,i<length和i==length为什么可以改为i<length-1和i==length-1; 展开
int cmp (char str1[], char str2[], int length);
void result (int num);
int main (void)
{
char str1[] = {"hello"};
char str2[] = {"hello"};
result(cmp (str1, str2, sizeof (str2)));
}
int cmp (char str1[], char str2[], int length)
{
int i;
for(i = 0; (i < length -1) && (str1[i] == str2[i]); i++);
if (i==length -1 )
return -1;
else
return i+1;
}
void result (int num)
{
if (num == -1)
cout << "they are the same string" <<endl;
else
cout << num <<endl;
}
在cmp的for语句和if语句中,i<length和i==length为什么可以改为i<length-1和i==length-1; 展开
2个回答
展开全部
你的问题的回答是:因为最后一个是尾0,可以比较,也可以不比较,不影响结果。
代码存在的问题:
1. char str1[] = "hello";不需要花括号把字符串括起来。
2. 字符串比较的函数原型为什么需要length参数?如果是0结尾的字符数组,不需要这个参数。如果不是0结尾的字符数组,需要两个参数。
3. 字符串比较的函数原型为什么不用常见的char*,而用char[],虽然对于C/C++来说,这两种表达在函数原型中是一样的【都看做char*】。【但是,在表达局部变量时不一样,一个看作是固定大小数组,一个看做指针】
4. 字符串比较的函数原型返回int什么意思?看代码的意思其实是-1表示相同,为什么不返回bool值?函数名为什么不叫IsEqual?
一段简单的代码,存在这么多问题,你要检讨一下啊。
代码存在的问题:
1. char str1[] = "hello";不需要花括号把字符串括起来。
2. 字符串比较的函数原型为什么需要length参数?如果是0结尾的字符数组,不需要这个参数。如果不是0结尾的字符数组,需要两个参数。
3. 字符串比较的函数原型为什么不用常见的char*,而用char[],虽然对于C/C++来说,这两种表达在函数原型中是一样的【都看做char*】。【但是,在表达局部变量时不一样,一个看作是固定大小数组,一个看做指针】
4. 字符串比较的函数原型返回int什么意思?看代码的意思其实是-1表示相同,为什么不返回bool值?函数名为什么不叫IsEqual?
一段简单的代码,存在这么多问题,你要检讨一下啊。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |