1 条题解

  • 0
    @ 2023-6-11 12:16:30

    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
    上传者