随笔 - 123  文章 - 0  评论 - 0  阅读 - 25296

L1-025 正整数A+B (15分)

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

输入格式:

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

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

输出格式:

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

输入样例1:

123 456

输出样例1:

123 + 456 = 579

输入样例2:

22. 18

输出样例2:

? + 18 = ?

输入样例3:

-100 blabla bla...33

输出样例3:

? + ? = ?

 

ac code:

复制代码
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int pows(int x,int y){
 4     if (y==0)
 5         return 1;
 6     int z=x;
 7     for (int i=0;i<y-1;++i){
 8         x*=z;
 9     }
10     return x;
11 }
12 int main()
13 {
14     char a[10005],b[10005];
15     int f1=0,f2=0,x=0,y=0;
16     cin>>a;
17     scanf(" %[^\n]",b);
18     for (int i=0;i<strlen(a);++i){
19         if (a[i]<'0'||a[i]>'9')
20         {
21             f1=1;
22             break;
23         }
24     }
25     for (int i=0;i<strlen(b);++i){
26         if (b[i]<'0'||b[i]>'9')
27         {
28             f2=1;
29             break;
30         }
31     }
32     if (f1==0){
33         for (int i=0;i<strlen(a);++i){
34             x+=(a[i]-'0')*pows(10,strlen(a)-i-1);
35         }
36         if (x<1||x>1000)
37             f1=1;
38 
39     }
40     if (f2==0){
41         for (int i=0;i<strlen(b);++i){
42             y+=(b[i]-'0')*pows(10,strlen(b)-i-1);
43         }
44         if (y<1||y>1000)
45             f2=1;
46     }
47     if (f1==0)
48         cout<<x<<" + ";
49     else
50         cout<<"? + ";
51     if (f2==0)
52         cout<<y<<" = ";
53     else
54         cout<<"? = ";
55     if (f1+f2==0)
56         cout<<x+y;
57     else
58         cout<<'?';
复制代码

一道水题卡我很久,总结一下:

1.带空格字符串输入:

如果是字符数组(char a[100]):

a.首选gets(a);
b.若gets()用不了,用scanf(" %[^\n]",a);

如果是字符串类(string str):getline(cin,str);

2.字符串转换成数字:

a.通过传统方法一位一位转过来
b.通过#include<string>头文件中的stoi(const string& str , size_t *idx=0, int base=10)即(stoi(字符串,起始位置,n进制),将 n 进制的字符串转化为十进制)
或者使用atoi(const char* a)
posted on   Coder何  阅读(373)  评论(0)    收藏  举报
编辑推荐:
· 聊一聊 Linux 上对函数进行 hook 的两种方式
· C# 锁机制全景与高效实践:从 Monitor 到 .NET 9 全新 Lock
· 一则复杂 SQL 改写后有感
· golang中写个字符串遍历谁不会?且看我如何提升 50 倍
· C# 代码如何影响 CPU 缓存速度?
阅读排行:
· 提升Avalonia UI质感,跨平台图标库选型实践
· 突发,CSDN 崩了!程序员们开始慌了?
· C# 中委托和事件的深度剖析与应用场景
· 一个基于 .NET 8 + Ant Design Blazor 开发的简洁现代后台管理框架
· AppBox拖拽设计增删改查用户界面
< 2025年6月 >
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12

点击右上角即可分享
微信分享提示