【洛谷】P1957 口算练习题【C++】
口算練習題
題目描述
王老師正在教簡單算術運算。細心的王老師收集了i道學生經常做錯的口算題,并且想整理編寫成一份練習。 編排這些題目是一件繁瑣的事情,為此他想用計算機程序來提高工作效率。王老師希望盡量減少輸入的工作量,比如 5+8\texttt{5+8}5+8 的算式最好只要輸入 5\texttt 55 和 8\texttt 88,輸出的結果要盡量詳細以方便后期排版的使用,比如對于上述輸入進行處理后輸出 5+8=13\texttt{5+8=13}5+8=13 以及該算式的總長度 666。王老師把這個光榮的任務交給你,請你幫他編程實現以上功能。
輸入格式
第一行為數值 iii
接著的 iii 行為需要輸入的算式,每行可能有三個數據或兩個數據。
若該行為三個數據則第一個數據表示運算類型,a\texttt aa 表示加法運算,b\texttt bb 表示減法運算,c\texttt cc 表示乘法運算,接著的兩個數據表示參加運算的運算數。
若該行為兩個數據,則表示本題的運算類型與上一題的運算類型相同,而這兩個數據為運算數。
輸出格式
輸出 2×i2\times i2×i 行。對于每個輸入的算式,輸出完整的運算式及結果,第二行輸出該運算式的總長度
樣例 #1
樣例輸入 #1
4 a 64 46 275 125 c 11 99 b 46 64樣例輸出 #1
64+46=110 9 275+125=400 11 11*99=1089 10 46-64=-18 9提示
數據規模與約定
對于 50%50\%50% 的數據,輸入的算式都有三個數據,第一個算式一定有三個數據。
對于所有數據,0<i≤500<i\leq 500<i≤50,運算數為非負整數且小于 100001000010000。
#include <bits/stdc++.h> using namespace std; int main(){int n,a,b; char m,s[10001];cin>>n;//n次運算while(n--){int f = scanf("%d%d",&a,&b);//scanf()函數是有返回值的if(!f) scanf("%c%d%d",&m,&a,&b);if(m == 'a'){sprintf(s,"%d+%d=%d",a,b,a+b);//用sprintf()函數拼接字符串}else if(m == 'b'){sprintf(s,"%d-%d=%d",a,b,a-b);}else if(m == 'c'){sprintf(s,"%d*%d=%d",a,b,a*b);}cout<<s<<endl;cout<<strlen(s)<<endl;}}總結
以上是生活随笔為你收集整理的【洛谷】P1957 口算练习题【C++】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux32系统下载地址,deepin
- 下一篇: openGL学习之旅(一)DEV-C++