王老師正在教簡(jiǎn)單算術(shù)運(yùn)算。細(xì)心的王老師收集了i道學(xué)生經(jīng)常做錯(cuò)的口算題,并且想整理編寫(xiě)成一份練習(xí)。 編排這些題目是一件繁瑣的事情,為此他想用計(jì)算機(jī)程序來(lái)提高工作效率。王老師希望盡量減少輸入的工作量,比如 5+8 \texttt{5+8} 5+8 的算式最好只要輸入 5 \texttt 5 5 和 8 \texttt 8 8,輸出的結(jié)果要盡量詳細(xì)以方便后期排版的使用,比如對(duì)于上述輸入進(jìn)行處理后輸出 5+8=13 \texttt{5+8=13} 5+8=13 以及該算式的總長(zhǎng)度 6 6 6。王老師把這個(gè)光榮的任務(wù)交給你,請(qǐng)你幫他編程實(shí)現(xiàn)以上功能。
輸入格式第一行為數(shù)值 i i i
接著的 i i i 行為需要輸入的算式,每行可能有三個(gè)數(shù)據(jù)或兩個(gè)數(shù)據(jù)。
若該行為三個(gè)數(shù)據(jù)則第一個(gè)數(shù)據(jù)表示運(yùn)算類(lèi)型, a \texttt a a 表示加法運(yùn)算, b \texttt b b 表示減法運(yùn)算, c \texttt c c 表示乘法運(yùn)算,接著的兩個(gè)數(shù)據(jù)表示參加運(yùn)算的運(yùn)算數(shù)。
若該行為兩個(gè)數(shù)據(jù),則表示本題的運(yùn)算類(lèi)型與上一題的運(yùn)算類(lèi)型相同,而這兩個(gè)數(shù)據(jù)為運(yùn)算數(shù)。
輸出格式輸出 2 × i 2\times i 2×i 行。對(duì)于每個(gè)輸入的算式,輸出完整的運(yùn)算式及結(jié)果,第二行輸出該運(yùn)算式的總長(zhǎng)度
樣例 #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
提示數(shù)據(jù)規(guī)模與約定
對(duì)于 50 % 50\% 50% 的數(shù)據(jù),輸入的算式都有三個(gè)數(shù)據(jù),第一個(gè)算式一定有三個(gè)數(shù)據(jù)。
對(duì)于所有數(shù)據(jù),
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方法將字符轉(zhuǎn)整數(shù);
#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轉(zhuǎn)化為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<
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
名稱欄目:兩種方法解決口算練習(xí)題-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)URL:http://www.rwnh.cn/article8/pccop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、定制網(wǎng)站、云服務(wù)器、自適應(yīng)網(wǎng)站、網(wǎng)站營(yíng)銷(xiāo)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容