a>b
a<b
??重点强调:要仔细看题目啊!!输出部分相等时输出a==b。。
??就是因为输出虐了我wa~
? 贴两种代码 1,不嫌弃费事的把它转换成数字之后比较的。。
? ? ? ? ? ? ? ? ? ? 2,自然没有变成数字了~
贴代码
第一种:
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAX 1005
using namespace std;
void cmp(char str1[],char str2[])
{
int num1[MAX];
int num2[MAX];
memset(num1,sizeof(num1));
memset(num2,sizeof(num2));
int len1 = strlen(str1);
int len2 = strlen(str2);
if(str1[0] == '-' && str2[0] != '-')
{
printf("a<bn");
return ;
}
else if(str1[0] != '-' && str2[0] == '-')
{
printf("a>bn");
return ;
}
else if(str1[0] == '-' && str2[0] == '-')
{
if(strcmp(str1,str2) == 0)
{
printf("a==bn");
return ;
}
else
{
int i,j,k;
for(i=len1-1,j=0; i>0; i--)
{
num1[j++] = str1[i] - '0';
}
for(i=len2-1,k=0; i>0; i--)
{
num2[k++] = str2[i] - '0';
}
for(i=(j>k)?j:k ; i>=0; i--)
{
if(num1[i] > num2[i])
{
printf("a<bn");
return ;
}
else if(num1[i] < num2[i])
{
printf("a>bn");
return ;
}
else
continue;
}
}
}
else
{
if(strcmp(str1,j=0; i>=0; i--)
{
num1[j++] = str1[i] - '0';
}
for(i=len2-1,k=0; i>=0; i--)
{
num2[k++] = str2[i] - '0';
}
for(i=(j>k)?j:k ; i>=0; i--)
{
if(num1[i] > num2[i])
{
printf("a>bn");
return ;
}
else if(num1[i] < num2[i])
{
printf("a<bn");
return ;
}
else
continue;
}
}
}
}
int main()
{
char str1[MAX];
char str2[MAX];
while(scanf("%s%s",str1,str2) && str1[0]!='0' && str2[0]!='0')
{
cmp(str1,str2);
}
return 0;
}
第二种:
#include<stdio.h>
#include<string.h>
#define MAX 1005
char str1[MAX],str2[MAX];
int main()
{
int len1,len2;
int i;
while(scanf("%s %s",str2)!=EOF && (str1[0]!='0' && str2[0]!='0') )
{
len1 = strlen(str1);
len2 = strlen(str2);
if(str1[0]=='-' && str2[0]!='-')
{
printf("a<bn");
}
else if(str1[0]!='-' && str2[0]=='-')
{
printf("a>bn");
}
else if(str1[0]!='-' && str2[0]!='-')
{
if(len1 > len2)
{
printf("a>bn");
}
else if(len1 < len2)
{
printf("a<bn");
}
else if(len1 == len2)
{
for(i=0; i<len1; i++)
{
if(str1[i] < str2[i])
{
printf("a<bn");
break;
}
else if(str1[i] > str2[i])
{
printf("a>bn");
break;
}
}
if(i == len1)
printf("a==bn");
}
}
else if(str1[0]=='-' && str2[0]=='-')
{
if(len1 > len2)
{
printf("a<bn");
}
else if(len1 < len2)
{
printf("a>bn");
}
else if(len1 == len2)
{
for(i=1; i<len1; i++)
{
if(str1[i] < str2[i])
{
printf("a>bn");
break;
}
else if(str1[i] > str2[i])
{
printf("a<bn");
break;
}
}
if(i==len1)
printf("a==bn");
}
}
}
return 0;
}
最优代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a,b;
while(cin>>a>>b)
{
if(a=="0"&&b=="0")
return 0;
if(a==b)
cout<<"a==b"<<endl;
else if(a[0]=='-'&&b[0]=='-')
{
if(a.substr(1,string::npos)>b.substr(1,string::npos)||a.length()>b.length())
cout<<"a<b"<<endl;
else cout<<"a>b"<<endl;
}
else if(a>"0"&&b>"0"||a<"0"&&b<"0"&&a.length()>b.length()||a>b)
cout<<"a>b"<<endl;
else if(a<"0"&&b>"0"&&a.length()>b.length()||a>b)
cout<<"a<b"<<endl;
}
}
好短~~hoho~~