希望更丰富的展现?使用Markdown
@[萌萌的蒟蒻](/space/show?uid=133063)
by aminoas @ 2019-02-23 12:34:13
求各位大佬帮忙看下,代码丑请尽量谅解!
by 粤若稽古 @ 2019-02-23 12:34:48
```cpp
#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){
//oper is short for operator,表示中间的运算符是+/-/*;
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;//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;
long 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 aminoas @ 2019-02-23 12:35:45
@[2018J1605](/space/show?uid=143834)
我先百度下;
先谢谢dalao!
by 粤若稽古 @ 2019-02-23 12:35:49
@[2018J1605](/space/show?uid=143834)
谢谢你手动更正,使它有了更好的呈现!
(忽然喜欢上了这个行业)
by 粤若稽古 @ 2019-02-23 12:37:26
这就是你自己的代码好吗?@[萌萌的蒟蒻](/space/show?uid=133063)
我只是帮你弄美观了一点...
by aminoas @ 2019-02-23 12:37:52
@[2018J1605](/space/show?uid=143834)
嗯,我知道,
只不过是学校的大佬们都很少愿意看小白的代码,
更别说是修改格式了……
(先下了,去吃个饭)
by 粤若稽古 @ 2019-02-23 12:39:29
最近蓝紫黑刷太多了,来讨论版看一眼...
结果发现:现在的橙题难度堪比蓝题...
好吧可能是楼主码量太多了...
by aminoas @ 2019-02-23 12:42:37
楼主把橙题刷成紫题的量,服了
by fuhongjun2018 @ 2019-02-23 13:10:07
这题...一个高精度全包了啊!
~~尽管数据范围只有一万~~
by aminoas @ 2019-02-23 13:18:34