1 条题解
-
0
C :
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #include<math.h> char x[240],y[240],t[240]; int a[240],b[240],c[240]; int main(){ scanf("%s",&x); scanf("%s",&y); int i,n = strlen(x)>strlen(y)? strlen(x):strlen(y); /** strcmp(s1,s2); 当s1<s2时,返回为负数; 当s1=s2时,返回值= 0; 当s1>s2时,返回正数。 **/ if(strcmp(x,y)<0) { printf("-"); strcpy(t, x);//x复制给t strcpy(x, y);//y复制给x strcpy(y, t);//t复制给y } //将x装入a数组 int k = 0; for(i=strlen(x)-1;i>=0;i--) a[k++] = x[i]-'0'; //将y装入b数组 k = 0; for(i=strlen(y)-1;i>=0;i--) b[k++] = y[i]-'0'; //逐位相减 int f = 0; for(i=0;i<n;i++){ c[i] = a[i] - b[i] - f; if(c[i]<0){ c[i] = c[i] + 10; f = 1; }else{ f = 0; } } k = n;//k假设为n值 for(i=n-1;i>=0;i--){ if(c[i]!=0) { k = i; break; } } if(k==n) printf("%d",0); else{ for(i=k;i>=0;i--){ printf("%d",c[i]); } } return 0; }
C++ :
#include <bits/stdc++.h> using namespace std; int main(){ //开始编写程序 string s1,s2,t;//s1 s2代表2个要运算的数 int a[250] = {0},b[250] = {0},r[250] = {0}; char f;//符号,判断正负的,正号不要输出,符号要 int len,i,j; getline(cin,s1); getline(cin,s2); len = s1.length() > s2.length()?s1.length():s2.length(); //判断正负,s1长那么s1大,一样长的话,s1的字典码大,那么s1大 if(s1.length() > s2.length() || (s1.length() == s2.length() && s1 >= s2)) { f = '+'; }else{ f = '-'; t = s1;//s1对应的整数<s2的话,要交换做减法 s1 = s2; s2 = t; } //倒过来将字符串存入数组再运算,注意字符要转化为实际的整数 for(i = 0;i < s1.length();i++){ a[i] = s1[s1.length() - i - 1] - 48; } for(i = 0;i < s2.length();i++){ b[i] = s2[s2.length() - i - 1] - 48; } //a b数组按照较长的长度,逐位运算 for(i = 0;i < len;i++){ //看看要不要借位 if(a[i] < b[i]){ a[i] = a[i] + 10;//借1当10 a[i + 1]--;//向后借一位 } r[i] = a[i] - b[i]; } //倒过来从第一个非0开始输出r数组 while(r[len] == 0){ len--;//找到第一个非0的下标 if(len < 0){ break; } } if(f == '-') cout<<f;//如果是负数,输出负号 for(i = len;i >= 0;i--) { cout<<r[i]; } if(len < 0){ cout<<0<<endl; } }
Python :
a = int(input()) b = int(input()) print(a-b);
- 1
信息
- ID
- 2199
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者