怎样用c++编写比较两个字符串的大小(用指针)
任意输入两个字符串,怎样用c++编写比较两个字符串的大小(用指针)题目要求:不能用strcmp...
任意输入两个字符串,
怎样用c++编写比较两个字符串的大小(用指针)
题目要求:不能用strcmp 展开
怎样用c++编写比较两个字符串的大小(用指针)
题目要求:不能用strcmp 展开
展开全部
#include <iostream>
using namespace std;
int cmp(char *s, char *p);
int main()
{
char m[20],n[20];
cin>>m>>n;
int i = cmp(m,n);
if (i == 0)
cout <<"两者相等"<<endl;
if (i == 1)
cout << "前者大于后者"<< endl;
if (i == -1)
cout << "前者小于后者" << endl;
return 0;
}
int cmp(char *s, char *p)
{
while (*s&&*p)
{
if (*s>*p)
return 1;
else if (*s < *p)
return -1;
else
{
if (*(s+1) == '\0' && *(p+1) != '\0')
return -1;
else if (*(s+1) != '\0' && *(p+1) == '\0')
return 1;
else if (*(s+1) == '\0'&&*(p+1)=='\0')
return 0;
else
{
s++,p++;
continue;
}
}
}
}
using namespace std;
int cmp(char *s, char *p);
int main()
{
char m[20],n[20];
cin>>m>>n;
int i = cmp(m,n);
if (i == 0)
cout <<"两者相等"<<endl;
if (i == 1)
cout << "前者大于后者"<< endl;
if (i == -1)
cout << "前者小于后者" << endl;
return 0;
}
int cmp(char *s, char *p)
{
while (*s&&*p)
{
if (*s>*p)
return 1;
else if (*s < *p)
return -1;
else
{
if (*(s+1) == '\0' && *(p+1) != '\0')
return -1;
else if (*(s+1) != '\0' && *(p+1) == '\0')
return 1;
else if (*(s+1) == '\0'&&*(p+1)=='\0')
return 0;
else
{
s++,p++;
continue;
}
}
}
}
展开全部
看来就是自己实现一个strcmp了...以下应该是最简单的写法了...
//非模板版本:
int mystrcmp(const char* s1, const char* s2)
{
while(*s1 && *s2 && *s1 == *s2)
{
++s1;
++s2;
}
return *s1 - *s2;
}
//简单模板版本,适合char、wchar_t之类的等宽C风格字符串:
template<typename _CharT>
int mystrcmp(const _CharT* s1, const _CharT* s2)
{
while(*s1 && *s2 && *s1 == *s2)
{
++s1;
++s2;
}
return *s1 - *s2;
}
====
[原创回答团]
//非模板版本:
int mystrcmp(const char* s1, const char* s2)
{
while(*s1 && *s2 && *s1 == *s2)
{
++s1;
++s2;
}
return *s1 - *s2;
}
//简单模板版本,适合char、wchar_t之类的等宽C风格字符串:
template<typename _CharT>
int mystrcmp(const _CharT* s1, const _CharT* s2)
{
while(*s1 && *s2 && *s1 == *s2)
{
++s1;
++s2;
}
return *s1 - *s2;
}
====
[原创回答团]
参考资料: 原创
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
strcmp (char *p,char *q)
{
while(*p==*q)
{
if(*p==0) return(0);
p++;q++;
}
return(*p-*q);
}
main()
{
char a[21],b[21];
printf("请输入字符串a:");
gets(a);
printf("请输入字符串b:");
gets(b);
printf("\n strcmp(a,b)=%d \n",strcmp(a,b));
}
strcmp (char *p,char *q)
{
while(*p==*q)
{
if(*p==0) return(0);
p++;q++;
}
return(*p-*q);
}
main()
{
char a[21],b[21];
printf("请输入字符串a:");
gets(a);
printf("请输入字符串b:");
gets(b);
printf("\n strcmp(a,b)=%d \n",strcmp(a,b));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用strcmp();函数来做比较 使用是要包含头文件string.h如果已经包含了iostream就不需要包含string.h了
用法为strcmp(string1,string2);这个函数有返回值的 如果返回的是1代表前者大 -1就是后者大 一样大是0
用法为strcmp(string1,string2);这个函数有返回值的 如果返回的是1代表前者大 -1就是后者大 一样大是0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include
using
namespace
std;
int
cmp(char
*s,
char
*p);
int
main()
{
char
m[20],n[20];
cin>>m>>n;
int
i
=
cmp(m,n);
if
(i
==
0)
cout
<<"两者相等"<
if
(i
==
1)
cout
<<
"前者大于后者"<<
endl;
if
(i
==
-1)
cout
<<
"前者小于后者"
<<
endl;
return
0;
}
int
cmp(char
*s,
char
*p)
{
while
(*s&&*p)
{
if
(*s>*p)
return
1;
else
if
(*s
<
*p)
return
-1;
else
{
if
(*(s+1)
==
'\0'
&&
*(p+1)
!=
'\0')
return
-1;
else
if
(*(s+1)
!=
'\0'
&&
*(p+1)
==
'\0')
return
1;
else
if
(*(s+1)
==
'\0'&&*(p+1)=='\0')
return
0;
else
{
s++,p++;
continue;
}
}
}
}
using
namespace
std;
int
cmp(char
*s,
char
*p);
int
main()
{
char
m[20],n[20];
cin>>m>>n;
int
i
=
cmp(m,n);
if
(i
==
0)
cout
<<"两者相等"<
if
(i
==
1)
cout
<<
"前者大于后者"<<
endl;
if
(i
==
-1)
cout
<<
"前者小于后者"
<<
endl;
return
0;
}
int
cmp(char
*s,
char
*p)
{
while
(*s&&*p)
{
if
(*s>*p)
return
1;
else
if
(*s
<
*p)
return
-1;
else
{
if
(*(s+1)
==
'\0'
&&
*(p+1)
!=
'\0')
return
-1;
else
if
(*(s+1)
!=
'\0'
&&
*(p+1)
==
'\0')
return
1;
else
if
(*(s+1)
==
'\0'&&*(p+1)=='\0')
return
0;
else
{
s++,p++;
continue;
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询