判断a==b
判断两个字符串表示的数字是否相等。
输入:
3 3.0
输出
YES
输入:
23.45 23.44
输出:
NO
输入:
213.48 213.480
输出:
YES
tip
1. 整数和小数部分
2. 小数末尾0
3. 考虑逆序
#include <stdio.h>
#include <string.h>
// #define DEBUG
enum {
_RIGHT_NUM = 2,
_MAX_LEN = 100,
};
void CompareTwo(char *str1, char *str2)
{
if (strcmp(str1, str2) == 0) {
printf("YES\n");
} else {
printf("NO\n");
}
}
void revertStr(char *str)
{
#ifdef DEBUG
printf("%s\n", str);
#endif
int len = strlen(str);
char ch;
for (int i = 0; i < (len >> 1); ++i) {
ch = *(str + i);
*(str + i) = *(str + len - 1 - i);
*(str + len - 1 - i) = ch;
}
#ifdef DEBUG
printf("%s\n", str);
#endif
}
void RemoteTailZero(char *str)
{
#ifdef DEBUG
printf("%s\n", str);
#endif
int len = strlen(str);
len -= 1;
while (len && *(str + len) == '0') {
len--;
}
*(str + len + 1) = '\0';
#ifdef DEBUG
printf("%s\n", str);
#endif
}
void ShapeData(char *str)
{
#ifdef DEBUG
printf("%s\n", str);
#endif
char *part2Ofstr = NULL;
int len;
if ((part2Ofstr = strchr(str, '.')) != NULL) {
*part2Ofstr = '\0';
RemoteTailZero(part2Ofstr+1);
}
revertStr(str);
RemoteTailZero(str);
if (part2Ofstr != NULL) {
*part2Ofstr = '.';
} else { /* 整数统一都转为小数 */
len = strlen(str);
*(str + len) = '.';
*(str + len + 1) = '0';
*(str + len + 2) = '\0';
}
#ifdef DEBUG
printf("%s\n", str);
#endif
}
int main()
{
char a[_MAX_LEN + 1], b[_MAX_LEN + 1];
while (scanf_s("%s %s", a, _MAX_LEN, b, _MAX_LEN) == _RIGHT_NUM) {
ShapeData(a);
ShapeData(b);
CompareTwo(a, b);
}
return 0;
}
版权声明:本文为u011491972原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。