请问为什么这个程序输出都为1,与输入s1和s2无关80

银灵子_595 |浏览280次
收藏|2021/11/20 11:03

满意回答

2021/11/20 11:21

数组比较,要比较它的内容的而不是直接比较它的变量(这个是地址)你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;}

whoami1978

其他回答(1)
  • 你是自编的字条串比较函数,但算法不对,只对你的int Strcmp(char s1[],char s2[]) 函数进行了修改。整个程序如下:#include<iostream>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;}程序的三种运行例如下:
    回答于 2021/11/20 11:34
0人关注该问题
+1

 加载中...