自测和答案一模一样,但是爆0 求大佬看看 代码可读性强

P1957 口算练习题

ASaltyFish @ 2020-12-02 10:06:46

#include<bits/stdc++.h>
using namespace std;
int len(int x)//判断位数 
{
    int len=0;
    if(x<0) 
    {
        x*=-1;
        len++;
    }
    while(x>0)
    {
        x/=10;
        len++;
    }
    return len;
}
int main()
{
    int n;
    scanf("%d",&n);
    getchar();//读取第一个回车 
    char r;//r用来存放运算符 
    for(int p=1;p<=n;p++)
    {
        char s[20];//s用来存放整行输入 
        char x[10],y[10];//x,y用来存放两个数字 
        memset(y,0,sizeof(y));//清空x y数组 
        memset(x,0,sizeof(x));
        gets(s);
        if(s[0]<='z'&&s[0]>='a')//判断第一个字符是不是字母 
        {
            //如果是,则开始存放两个数字 
            r=s[0];
            int k=0;
            int i=1;
            for(i=2;i<strlen(s);i++)//存放第一个数字 
            {
                if(s[i]!=' ')//遇到空格就停止读入 
                x[k++]=s[i];
                else break;
            }
            for(i=i+1,k=0;i<strlen(s);i++)//存放第二个数字 
            y[k++]=s[i];
        }
        else//如果第一位不是字母,说明运算符为上一行的运算符,直接开始存数字 
        {
            int k=0;
            int i=0;
            for(i=0;i<strlen(s);i++)//与上同理 
            {
                if(s[i]!=' ')
                x[k++]=s[i];
                else break;
            }
            for(i=i+1,k=0;i<strlen(s);i++)
            y[k++]=s[i];
        }

        int x1=atoi(x),y1=atoi(y);//用x1,y1来存两个数的整型形式 
        //atoi用来转字符型为整型 
        if(r=='a') 
            printf("%d+%d=%d\n%d",x1,y1,x1+y1,len(x1)+len(y1)+len(x1+y1)+2);//+2是加的运算符和等于号 
        if(r=='c') 
            printf("%d*%d=%d\n%d",x1,y1,x1*y1,len(x1)+len(y1)+len(x1*y1)+2);
        if(r=='b') 
            printf("%d-%d=%d\n%d",x1,y1,x1-y1,len(x1)+len(y1)+len(x1-y1)+2);

        if(p<n) printf("\n");
    }   
    return 0;

}

by Ephemeroptera @ 2020-12-02 10:19:58

cin 再试下??


by ASaltyFish @ 2020-12-02 10:46:07

@Job_Lee cin不是遇到空格就结束了嘛


by ASaltyFish @ 2020-12-02 10:54:54

@Job_Lee cin.get gets cin.getline都试了,都WA


by ASaltyFish @ 2020-12-02 10:55:32

错误都是Too short on line 1.


by Jiyeon2 @ 2021-01-27 21:51:39

我的代码和你的很像,不知道是哪里出了问题


|