#c语言 找最长连续序列的问题
代码思路如下:先把输入的数排序,之后判断前后数是否连续,若连续,则数量(b)+1,新数组存数,若不连续,则数量清零,数组下标+1,最后将存数的数组排序,输出最后一个值。
但是输出有问题
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a[n];
for (int i=0;i<n;i++){
scanf("%d",&a[i]);
}
/*
将数组排个序 冒泡排序
*/
int m=0,v;
do{
for(int i=0;i<n-1;i++){
if(a[i]>a[i+1]){
v=a[i+1];
a[i+1]=a[i];
a[i]=v;
}
m++;
}
}while(m<=n);
// for (int i=0;i<n;i++){
// printf("%d ",a[i]);
// }
/*
创建数组c来存b的值
如果数组a满足 则b+1,
若不满足 b清零 数组下标+1
*/
int b=1,c[100],d=0,e;
for (int i=0;i<n;i++){
if(a[i]==a[i+1]-1){
b++;
c[d]=b;
}else{
d++;
b=1;
}
e=d;
}
/*
将数组c用冒泡法排序 找到最大值
*/
int t,l=0;
do{
for(int i=0;i<e-1;i++){
if(c[i]>c[i+1]){
t=c[i+1];
c[i+1]=c[i];
c[i]=t;
}
l++;
}
}while(l<=e);
printf("%d",c[e-1]);
return 0;
}