
王老師正在教簡單算術運算。細心的王老師收集了i道學生經常做錯的口算題,并且想整理編寫成一份練習。 編排這些題目是一件繁瑣的事情,為此他想用計算機程序來提高工作效率。王老師希望盡量減少輸入的工作量,比如 5+8 \texttt{5+8} 5+8 的算式最好只要輸入 5 \texttt 5 5 和 8 \texttt 8 8,輸出的結果要盡量詳細以方便后期排版的使用,比如對于上述輸入進行處理后輸出 5+8=13 \texttt{5+8=13} 5+8=13 以及該算式的總長度 6 6 6。王老師把這個光榮的任務交給你,請你幫他編程實現以上功能。
輸入格式第一行為數值 i i i
接著的 i i i 行為需要輸入的算式,每行可能有三個數據或兩個數據。
若該行為三個數據則第一個數據表示運算類型, a \texttt a a 表示加法運算, b \texttt b b 表示減法運算, c \texttt c c 表示乘法運算,接著的兩個數據表示參加運算的運算數。
若該行為兩個數據,則表示本題的運算類型與上一題的運算類型相同,而這兩個數據為運算數。
輸出格式輸出 2 × i 2\times i 2×i 行。對于每個輸入的算式,輸出完整的運算式及結果,第二行輸出該運算式的總長度
樣例 #1 樣例輸入 #14
a 64 46
275 125
c 11 99
b 46 64樣例輸出 #164+46=110
9
275+125=400
11
11*99=1089
10
46-64=-18
9提示數據規模與約定
對于 50 % 50\% 50% 的數據,輸入的算式都有三個數據,第一個算式一定有三個數據。
對于所有數據,
0
<
i
≤
50
0
題解:
我將分為四部分求解:
void change(int sum){
int t=0,flag=0;
if(sum<0){
flag=1;
sum=-sum;
}
while(sum/10!=0){
d[t]=sum%10+'0';
sum/=10;
t++;
}
d[t]=sum+'0';
t++;
if(flag){
d[t]='-';
t++;
d[t]='\0';
}
else {
d[t]='\0';
}
}void exchange(char *b){
int k=0;
b1=0;
for(int i=strlen(b)-1;i>=0;i--){
b1+=(b[i]-'0')*pow(10,k);
k++;
}
}void compute(char *b,char *c,char mark){
exchange(b);
int k=b1;
exchange(c);
int k1=b1;
int sum=0;
if(mark=='a'){
sum=k+k1;
}
else if(mark=='b'){
sum=k-k1;
}
else {
sum=k*k1;
}
change(sum);
cout<=0;i--){
printf("%c",d[i]);
}
printf("\n");
cout<int main(){
int n;
cin>>n;
int t=n;
char mark;
while(t--){
cin>>a;
if(a[0]<'0'||a[0]>'9'){
mark=a[0];
cin>>b;
cin>>c;
compute(b,c,mark);
}
else{
cin>>b;
compute(a,b,mark);
}
a[0]='\0';
b[0]='\0';
c[0]='\0';
d[0]='\0';
}
return 0;
}
#include#include#includeusing namespace std;
char a[100],b[100],c[100],d[100],mark1[4]={"+-*"};
int b1=0;
void change(int sum){int t=0,flag=0;
if(sum<0){flag=1;
sum=-sum;
}
while(sum/10!=0){d[t]=sum%10+'0';
sum/=10;
t++;
}
d[t]=sum+'0';
t++;
if(flag){d[t]='-';
t++;
d[t]='\0';
}
else {d[t]='\0';
}
}
void exchange(char *b){int k=0;
b1=0;
for(int i=strlen(b)-1;i>=0;i--){b1+=(b[i]-'0')*pow(10,k);
k++;
}
}
void compute(char *b,char *c,char mark){exchange(b);
int k=b1;
exchange(c);
int k1=b1;
int sum=0;
if(mark=='a'){sum=k+k1;
}
else if(mark=='b'){sum=k-k1;
}
else {sum=k*k1;
}
change(sum);
cout<=0;i--){printf("%c",d[i]);
}
printf("\n");
cout<int n;
cin>>n;
int t=n;
char mark;
while(t--){cin>>a;
if(a[0]<'0'||a[0]>'9'){mark=a[0];
cin>>b;
cin>>c;
compute(b,c,mark);
}
else{cin>>b;
compute(a,b,mark);
}
a[0]='\0';
b[0]='\0';
c[0]='\0';
d[0]='\0';
}
return 0;
} 大佬的代碼:同樣他是采用sscanf,sprintf方法將字符轉整數;
#include#include#includeusing namespace std;
int main(){int n;
char a;
int c,d;
char b[100],s[100];
cin>>n;
for(int i=0;icin>>b;
if(b[0]<'0'||b[0]>'9'){a=b[0];
cin>>c>>d;
}
else{sscanf(b,"%d",&c);//將b轉化為c的int型;
cin>>d;
}
memset(s,0,sizeof(s));
if(a=='a'){sprintf(s,"%d+%d=%d",c,d,c+d);
}
else if(a=='b'){sprintf(s,"%d-%d=%d",c,d,c-d);
}
else{sprintf(s,"%d*%d=%d",c,d,c*d);
}
cout<
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
名稱欄目:兩種方法解決口算練習題-創新互聯
網頁URL:http://www.yijiale78.com/article8/pccop.html
成都網站建設公司_創新互聯,為您提供移動網站建設、動態網站、定制網站、云服務器、自適應網站、網站營銷
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯