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

(爱问答)

请问为什么这个程序输出都为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;
}


下一篇:电脑总是出现应用程序错误,怎么解决?谢谢

上一篇:C++任意输入五个字符串,统计其中所有大于串“Christmas”的字符串个数

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?