Java基本数据类型 开源商城系统 Spring Cloud EasyCVR datagridview react router swift2 vue表单 js事件绑定 matlab停止运行命令 查看nodejs版本 mysql学习 python使用教程 python基础教程 python链接mysql数据库 python编程工具 python教程推荐 java编程入门 java查找字符串 java接口文档 java方法重载 javafloat java中float java获取 java包名 找茬辅助 微信小程序提示框 kms神龙 剑三醉猿 手机知识 js验证码 mtu设置多少最好 ps怎么画漫画 cdr字体变形 骰子gif winfax ocr文字识别软件免费下载 黑域使用教程 三星打印机怎么加墨 php上传文件
当前位置: 首页 > 学习教程  > 编程语言

L1-025 正整数A+B

2020/9/19 13:31:03 文章标签:

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

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

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

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

输入样例1:
123 456
输出样例1:
123 + 456 = 579
输入样例2:
22. 18
输出样例2:
? + 18 = ?
输入样例3:
-100 blabla bla…33
输出样例3:
? + ? = ?

#include<stdio.h>
#include<iostream>
#include<string>
#include<algorithm>
#include<math.h>
using namespace std;
//16:32
int check(const char *str)
{
	int sum = 0;
	for(int i=0;str[i] != '\0';i++){
		if(str[i]>='0' && str[i]<='9'){
			sum = sum*10 + str[i]-'0';
		}
		else{
			return -1;
		}
	}
	if(sum>=1 && sum<=1000)
		return sum;
	else
		return -1;
}
int main()
{
    /*感觉这个题卡的是输入,用了好多种输入都不对,最后a b 分开读并且中间
    用一个getchar() 吸收换行就对了!!!*/
	char a[10001],b[10001];
	cin>>a;
	getchar();
	cin.getline(b,10001);
	//注意这里b不能用cin 读,因为第一个空格是用来区分a b 的,b里面可能会继续存在空格,,这可能也是卡的一个点吧
    //cin>>b;
	
	//scanf("%s",&a);
	//scanf("%[^\n]",b);	//用scanf读空格 
	int pa = check(a);
	int pb = check(b);
	if(pa == -1){
		printf("? + ");
	}
	else{
		printf("%d + ",pa);
	}
	if(pb == -1){
		printf("? = ");
	}
	else{
		printf("%d = ",pb);
	}
	if(pa == -1 || pb == -1){
		printf("?\n");
	}
	else if(pa != -1 && pb != -1){
		printf("%d\n",pa+pb);
	}
	return 0;
}

本文链接: http://www.dtmao.cc/news_show_200002.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?