用C语言,输入有若干组数据(不超过100组),每组数据包括两行,分别为两个整数,第一行为xls的数,第二行为gls的数,每个数为不超过1000位十进制数字的整数。如果xls数的绝对值不小于gls数的绝对值,则xls获胜,否则是gls获胜。对每组测试数据,在单独的行中输出结果。如果xls获胜,则输出Yes,否则输出No。
时间: 2023-06-20 15:10:04 浏览: 74
输入若干个整数,统计出现次数最多的那个整数。如果出现最多的整数有两个以上,打印最早输入的那个整数。
以下是C语言的实现代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_DIGITS 1000
typedef struct {
int digits[MAX_DIGITS];
int length;
} BigInt;
void init(BigInt *n) {
for (int i = 0; i < MAX_DIGITS; i++) {
n->digits[i] = 0;
}
n->length = 0;
}
void assign(BigInt *n, char *str) {
init(n);
int len = strlen(str);
for (int i = len - 1, j = 0, k = 1; i >= 0; i--) {
n->digits[j] += (str[i] - '0') * k;
if (k * 10 == 10000) {
j++;
k = 1;
} else {
k *= 10;
}
}
n->length = len / 4 + ((len % 4) ? 1 : 0);
}
int compare(BigInt *a, BigInt *b) {
if (a->length != b->length) {
return a->length - b->length;
}
for (int i = a->length - 1; i >= 0; i--) {
if (a->digits[i] != b->digits[i]) {
return a->digits[i] - b->digits[i];
}
}
return 0;
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
char str1[MAX_DIGITS + 1], str2[MAX_DIGITS + 1];
scanf("%s%s", str1, str2);
BigInt xls, gls;
assign(&xls, str1);
assign(&gls, str2);
if (compare(&xls, &gls) >= 0) {
printf("Yes\n");
} else {
printf("No\n");
}
}
return 0;
}
```
代码中定义了一个 `BigInt` 结构体来表示大整数。`init` 函数用于初始化一个大整数,将其所有位的数字都设为 0。`assign` 函数用于将一个字符串转换为一个大整数。`compare` 函数用于比较两个大整数的大小,返回值为正数表示第一个大整数大于第二个大整数,为负数表示第一个大整数小于第二个大整数,为 0 表示两个大整数相等。最后在主函数中读入数据,将字符串转换为大整数进行比较,输出结果即可。
阅读全文