求dalao们看看为什么本机能过,测试全WA?

P1957 口算练习题

希望更丰富的展现?使用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


| 下一页