c语言 0分 但样例过了 求助

P1957 口算练习题

Lolaandd @ 2023-11-22 19:26:12

#include<stdio.h>
int len(int a)
{
    int len=0;
    if(a==0) 
    {
        len=1;
        return len;
    }
    if(a<0)
    {
        len++;
        a=-a;
    }
    while(a>0)
    {
        a/=10;
        len++;
    }
    return len;

}
int main()
{
    int n;
    scanf("%d",&n);
    getchar();
    char str[50];
    char l;
    for (int i=0;i<n;i++)
    {
        int temp[2]={0};
        scanf("%c",&str[i]);
        switch (str[i])
        {
            case 'a':l=str[i];
                    scanf("%d %d",&temp[0],&temp[1]);
                    printf("%d+%d=%d\n",temp[0],temp[1],temp[0]+temp[1]);
                    break;
            case 'b':l=str[i];
                    scanf("%d %d",&temp[0],&temp[1]);
                    printf("%d-%d=%d\n",temp[0],temp[1],temp[0]-temp[1]);
                    break;
            case 'c':l=str[i];
                    scanf("%d %d",&temp[0],&temp[1]);
                    printf("%d*%d=%d\n",temp[0],temp[1],temp[0]*temp[1]);
                    break;
            default :
                    scanf("%d %d",&temp[0],&temp[1]);
                    if(l=='+') printf("%d+%d=%d\n",temp[0],temp[1],temp[0]+temp[1]);
                    if(l=='-') printf("%d-%d=%d\n",temp[0],temp[1],temp[0]-temp[1]);
                    if(l=='*') printf("%d*%d=%d\n",temp[0],temp[1],temp[0]*temp[1]);
                    break;  
        }
        printf("%d\n",len(temp[0])+len(temp[1])+len(temp[0]+temp[1])+2);
    }
    return 0;
}

by milk2715093695 @ 2023-11-22 23:02:52

你这个样例好像也没过啊

if(l=='+') 
    printf("%d+%d=%d\n",temp[0],temp[1],temp[0]+temp[1]);
if(l=='-') 
    printf("%d-%d=%d\n",temp[0],temp[1],temp[0]-temp[1]);
if(l=='*') 
    printf("%d*%d=%d\n",temp[0],temp[1],temp[0]*temp[1]);

这里你判断l是否等于+ - *但是你在这之前l只可能等于a b c啊。

而且感觉代码逻辑也有问题:假设你已经修复了上述问题,使用数据

4
a 64 46
275 125
c 11 99
b 46 64

的时候处理完第三行数据之后l是'c',scanf下一个读到的是第三行末尾的'\r'或者'\n',然后又进defaute了,那d根本就拿不到。

如果这些问题都修复了,还是有一点小问题: 这组数据其实不是4\na 64 46\n275 125\nc 11 99\nb 46 64,而是4\r\na 64 46\r\n275 125\r\nc 11 99\r\nb 46 64,具体可以看https://www.luogu.com.cn/discuss/735482


|