-
数组比较,要比较它的内容的而不是直接比较它的变量(这个是地址)
你s1与s2直接比较,因为s1比s2先定义,s1>s2永远成立的,与你输入的内容没有任何关系的
如果你是
char s2[100],s1[100];
那结果永远是-1
所以你程序完全不对
以下参考(方法有多种的,而实际库函数用的是指针,更简单、效率更高)
int Strcmp(char s1[],char s2[])
{
int s=0;
for(int i=0; s1[i] && s2[i]; i++) {
if (s1[i]>s2[i]) {
s=1;
break;
} else {
if (s1[i]s=-1;
break;
}
}
return s;
} -
你是自编的字条串比较函数,但算法不对,只对你的int Strcmp(char s1[],char s2[]) 函数进行了修改。整个程序如下:
#include
using namespace std;
int Strcmp(char s1[],char s2[])
{
char *p;
char *q;
p = s1;
q = s2;
while(*p!='\0' && *q!='\0')
{
if(*p==*q)
{
p++;
q++;
}
else if(*p>*q)
{
return 1;
}
else
{
return -1;
}
}
if(*p=='\0' && *q =='\0')
{
return 0;
}
if(*p=='\0' && *q !='\0')
{
return -1;
}
if(*p!='\0' && *q =='\0')
{
return 1;
}
}
int main(){
char s1[100],s2[100];
printf("请输入数组s1:");
gets(s1);
printf("请输入数组s2:");
gets(s2);
printf("-----字符串比较的结果------\n");
printf("%d\n",Strcmp(s1,s2));
return 0;
}程序的三种运行例如下:
如本站内容“对您有用”,欢迎随意打赏,让我们持续更新!
打赏