nyoj 73 比大小 【strcmp+if else】
2016-05-20 19:42
477 查看
比大小
时间限制: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
题解:大数的比较,用字符串知识
(1)按正负分四种情况
(2)符号相同 用strcmp进行比较(前不久才真正理解strcmp的用法)
题目开始这也不难,但是在if else用法上卡了一大会儿,嗯,if else必须成对出现,或者只用if 。
<span style="white-space:pre"> </span>if(strcmp(a,b)>0)//if else 用法1 printf("a<b\n"); if(strcmp(a,b)<0) printf("a>b\n"); else printf("a==b\n");
这样就是错的,<span style="font-family: Tahoma, Arial, sans-serif, simsun;">第二个if 和else 是成对的 所以又判断了一次,输入2 1,会有两个结果 a>b a==b</span>
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int main() { char a[1010],b[1010]; while(~scanf("%s%s",a,b)) { int la=strlen(a); int lb=strlen(b); if(a[0]=='0'&&b[0]=='0') return 0; if(a[0]=='-'&&b[0]!='-') printf("a<b\n"); if(a[0]!='-'&&b[0]=='-') printf("a>b\n"); if(a[0]=='-'&&b[0]=='-') { if(la>lb) printf("a<b\n"); if(la<lb) printf("a>b\n"); if(la==lb) { if(strcmp(a,b)>0)//if else 用法1 printf("a<b\n"); if(strcmp(a,b)<0) printf("a>b\n"); if(strcmp(a,b)==0) printf("a==b\n"); } } if(a[0]!='-'&&b[0]!='-')//条件判断的时候马虎出错了!!! { if(la>lb) printf("a>b\n"); if(la<lb) printf("a<b\n"); if(la==lb) { if(strcmp(a,b)>0)//if else 用法2 printf("a>b\n"); else if(strcmp(a,b)<0) printf("a<b\n"); else (strcmp(a,b)==0) printf("a==b\n"); } } } return 0; }
相关文章推荐
- Android 5.x Theme 与 ToolBar 实战
- Android学习_广播
- ue4局域网加入流程
- Android Studio进行单元测试
- 设计模式 - Bridge模式
- 单调队列HDU 4374 One hundred layer
- CharSet
- WEB手动漏洞挖掘-SQL盲注(DVWA实战)
- Cell复用原理
- 解决Intellij IDEA 控制台中文乱码的问题
- SHELL中计算时间差方法
- MySQL入门--数据表的创建、显示指定数据库中的所有数据表
- 如何优雅地使用 Stack Overflow?
- error MSB3073: :VCEnd”已退出,代码为 1 error MSB3073: :copy............
- 多个线程访问同一个类里面的静态成员变量
- wordpress教程:检测当前页面使用的哪个模板文件的方法
- 十天冲刺开发第二天个人工作总结
- Java高级之类结构的认识
- clog,cout,cerr 输出机制
- Java高级之类结构的认识