已A
by right_cat @ 2018-12-29 22:16:43
//测试数据能过但交上去0分??+1
//求解释
by 粤若稽古 @ 2019-02-23 11:57:57
我的代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
long oper(char c){
if (c=='a') return 1;
if (c=='b') return 2;
if (c=='c') return 3;
}
long calculate(long num1,long num2,long flag){
if (flag==1) return (num1+num2);
if (flag==2) return (num1-num2);
if (flag==3) return (num1*num2);
}
long digits(long num){
long len=0;
if (num==0) return 1;
if (num<0) {
num=num*(-1);
len++;
}
while (num>0){
len++;
num=num/10;
}
return len;
}
void print(long flag){
switch (flag){
case 1:
printf("+");
break;
case 2:
printf("-");
break;
case 3:
printf("*");
break;
default:
return;;
}
}
void print_2lines(long num1,long num2,long result,long length,long flag){
printf("%ld",num1);
print(flag);
printf("%ld=%ld\n%ld\n",num2,result,length);
}
long deal_first(void){
long length_of_sentence,length,num1,num2,result,flag,loc;
char a[100];
gets(a);
length_of_sentence=strlen(a);
flag=oper(a[0]);
num1=num2=0;
loc=2;
while (a[loc]!=' '){
num1=num1*10+a[loc]-'0';
loc++;
}
loc++;
while (loc<length_of_sentence){
num2=num2*10+a[loc]-'0';
loc++;
}
result=calculate(num1,num2,flag);
length=digits(num1)+digits(num2)+digits(result)+2;
print_2lines(num1,num2,result,length,flag);
return flag;
}
long deal_rest(long flag){
long length_of_sentence,length,num1,num2,result,loc;
char a[100];
gets(a);
length_of_sentence=strlen(a);
if (a[0]>='a'&&a[0]<='c') {
flag=oper(a[0]);
num1=num2=0;
loc=2;
while (a[loc]!=' '){
num1=num1*10+a[loc]-'0';
loc++;
}
loc++;
while (loc<length_of_sentence){
num2=num2*10+a[loc]-'0';
loc++;
}
result=calculate(num1,num2,flag);
length=digits(num1)+digits(num2)+digits(result)+2;
print_2lines(num1,num2,result,length,flag);
return flag;
}
else{
num1=num2=0;
loc=0;
while (a[loc]!=' '){
num1=num1*10+a[loc]-'0';
loc++;
}
loc++;
while (loc<length_of_sentence){
num2=num2*10+a[loc]-'0';
loc++;
}
result=calculate(num1,num2,flag);
length=digits(num1)+digits(num2)+digits(result)+2;
print_2lines(num1,num2,result,length,flag);
return flag;
}
}
int main(){
long n,flag;
cin>>n;
getchar();
flag=deal_first();
for (long i = 1; i <n ; ++i) {
flag=deal_rest(flag);
}
return 0;
}
by 粤若稽古 @ 2019-02-23 12:00:59
@[萌萌的蒟蒻](/user/133063) 西风站,始马克当
by tZEROちゃん @ 2020-01-28 17:53:05