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的时候,程序就已经被退出了...
自己还在网上找了其他的题解来看,但是找的算法和我的算法,不太一样,他们是把全部数据保存下来后,再进行判断,我的是再输入后就进行判断,这就导致了找的算法里复制粘贴后数据全面录入,没有多余的输入。(间接导致我怀疑自己编译器出了问题)
总结一下今天,算是吃一堑长一智的一天,之后这些问题也会遇见的,早点碰见也好,
不足的是,就是因为这些,今天过的题好少...