2021.7.14吐槽向

2021.7.14

吐槽一下 L1-016 查验身份证 及L1-019 谁先倒

有心(sheng)无力(qi)的一天,下午一直在纠缠L1-016的问题,莫名其妙的代码在cb上运行会出现错误,他会把我设置好的a数组中的a[0]修改为0(在其他编译器上没这情况)就为了这个纠结了一中午(浪费时间)

事故现场:

 

调试后发现scanf("%s",s);之后a[0]的值会变为0,从而让后面的计算也出错(将a数组改为全局变量后不会出现这个情况)

把问题给了学长,在其他上面运行出来都没问题...(面无表情.jpg)

学长的建议

填补了之前的一个疑惑(为什么一些题解里的数组不需要清零)

学到了一个好习惯,补了一个疑惑,勉勉强强吧。

L1-019 谁先倒

程序闪退...但是感觉自己做的没啥问题,还是交了上去,结果过了。在测试出来也都是对的,就不太能理解为什么做对了,程序也会退出。

先贴一下代码吧

#include<stdio.h>
typedef struct node
{
    int jiu,hua,han;
} node;
int main()
{
    node a,b;
    scanf("%d %d",&a.jiu,&b.jiu);
    int n,jiua,jiub;
    jiua=a.jiu; jiub=b.jiu;
    scanf("%d",&n);
    while(n--)
    {
        int sum;
        scanf("%d %d",&a.han,&a.hua);
        scanf("%d %d",&b.han,&b.hua);
        if(a.hua!=b.hua)
        {
            sum=a.han+b.han;
            if(a.hua==sum)
            {
                jiua--;
            }
            if(b.hua==sum)
            {
                jiub--;
            }
        }
        if(jiua==-1)
        {
            printf("A\n%d",b.jiu-jiub);
            break;
        }
        if(jiub==-1)
        {
            printf("B\n%d",a.jiu-jiua);
            break;
        }
    }
}

 下面是测试样例

1 1
6
8 10 9 12
5 10 5 10
3 8 5 12
12 18 1 13
4 16 12 15
15 1 1 16

这里是自己欠考虑也是代码敲少的原因...

 在数据为 4 16 12 15这一组的时候,程序已经结束了,但是15 1 1 16组依然被复制粘贴后输入了

在输入15的时候,程序就已经被退出了...

自己还在网上找了其他的题解来看,但是找的算法和我的算法,不太一样,他们是把全部数据保存下来后,再进行判断,我的是再输入后就进行判断,这就导致了找的算法里复制粘贴后数据全面录入,没有多余的输入。(间接导致我怀疑自己编译器出了问题)

总结一下今天,算是吃一堑长一智的一天,之后这些问题也会遇见的,早点碰见也好,

不足的是,就是因为这些,今天过的题好少...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值