两个很大的数

Java_beginer1 2011-04-01 09:55:22
描述
给你两个很大的数,你能不能判断出他们两个数的大小呢?

比如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
...全文
628 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Java_beginer1 2011-08-16
  • 打赏
  • 举报
回复
这题很简单的用java很随意就解决了
Snial_ali 2011-04-04
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <string.h>

int
main()
{

char x[1000];
char y[1000];
int length_x;
int length_y;



length_x = strlen( x );
scanf( "%s", x );
scanf( "%s", y );

length_y = strlen( y );
if( *x == '-' && *y == '-' )
{
if( length_x == length_y )
{
if( strcmp( x, y ) > 0 )
printf( "x < y " );
else
if( strcmp( x, y ) == 0 )
printf( "x == y " );
else
printf( "x > y" );
}
else
if( length_x > length_y)
printf( "x < y " );
else
printf( "x > y" );


}
else
if( *x != '-' && *y != '-' )
{

if( length_x == length_y )
{
if( strcmp( x, y ) > 0 )
printf( "x > y " );
else
if( strcmp( x, y ) == 0 )
printf( "x == y " );
else
printf( "x < y" );
}
else
if( length_x > length_y)
printf( "x > y " );
else
printf( "x < y" );

}
else
{
if( *x == '-' && *y != '-')
printf( "x < y " );
else
printf( "x > y " );
}
return 0;
}
Snial_ali 2011-04-04
  • 打赏
  • 举报
回复
上面哥们写的程序也太乱了吧,看的我一塌糊涂这么多if和else
UnknowName 2011-04-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 qq120848369 的回复:]

单纯的思路:

1,比较符号,正数>负数
2,比较长度,如果两个正数,那么较长的大,如果两个负数,较长的小.
3,从高位逐个比较,一旦发现谁比谁大,则根据两者是正数或者负数,决定谁大谁小.
[/Quote]

我也是这么想的。
AnYidan 2011-04-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mstlq 的回复:]
1. 判断两个数的符号
2. 用strcmp函数
3. 1和2结合足以解决问题
[/Quote]

在1 后 比较两个字符串的长度(如果都是整数)
wjmde678 2011-04-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mstlq 的回复:]
1. 判断两个数的符号
2. 用strcmp函数
3. 1和2结合足以解决问题
[/Quote]
这个比较全面,就是这样的,修改一下5楼的代码就可以
wjmde678 2011-04-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hnuqinhuan 的回复:]
大数的比较运算 先判断符号位 然后判断 就是一个大数运算
[/Quote]
++
qq120848369 2011-04-03
  • 打赏
  • 举报
回复
单纯的思路:

1,比较符号,正数>负数
2,比较长度,如果两个正数,那么较长的大,如果两个负数,较长的小.
3,从高位逐个比较,一旦发现谁比谁大,则根据两者是正数或者负数,决定谁大谁小.
琢磨鸟 2011-04-03
  • 打赏
  • 举报
回复
最好的办法是将数值大小的比较转化为字符串的比较,这样效率更高。
1.首先就是判断字符串长度,一个StrLen()函数足够了,字符串长度大的一定更大。
2.若两个数长度相同,接下来就是从高位向低位逐位比较。例如比较1546703和1546399;前四位都是“1546”,到第5位时第一个数的为“7”,第二个数的是“3”,可以确定,前者大。
mstlq 2011-04-01
  • 打赏
  • 举报
回复
1. 判断两个数的符号
2. 用strcmp函数
3. 1和2结合足以解决问题
sonnno 2011-04-01
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <string.h>

int
main()
{

char x[1000];
char y[1000];
int length_x;
int length_y;



scanf( "%s", x );
scanf( "%s", y );

length_x = strlen( x );
length_y = strlen( y );
if( *x == '-' && *y == '-' )
{
if( length_x == length_y )
{
if( strcmp( x, y ) > 0 )
printf( "x < y " );
else
if( strcmp( x, y ) == 0 )
printf( "x == y " );
else
printf( "x > y" );
}
else
if( length_x > length_y)
printf( "x < y " );
else
printf( "x > y" );


}
else
if( *x != '-' && *y != '-' )
{

if( length_x == length_y )
{
if( strcmp( x, y ) > 0 )
printf( "x > y " );
else
if( strcmp( x, y ) == 0 )
printf( "x == y " );
else
printf( "x < y" );
}
else
if( length_x > length_y)
printf( "x > y " );
else
printf( "x < y" );

}
else
{
if( *x == '-' && *y != '-')
printf( "x < y " );
else
printf( "x > y " );
}
return 0;
}
写的很烂,大家帮我改改吧
luxihua 2011-04-01
  • 打赏
  • 举报
回复
字符串比较吧
luotuo44 2011-04-01
  • 打赏
  • 举报
回复
用一个字符数组存储输入的数字
masmaster 2011-04-01
  • 打赏
  • 举报
回复
可不可以用比较字符串的方法呢?
無_1024 2011-04-01
  • 打赏
  • 举报
回复
大数的比较运算 先判断符号位 然后判断 就是一个大数运算

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧