10000. A+B=?(OJ 入门)

这个博客展示了不同编程语言(C、C++、Go、Java、Python)如何读取两个自然数并计算它们的和。程序简洁高效,适用于基础的输入输出操作和数值计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入格式:

只有一行,为两个自然数x和y (0<=x,y<=32767)之间用一个空格隔开。

输出格式:

只需输出一个数,x和y的和即可。
末尾不需要多余的空行,当然你有一个也无妨,太多就不行了。

限制:

每个测试点1s

样例 1 :

输入:
1 2
输出:
3

C语言:

#include <stdio.h>
int main()
{
	int a,b,c;
	scanf("%d %d",&a,&b);
	c=a+b;
	printf("%d",c);
	return 0;
}

C语言:

#include <stdio.h>
int main()
{
	int a,b;
	scanf("%d %d",&a,&b);
	printf("%d",a+b);
	return 0;
}

评测状态

正确        100

语言:  C

用时: 0 ms        内存: 1088 kb        代码长度: 96

C语言:(文件读写)

#include <stdio.h>
int main()
{
    FILE *input,*output;
    int num[2],result;
    if(((input=fopen("input.txt","r"))==NULL)||((output=fopen("output.txt","w"))==NULL)){
        printf("Fail to open input file!\n");
        return 0;
    }
    for(int i=0;fscanf(input,"%d",num+i)!=EOF;i++);
    result=num[0]+num[1];
    printf("%d+%d=%d\n",num[0],num[1],result);
    fprintf(output,"%d",result);
    fclose(input);    
    fclose(output);
    return 0;
}

运行结果:

[Running] cd "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\C\" && gcc main.c -o main && "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\C\"main
1+2=3

[Done] exited with code=0 in 0.982 seconds

C++:

#include <iostream>
using namespace std;
int main()
{
	int a,b,c;
	cin>>a>>b;
	c=a+b;
	cout<<c<<endl;
	return 0;
}

C++:

#include <bits/stdc++.h>
using namespace std;
int a,b;
int main(){
	cin>>a>>b;
	cout<<a+b<<endl;
	return 0;
}

评测状态

正确        100

语言:  C++

用时: 0 ms        内存: 1672 kb        代码长度: 109

C++:

#include <iostream>
using namespace std;
int a,b;
int main(){
	cin>>a>>b;
	cout<<a+b<<endl;
	return 0;
}

评测状态

正确        100

语言:  C++

用时: 0 ms        内存: 1672 kb        代码长度: 104

C++:

#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main ()
{
	int a,b;
	cin>>a>>b;
	cout<<a+b<<endl;
	getchar();getchar();
	return 0;
}

评测状态

正确        100

语言:  C++

用时: 0 ms        内存: 1672 kb        代码长度: 159

C++:(文件读写)

#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    int num[2],i=0,sum=0;
    ifstream input;
    input.open("input.txt",ios::in);
    while(!input.eof())
    {
        input>>num[i++];
    }
    for(int i=0;i<2;i++)
    {
        cout<<num[i]<<" ";
        sum+=num[i];
    }  
    cout<<sum<<endl;
    input.close();
    ofstream output;
    output.open("output.txt",ios::out);
    output<<sum<<endl;
    output.close();
    return 0;
}

运行结果如下:

[Running] cd "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\C++\" && g++ main.cpp -o main && "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\C++\"main
1 2 3

[Done] exited with code=0 in 1.101 seconds

精简代码如下:

#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    int num[2],i=0,sum=0;
    ifstream input;
    input.open("input.txt",ios::in);
    while(!input.eof())
    {
        input>>num[i];
        sum+=num[i];
        i++;
    }
    input.close();
    ofstream output;
    output.open("output.txt",ios::out);
    output<<sum;
    output.close();
    return 0;
}

运行结果如下:

[Running] cd "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\C++\" && g++ main.cpp -o main && "c:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\C++\"main

[Done] exited with code=0 in 1.069 seconds

Go语言:

package main

import "fmt"

func main() {
	var a, b int
	fmt.Scan(&a, &b)
	fmt.Println(a + b)
}

Java:

import java.io.*;
import java.util.Scanner;
public class Main{
	public static void main(String[] args){
		int a,b;
		Scanner sc=new Scanner(System.in);
		a=sc.nextInt();
		b=sc.nextInt();
		System.out.println(a+b);
	}
}

评测状态

正确        100

语言:  Java

用时: 108 ms        内存: 23716 kb        代码长度: 219

Python:

a,b = map(int, input().split())
print(a+b)

<think>好的,用户问的是东华大学在线评测系统中A==B的问题或错误处理。首先,我需要回忆一下常见的A==B类型题目,这类问题通常涉及判断两个表达式是否相等,或者处理大数比较。 用户提到的东华OJ可能是指东华大学的ACM在线评测系统,其中的A==B题目可能类似于其他OJ系统中的题目,比如判断两个数是否相等,尤其是当数值很大时,可能涉及字符串处理或者高精度计算。比如,题目可能要求比较两个可能带有前导零或小数点的数是否相等,例如去掉前导零和后导零后是否相同。 接下来,我需要考虑常见的错误点。比如,输入的数可能有前导零,如000123和123是否算相等;或者有小数点,如123.和123.000是否相等。此外,还可能存在科学计数法的情况,但不确定题目是否包含这种情况。 另外,处理这类问题时,字符串处理是关键。需要将输入的字符串标准化,去掉前导零和小数点后的末尾零,可能还需要处理整数部分为零的情况,比如0.000应该简化为0,而0000也应为0。 然后,可能的错误包括没有正确处理这些情况,导致错误判断。例如,没有去除前导零,或者在小数点后没有正确截断或补零。此外,还要考虑没有小数点的情况,或者小数点后全为零的情况。 根据用户提供的引用,引用[1]中的内容似乎和输出格式有关,可能涉及多组测试数据的处理,比如每组数据输出的格式是否正确。引用[2]提到质数的直接后代,可能与当前问题无关,但需要确认是否有其他联系,可能没有。 接下来,我需要给出解决这个问题的步骤建议,比如如何标准化输入的字符串,如何处理不同情况,以及可能的测试用例。同时,可能需要提供代码示例,用Python或C++处理字符串比较。 最后,用户可能需要相关的问题,比如如何处理大数比较,或者东华OJ其他类似题目的错误处理。需要生成相关问题,帮助用户进一步学习。</think>关于东华大学OJ系统中"A==B"问题的常见错误及解决方法如下: ### 问题分析 该题目要求判断两个看似数值相等的表达式是否真正相等,主要难点在于处理以下情况: 1. 前导零和末尾零的处理:如$000123$与$123$应视为相等 2. 小数点的特殊处理:如$123.0$与$123$、$123.4500$与$123.45$应视为相等 3. 整数与浮点数混合:如$123$与$123.0000$需正确识别 ### 常见错误及解决方案 1. **前导零未处理** ```python # 错误示例:直接比较字符串 if input_str1 == input_str2: return "YES" # 正确方法:标准化处理 def normalize(s): if '.' in s: # 去除末尾无效零 s = s.rstrip('0').rstrip('.') if '.' in s else s # 去除前导零(保留符号位) s = s.lstrip('0') or '0' return s ``` 2. **小数点位置处理不当** - 需注意纯整数添加小数点的情况,如$5$与$5.$ - 处理方案:将$5.$统一转换为$5$ 3. **边界条件未覆盖** - 特殊测试用例: - $0$与$00000$ → 应相等 - $0.0$与$0$ → 应相等 - $.123$与$0.123$ → 应相等 ### 参考解决方案代码 ```python def normalize(num_str): # 处理符号位 sign = '' if num_str.startswith(('-', '+')): sign = num_str[0] num_str = num_str[1:] # 分割整数和小数部分 if '.' in num_str: integer, decimal = num_str.split('.', 1) decimal = decimal.rstrip('0') else: integer = num_str decimal = '' # 处理前导零 integer = integer.lstrip('0') or '0' # 拼接结果 result = sign + integer if decimal: result += '.' + decimal # 处理纯小数情况如".5" if result.startswith('.'): result = '0' + result # 处理结果为空的情况 return result if result != "-0" else "0" ``` ### 测试用例验证 | 输入A | 输入B | 标准化结果 | 结论 | |------------|-------------|------------|------| | 000123.450 | 123.45 | 123.45 | YES | | 123. | 123 | 123 | YES | | -0000.000 | 0 | 0 | YES | | .5 | 0.500 | 0.5 | YES | ### 系统提交建议 1. 使用Python时注意多组数据输入处理: ```python import sys for line in sys.stdin: a, b = line.strip().split() print("YES" if normalize(a) == normalize(b) else "NO") ``` 2. C/C++需注意字符数组长度限制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值