欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

38行代码AC——L1-025 正整数A+B (15分)(~解题报告~)

发布时间:2024/2/28 编程问答 31 豆豆
生活随笔 收集整理的这篇文章主要介绍了 38行代码AC——L1-025 正整数A+B (15分)(~解题报告~) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

立志用更少的代码做更高效的表达


题的目标很简单,就是求两个正整数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:
? + ? = ?


几个特殊样例

输入: 1 1000
输出: 1 + 1000 = 1001

输入:123 33(中间两个空格)
输出:123 + ? = ?

输入: 1 001
输出: 1 + 1 = 2


代码展示

#include <bits/stdc++.h> using namespace std; int main() {char a[1000],b[1000];int sum1=0,sum2=0;bool flag1 =true,flag2=true;int len1,len2;scanf("%s",a);len1 = strlen(a);for (int i=0;i<len1;i++) if (a[i]>'9'||a[i]<'0')flag1=false;if (flag1) {sum1=a[0]-'0';for (int i=1;i<len1;i++)sum1=sum1*10+(a[i]-'0');}getchar();scanf("%[^\n]",b);len2 = strlen(b);for (int i=0;i<len2;i++) if (b[i]>'9'||b[i]<'0')flag2=false;if (flag2) {sum2 = b[0]-'0';for (int i=1;i<len2;i++)sum2 = sum2*10+(b[i]-'0');}if (flag1&&sum1>=1&&sum1<=1000)printf("%d + ",sum1);else printf("? + ");if (flag2&& sum2>=1&&sum2<=1000)printf("%d = ",sum2);else printf("? = ");if (flag1&&sum1>=1&&sum1<=1000 && flag2&& sum2>=1&&sum2<=1000)printf("%d",sum1+sum2);else printf("?");return 0; }

每日一句

记住,不要愤怒,因为愤怒会降低你的智慧;也不要仇恨自己的敌人,因为仇恨会使你丧失判断力。与其恨自己的敌人,不如拿他来为我所用。

总结

以上是生活随笔为你收集整理的38行代码AC——L1-025 正整数A+B (15分)(~解题报告~)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。