题目描述
输入两个长度小于1000的字符串,比较其字典序大小,输出>或<或=。
样例输入 Copy
abc
abd
样例输出 Copy
<
思路:刚看到这题我很迷呀,我理解的是字符串全部的ASCLL码的总和比较大小,但不是,我室友告诉我他应该是一个一个比的,比如a和xgshgdhjsj比大小,a没有x大,所以结果输出为<。
源代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
char a[1000],b[1000];
scanf("%s%s",a,b);
int min=(strlen(a)<strlen(b))?strlen(a):strlen(b);
int flag=0;
for(int i=0;i<min;i++)
{
if(a[i]>b[i])
{
flag=1;
break;
}
if(a[i]<b[i])
{
flag=-1;
break;
}
}
if(flag==0&&(strlen(a)-strlen(b))<0)
printf("<");
if(flag==0&&(strlen(a)-strlen(b))>0)
printf(">");
else if(flag==0&&strlen(a)==strlen(b))
printf("=");
else if(flag==-1)
printf("<");
else if(flag==1)
printf(">");
return 0;
}
最近又碰到了这道题,知道了两种新的解法(以下两种不考虑相等情况)
#include <stdio.h>
#include <string.h>
char s1[10010];
char s2[10010];
int main()
{
scanf("%s",s1);
scanf("%s",s2);
if(strcmp(s1,s2) < 0)
puts("<");
else
puts(">");
return 0;
}
不得不说库函数yyds啊啊,太简单了有木有!!!
第三种解法呢,更能锻炼思维的灵活性
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[10005],b[10005];
scanf("%s %s",a,b);
int len=strlen(a);
int len1=strlen(b);
int flag=0;
if(len!=len1)
{
int min=len<len1?len:len1;
for(int i=0;i<len;i++)
{
if(a[i]>b[i])
{
printf(">\n");
flag=1;
break;
}
else if(a[i]<b[i])
{
printf("<\n");
flag=1;
break;
}
}
if(flag==0)
{
if(min==len)
printf("<\n");
else
printf(">\n");
}
}
else
{
for(int i=0;i<len;i++)
{
if(a[i]<b[i])
{
printf("<\n");
flag=1;
break;
}
else if(a[i]>b[i]);
{
printf(">\n");
flag=1;
break;
}
}
if(flag=0)
printf("wrong\n");
}
return 0;
}
堆堆加油💪