【刷题小记73】比较大小
2014-09-14 21:03
253 查看
【转载请注明出处】http://blog.csdn.net/mingyong_blog/article/details/39273231
描述
给你两个很大的数,你能不能判断出他们两个数的大小呢?
比如123456789123456789要大于-123456
输入每组测试数据占一行,输入两个不超过1000位的10进制整数a,b
数据保证输入的a,b没有前缀的0。
如果输入0 0表示输入结束。测试数据组数不超过10组输出
如果a>b则输出“a>b”,如果a<b则输出“a<b”,如果相等则输出“a==b”。
描述
给你两个很大的数,你能不能判断出他们两个数的大小呢?
比如123456789123456789要大于-123456
输入每组测试数据占一行,输入两个不超过1000位的10进制整数a,b
数据保证输入的a,b没有前缀的0。
如果输入0 0表示输入结束。测试数据组数不超过10组输出
如果a>b则输出“a>b”,如果a<b则输出“a<b”,如果相等则输出“a==b”。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXSIZE 1000+1 int cmp(char *first,char *second) { int i; char *one=first; char *two=second; if(*one!='-'&&*two=='-') return 1; if(*one=='-'&&*two!='-') return -1; int fir_len=strlen(one); int sec_len=strlen(two); if(*one=='-'&&*second=='-') { if(fir_len>sec_len) return -1; if(fir_len<sec_len) return 1; for(i=1;i<fir_len;i++) { if(((*(one+i))-'0')<((*(two+i))-'0')) return 1; else if(((*(one+i))-'0')>((*(two+i))-'0')) return -1; } return 0; }else { if(fir_len>sec_len) return 1; if(fir_len<sec_len) return -1; for(i=0;i<fir_len;i++) { if(((*(one+i))-'0')<((*(two+i))-'0')) return -1; else if(((*(one+i))-'0')>((*(two+i))-'0')) return 1; } return 0; } } int main() { char first[MAXSIZE]={'\0'}; char second[MAXSIZE]={'\0'}; scanf("%s %s",first,second); while(strcmp(first,"0")||strcmp(second,"0")) { int result=cmp(first,second); if(result==1) printf("a>b\n"); else if(result==-1) printf("a<b\n"); else printf("a==b\n"); memset(second,'\0',sizeof(second)); memset(first,'\0',sizeof(first)); scanf("%s %s",first,second); } return 0; }
相关文章推荐
- nyoj73比较大小
- NYOJ 73 比大小【字符串比较】
- 指针比较大小
- 用指针变量比较两个数的大小
- 多个小数相乘后比较大小
- 比较字符串的大小
- 四个变量比较大小
- DateTime 对象比较大小
- java比较日期大小及日期与字符串的转换【SimpleDateFormat操作实例】
- 比较字符串大小
- 某些排序问题中元素大小比较的化简以及传递性证明
- 比较两个分数的大小
- decode比较大小
- Oracle比较时间大小
- 比较两个时间的大小和时间差
- swift 比较日期大小
- PAT L1-010. 比较大小
- 在js中如何比较两个时间字符串的大小
- android object比较大小
- PAT L1 010 比较大小