#include<stdio.h>
#include<string.h>
int main()
{
char str1[100]="",str2[100]="";
int len1,len2,i;
int flag=0;
printf("请输入字符串str1: ");
gets(str1);
printf("请输入字符串str2: ");
gets(str2);
len1=strlen(str1);
len2=strlen(str2);
for(i=0;flag==0;i++)
{
if(str1[i]!='\0'&&str2[i]!='\0')
{
if(str1[i]>str2[i])
flag=1;
if(str1[i]<str2[i])
flag=-1;
else
flag=0;
}
}
if(flag==1)
printf("%s>%s",str1,str2);
if(flag==-1)
printf("%s<%s",str1,str2);
if(flag==0)
{
if(len1>len2)
printf("%s>%s",str1,str2);
if(len1<len2)
printf("%s<%s",str1,str2);
else
printf("%s=%s",str1,str2);
}
return 0;
}
如果两个字符串相等,比较到'\0'的时候就break掉循环了
if(str1[i]!='\0'&&str2[i]!='\0') {
if(str1[i]>str2[i])
flag=1;
if(str1[i]<str2[i])
flag=-1;
else
flag=0;
}else{
break;
}
觉得有用的话采纳一下哈
for循环中当str1或str2比较到字符串终止符时,要设置flag=0,否则是死循环
for(i=0;flag==0;i++)
{
if(str1[i]!='\0'&&str2[i]!='\0')
{
if(str1[i]>str2[i])
flag=1;
if(str1[i]<str2[i])
flag=-1;
else
flag=0;
}
else if(str1[i] == '\0')
flag = -1;
else
flag = 1;
}
if(len1>len2)
printf("%s>%s",str1,str2);
if(len1<len2) //应该是else if吧
printf("%s<%s",str1,str2);
else
printf("%s=%s",str1,str2);
用了strlen完了不用strcmp?
char str1[100];
char str2[100];
printf("请输入字符串str1: ");
gets(str1);
printf("请输入字符串str2: ");
gets(str2);
int flag = 0;
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0')
{
if(str1[i] > str2[i])
{
flag = 1;
break;
}
else if(str1[i] < str2[i])
{
flag = -1;
break;
}
i++;
}
if(flag == 0)
{
if(str1[i] != '\0' && str2[i] == '\0')
{
flag = 1;
}
else if(str1[i] == '\0' && str2[i] != '\0')
{
flag = -1;
}
else
{
flag = 0;
}
}
if(flag == 1)
{
printf("%s>%s",str1,str2);
}
else if(flag == -1)
{
printf("%s<%s",str1,str2);
}
else
{
printf("%s=%s",str1,str2);
}