蓝桥杯历届试题:错误票据
作者:互联网
过程:
1、处理输入问题。发现直接scanf就可以了,而且给出的N行并没有用。
2、判断条件。两个if语句,发现错误67%。
3、稍微更改一下判断条件,正确。
关键: 注意第一个判断条件不能用 **if(a[j]!=a[j+1]-1)**来找断号,因为如果前后两个数字相同的话也满足这个条件,那么断号就被重号代替了。
代码1(有67%错误):
#include<iostream>
#include<algorithm>
using namespace std;
int a[10005];
int main() {
int n,i=0,len=0;
int num1=0,num2=0;
scanf("%d",&n);
while(scanf("%d",&a[i])!=EOF) { //一直输入到文本结束,ctrl+Z;
i++;
len++;
}
sort(a,a+len);
for(int j=0; j<len-1; j++) {
if(a[j]!=a[j+1]-1) { //找断号
num1=a[j]+1;
}
if(a[j]==a[j+1]) { //找重号
num2=a[j];
}
}
printf("%d %d",num1,num2);
return 0;
}
代码2(正确),只需改一下判断条件即可:
#include<iostream>
#include<algorithm>
using namespace std;
int a[10005];
int main() {
int n,i=0,len=0;
int num1=0,num2=0;
scanf("%d",&n);
while(scanf("%d",&a[i])!=EOF) { //一直输入到文本结束,ctrl+Z;
i++;
len++;
}
sort(a,a+len);
for(int j=0; j<len-1; j++) {
if(a[j]==a[j+1]-2) { //找断号
num1=a[j]+1;
}
if(a[j]==a[j+1]) { //找重号
num2=a[j];
}
}
printf("%d %d",num1,num2);
return 0;
}
Flawless!
发布了13 篇原创文章 · 获赞 0 · 访问量 1004
私信
关注
标签:试题,int,scanf,len,蓝桥,++,条件,历届,include 来源: https://blog.csdn.net/qq_42595835/article/details/104089396