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:
? + ? = ?
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)
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 聊一聊 Linux 上对函数进行 hook 的两种方式
· C# 锁机制全景与高效实践:从 Monitor 到 .NET 9 全新 Lock
· 一则复杂 SQL 改写后有感
· golang中写个字符串遍历谁不会?且看我如何提升 50 倍
· C# 代码如何影响 CPU 缓存速度?
· 提升Avalonia UI质感,跨平台图标库选型实践
· 突发,CSDN 崩了!程序员们开始慌了?
· C# 中委托和事件的深度剖析与应用场景
· 一个基于 .NET 8 + Ant Design Blazor 开发的简洁现代后台管理框架
· AppBox拖拽设计增删改查用户界面