团体程序设计天梯赛-练习集L1-025 正整数A+B (15分)(getline输入)
生活随笔
收集整理的這篇文章主要介紹了
团体程序设计天梯赛-练习集L1-025 正整数A+B (15分)(getline输入)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:
題的目標很簡單,就是求兩個正整數A和B的和,其中A和B都在區間[1,1000]。稍微有點麻煩的是,輸入并不保證是兩個正整數。
輸入格式:
輸入在一行給出A和B,其間以空格分開。問題是A和B不一定是滿足要求的正整數,有時候可能是超出范圍的數字、負數、帶小數點的實數、甚至是一堆亂碼。
注意:我們把輸入中出現的第1個空格認為是A和B的分隔。題目保證至少存在一個空格,并且B不是一個空字符串。
輸出格式:
如果輸入的確是兩個正整數,則按格式A + B = 和輸出。如果某個輸入不合要求,則在相應位置輸出?,顯然此時和也是?。
輸入樣例1:
123 456
輸出樣例1:
123 + 456 = 579
輸入樣例2:
輸出樣例2:
? + 18 = ?
輸入樣例3:
-100 blabla bla…33
輸出樣例3:
? + ? = ?
分析:
這道題需要注意的是數據A、B的范圍在【1,1000】,這時候我們會控制在小于1000內,忽略了值需小于1即不能為0.
AC代碼:
#include<bits/stdc++.h> using namespace std; int n,k; string s; int x,y,flag,book; int main(){getline(cin,s);int l=s.size();x=y=flag=book=0;for(int i=0;i<l;i++){if(s[i]==' '){k=i;break;}if(s[i]>='0'&&s[i]<='9')x=x*10+s[i]-'0';elseflag=1;}if(x>1000||x<1)flag=1;for(int i=k+1;i<l;i++){if(s[i]>='0'&&s[i]<='9')y=y*10+s[i]-'0';else {book=1;break;}}if(y>1000||y<1)book=1;flag==0?cout<<x:cout<<'?';cout<<' '<<'+'<<' ';book==0?cout<<y:cout<<'?';if(!book&&!flag) cout<<" = "<<x+y<<endl;else cout<<" = "<<'?'<<endl;return 0; }總結
以上是生活随笔為你收集整理的团体程序设计天梯赛-练习集L1-025 正整数A+B (15分)(getline输入)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图片居中裁剪_魔镜,魔镜,谁最美丽!利用
- 下一篇: Division CodeForces