测试数据能过但交上去0分??

P1957 口算练习题

已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


|