请问为什么这个程序输出都为1,与输入s1和s2无关
#include<iostream>using namespace std;int Strcmp(char s1[],char s2[]){if(s1==s2)return 0;else if (s1>s2) return 1;else if(s1<s2) return -1;}int main(){char s1[100],s2[100];printf("请输入数组s1:");gets(s1);printf("请输入数组s2:");gets(s2);printf("-----字符串比较的结果------ ");printf("%d ",Strcmp(s1,s2));return 0;}
数组比较,要比较它的内容的而不是直接比较它的变量(这个是地址)
你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]<s2[i])
s=-1;
break;
}
}
return s;
}
热门标签: