首页 > 编程语言 >C++:正整数A+B

C++:正整数A+B

时间:2024-12-30 20:01:21浏览次数:3  
标签:include 正整数 int 样例 C++ Copy 输入

正整数A+B

题的目标很简单,就是求两个正整数AB的和,其中AB都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。

输入格式:

输入在一行给出AB,其间以空格分开。问题是AB不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。

注意:我们把输入中出现的第1个空格认为是AB的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。

输出格式:

如果输入的确是两个正整数,则按格式A + B = 和输出。如果某个输入不合要求,则在相应位置输出?,显然此时和也是?

输入样例1:

123 456

Copy

输出样例1:

123 + 456 = 579

Copy

输入样例2:

22. 18

Copy

输出样例2:

? + 18 = ?

Copy

输入样例3:

-100 blabla bla...33

Copy

输出样例3:

? + ? = ?

代码: 

#include <stdio.h>
#include<bits/stdc++.h>
#include <string.h>
#include <iostream>
using namespace std;
int main(){
   string a,b,s;
   getline(cin,s);
   int n=s.size(),cnt=0,fa=1,fb=1,sum1=0,sum2=0;
   for(int i=0;i<n;i++){
      if(a[0]==' '){           //去除字符前的空格
         a[i]=a[i+1];
         n--;
      }
   } 
   for(int i=0;i<n;i++){       //A
   	if(s[i]!=' '){
   		a=a+s[i];
	   }
	   else {
	   	cnt=i+1;
	   	break;
	   }
   }
   for(int i=cnt;i<n;i++){
      if(s[i]==' '){
         s[i]=s[i+1];      //去除B前的空格
         cnt++;
      } 
   } 
   for(int i=cnt;i<n;i++){
      b=b+s[i];                 //B
   }
   int g=1;int len1=a.size();int len2=b.size();
    for(int i=0;i<len1;i++){
   	if(a[i]<'0'||a[i]>'9'){
   		fa=0;
   		break;
	   }
   }
   for(int i=0;i<=len2-1;i++){
   	if(b[i]<'0'||b[i]>'9'){
   		fb=0;
   		break;
	   }
   }
   if(fa){
      for(int i=len1-1;i>=0;i--){
	sum1+=(a[i]-'0')*g;          //A
	g=g*10;
   }
   }
   g=1;
   if(fb){
       for(int i=len2-1;i>=0;i--){
	sum2+=(b[i]-'0')*g;          //B
	g=g*10;
   }
   }
   if(sum1>1000||sum1<1) fa=0;
     if(sum2>1000||sum2<1) fb=0;
	if(fa && fb){
      cout<<a<<" + "<<b<<" = "<<sum1+sum2;
   }
   else if(!fa&&!fb){
      cout<<"? + ? = ?"<<endl;
   }
   else if(!fa&&fb){
      cout<<"? + "<<b<<" = ?";
   }
   else cout<<a<<" + ? "<<"= ?";
return 0;
}

标签:include,正整数,int,样例,C++,Copy,输入
From: https://blog.csdn.net/crescent_yue/article/details/144832885

相关文章

  • 21. C++快速入门--协程 Coroutine 入门
    参考:https://www.cnblogs.com/blizzard8204/p/17563217.htmlhttps://www.bennyhuo.com/2022/03/09/cpp-coroutines-01-intro/本文不完整,更新中1基本概念什么是协程?C++20的协程是一个特殊函数,具有挂起和恢复的能力.(可以不一次性执行)协程可用于异步编程,提供......
  • 16. C++快速入门--模板和Concept
    待修改1定义模板1.1模板形参模板参数模板可以有两种参数,一种是类型参数,一种是非类型参数这两种参数可以同时存在,非类型参数的类型可以是模板类型形参template< typenameT,//1 Ta//2>第一个参数是类型参数T第二个是非类型参数a,它的类型和形参......
  • C++语言知识点总结
    众所周知,C++有超级大量的相关知识,普通人类是难以做到“精通C++”的。不过,这不影响我想做一些C++语言知识点的总结,帮助自己理解C++的设计并更好地使用它:)一、基础概念相关类的构造关键点在于,对任何构造函数,C++会在进入构造函数体之前,自动调用所有成员变量的构造函数(如果未显式......
  • Effective C++ 条款40:明智而审慎地使用多重继承
    文章目录条款40:明智而审慎地使用多重继承示例1:多重继承中的歧义示例2:避免菱形继承问题示例3:合理使用多重继承总结条款40:明智而审慎地使用多重继承多重继承(MultipleInheritance)允许一个类从多个基类继承。然而,与单一继承相比,多重继承更加复杂,可能带来以下问题和......
  • C12.【C++ Cont】string类字符串的创建、输入、访问和size函数
    目录1.概念2.string字符串的创建示例代码 运行结果备注 2.string字符串的输入1.cin(字符串没有空格)2.getline(可以读含有空格的字符串)示例代码1:getline传两个参数示例代码2:getline传三个参数3.size函数示例代码运行结果4.访问string类字符串示例代码 运......
  • 【练习】完美数列:给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M
    题目给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M<=m*p,则称这个数列是完美数列。现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。输入格式:输入第一行给出两个正整数N和p,其中N(<=105)是输入的正整数的个数,p(<=109)是给......
  • 1. C++快速入门--变量和基本类型, 类别
    文章使用obsidian编写,双链部分可能失效1基本内置类型1.1算术类型算术类型介绍bool类型字符类型整数类型实数浮点、虚数浮点和复数浮点参看如下表![[Pastedimage20230814160130.png|700]]带符号和无符号类型的变量分为:signed和unsignedunsigned变量......
  • qt/c++ 学习笔记之网页照片爬虫
    *注意:本爬虫使用的qt版本为5.14.2,使用的是qtwebkit类是自己配置了qtwebkit和对应qt版本的openssl,其中qtwebkit类在qt5.15和qt6版本已经删除,需要自己私下配置qtwebkit和对应qt版本的openssl头文件widget.h#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>#include......
  • C++关键字
    C++关键字static类和结构体外的static被static修饰后只在内部发生链接,其作用域只在其所在的文件中。类和结构体内的staticstructEntity{ staticintx,y; 静态成员变量 staticvoidPrint() { std::cout<<x<<","<<y<<std::endl; }};intEntity::x; //......
  • C++标准库
        【欢迎关注编码小哥,学习更多实用的编程方法和技巧】    C++标准库是C++语言的重要组成部分,它为程序员提供了一系列的功能强大的工具和组件,帮助他们更高效地进行软件开发。标准库不仅包括基本的输入输出功能,还涵盖了数据结构、算法、内存管理、日期和时间处......