NYOJ 73 比大小【字符串比较】

没看清题意,导致WA了两次,当相等的时候,要输出a==b,我也是醉了

比大小

时间限制:3000 ms  |  内存限制:65535 KB

难度:2

描述

给你两个很大的数,你能不能判断出他们两个数的大小呢?

比如123456789123456789要大于-123456

输入
每组测试数据占一行,输入两个不超过1000位的10进制整数a,b

数据保证输入的a,b没有前缀的0。

如果输入0 0表示输入结束。测试数据组数不超过10组

输出
如果a>b则输出“a>b”,如果a<b则输出“a<b”,如果相等则输出“a==b”。
样例输入
111111111111111111111111111 88888888888888888888
-1111111111111111111111111  22222222
0 0
样例输出
a>b
a<b
上传者
张云聪

#include<stdio.h>
#include<string.h>
#define MAXN 2000
char a[MAXN],b[MAXN];
int main()
{
	int len1,len2;
	while(scanf("%s%s",a,b)!=EOF)
	{
		len1=strlen(a);
		len2=strlen(b);

		if(a[0]=='0'&&b[0]=='0')	break;
		if(a[0]=='-'&&b[0]!='-')    printf("a<b\n");
		else if(a[0]!='-'&&b[0]=='-')	printf("a>b\n");
		else if(a[0]!='-'&&b[0]!='-')
		{
			if(len1>len2)	printf("a>b\n");
			else if(len1<len2)	printf("a<b\n");
			else if(len1==len2)
			{
				if(strcmp(a,b)>0)	printf("a>b\n");
				else if(strcmp(a,b)==0)	printf("a==b\n");
				else if(strcmp(a,b)<0)	printf("a<b\n");
			}
		}
		else if(a[0]=='-'&&b[0]=='-')
		{
			if(len1>len2)	printf("a<b\n");
			else if(len1<len2)	printf("a>b\n");
			else if(len1==len2)
			{
				if(strcmp(a,b)>0)	printf("a<b\n");
				else if(strcmp(a,b)==0)	printf("a==b\n");
				else if(strcmp(a,b)<0)	printf("a>b\n");
			}
		}

	}
	return 0;
}
时间: 2024-10-13 02:42:27

NYOJ 73 比大小【字符串比较】的相关文章

NYOJ 73 比大小

比大小 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 给你两个很大的数,你能不能判断出他们两个数的大小呢? 比如123456789123456789要大于-123456 输入 每组测试数据占一行,输入两个不超过1000位的10进制整数a,b数据保证输入的a,b没有前缀的0.如果输入0 0表示输入结束.测试数据组数不超过10组 输出 如果a>b则输出“a>b”,如果a<b则输出“a<b”,如果相等则输出“a==b”. 样例输入 111111111111

nyoj 73 比大小 【java大数】

java大数. 代码: import java.util.Scanner; import java.math.*; public class Main{ public static void main(String[] args){ Scanner cin = new Scanner(System.in); BigInteger a, b; BigInteger t = BigInteger.valueOf(0); a = cin.nextBigInteger(); b = cin.nextBi

南阳73 比大小

比大小 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 给你两个很大的数,你能不能判断出他们两个数的大小呢? 比如123456789123456789要大于-123456 输入 每组测试数据占一行,输入两个不超过1000位的10进制整数a,b 数据保证输入的a,b没有前缀的0. 如果输入0 0表示输入结束.测试数据组数不超过10组 输出 如果a>b则输出"a>b",如果a<b则输出"a<b",如果相等则输出&qu

NYOJ 1233 差值(字符串排序+大数减法)

题意T组测试数据,每组数据给你n(0<n<=1000)个无符号整型范围内的数,把这些数字任意排列后连接成一个大数,求能排出的所有数当中最大的与最小的两个数的差值.例如{1, 2}, 最大为21,最小为12,差值为9. 样例输入131 2 3 样例输出198 思路乍一看是个大数问题,然而后来发现排序才是这道题的重点. 一开始想的是按数字的大小排序,但显然不对.例如{9, 10},按数字排序的话9 < 10,则最小值为910,但是显然109更小. 后来想到按字典序排,并且深信不疑的WA了两次

NYOJ -37回文字符串

这道题看了好大会没有思路,上网一搜发现这么简单,但是我为什么就想不到呢,??就是求和它的逆序之后的字符串最长公共子序列,然后用总的长度减去它就行了.原因是是因为只要是在公共子序列里面,那么他就是对称的,少的那些就是需要补的 代码如下: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 cons

算法--大小字符串问题

由于我对字符串问题的理解还不太到位,所以我将字符串问题中从大字符串中寻找小的字符串问题放在这里.以便考试遇到. // // Created by 陈平 on 2018/7/8. //从大字串中寻找小的字串 #include "iostream" #include "string.h" using namespace std; char a[1000]; char b[1000]; //int main(){ // gets(a); // gets(b); // in

NYOJ 37 回文字符串

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int maxn=1010;int dp[maxn][maxn];#define Max(a,b) a>b?a:bint main(){ int ncase; scanf("%d\n",&ncase); char str[maxn],str2[maxn]; while(ncase

c\c++ 字符串处理大集合[转]

1 rember this 2 3 strncpy(a,b,5); 4 a[5]='\0'; 5 6 char a[10]; 7 memset(a,'#',sizeof(a)); 8 a[10]='\0'; 9 10 刚开始学C/C++时,一直对字符串处理函数一知半解,这里列举C/C++字符串处理函数 11 12 ,希望对初学者有一定的帮助. 13 14 C: 15 16 char st[100]; 17 1. 字符串长度 18 strlen(st); 19 20 2. 字符串比较 21 str

字符串数组越界bug(2)

概述 数组下标从0开始,虽然从初学都已经知道,<陷阱与缺陷>反复强调,而在指尖运动中,就有那么几次不小心,让"精子"掉进这个"洞里"!其次,C语言字符串必须以0收尾! bug: 1-动态malloc或静态分配size大小字符串,存储size个字符,导致无0收尾,逾越警戒线,站在悬崖边了! 2-动态malloc或静态分配size大小字符串,访问或设置 [ size ] 字符 3-动态malloc或静态分配size大小字符串,没有初始化,导致无0收尾,读取整