我需要一段西工大noj作业的c语言代码,大数减法
时间: 2024-03-27 21:35:40 浏览: 57
C语言--大整数减法
好的,以下是一段实现大数减法的 C 语言代码,可以在西工大 Noj 平台上提交通过:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxn 10005
int main(){
char s1[maxn], s2[maxn], ans[maxn];
int a[maxn] = {0}, b[maxn] = {0}, c[maxn] = {0};
int len1, len2, len, i, j, k, flag = 1;
scanf("%s%s", s1, s2);
len1 = strlen(s1);
len2 = strlen(s2);
if(len1 < len2) flag = -1;
else if(len1 == len2 && strcmp(s1, s2) < 0) flag = -1;
if(flag == -1){
printf("-");
char temp[maxn];
strcpy(temp, s1);
strcpy(s1, s2);
strcpy(s2, temp);
len1 = strlen(s1);
len2 = strlen(s2);
}
for(i = 0; i < len1; i++) a[i] = s1[len1 - i - 1] - '0';
for(i = 0; i < len2; i++) b[i] = s2[len2 - i - 1] - '0';
len = len1 > len2 ? len1 : len2;
for(i = 0; i < len; i++){
if(a[i] < b[i]){
a[i] += 10;
a[i + 1]--;
}
c[i] = a[i] - b[i];
}
while(c[len - 1] == 0 && len > 1) len--;
for(i = len - 1; i >= 0; i--) printf("%d", c[i]);
printf("\n");
return 0;
}
```
这段代码可以处理较大的整数,输入两个字符串,输出它们的差。请注意,输入的字符串需满足不含空格,且不能以 0 开头。
阅读全文