csdshelton 2017-09-30 06:33 采纳率: 0%
浏览 2391

CCF CSP测试 16-12-01 源代码如下 为什么会编译错误?dev正常跑?求大神看看

问题描述
  在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。
  给定一个整数序列,请找出这个整数序列的中间数的值。
输入格式
  输入的第一行包含了一个整数n,表示整数序列中数的个数。
  第二行包含n个正整数,依次表示a1, a2, …, an。
输出格式
  如果约定序列的中间数存在,则输出中间数的值,否则输出-1表示不存在中间数。
样例输入
6
2 6 5 6 3 5
样例输出
5
#include stdio.h>
#include stdlib.h>
#include string.h>
int main()
//因为某种原因 编译出错
{
int d;
int i;
int j;
int cargo;
int cargo2;
int cargo3;
int count;
int count2;
float k;
count=0;
count2=0;
scanf("%d",&d);
int a[d]={};
for(i=0;i { scanf("%d",&a[i]);
}
for(i=0;i for(j=i+1;j {if (a[i]>a[j])
{
cargo=a[j];
a[j]=a[i];
a[i]=cargo;
}
}
if(d%2==0)//如果是偶数
{

cargo=int(d/2);
cargo2=a[cargo];
cargo=cargo-1;
cargo3=a[cargo];
if(cargo2!=cargo3)//如果路中间两个数不相等,就没有中间数
printf("-1");
else//否则就测试大于和小于的数
{ for(i=0;i {if(a[i] if(a[i]>cargo2) count2=count2+1;
}
if(count==count2)
printf("%d ",cargo2);
}
}
if(d%2!=0)//printf("输入的是奇数") ;
{ cargo=int((d-1)/2);//找到中间的数
cargo2=a[cargo];

   for(i=0;i<d;i++)
   {if(a[i]<cargo2) count=count+1;
    if(a[i]>cargo2) count2=count2+1;
   }
   if(count==count2)
   printf("%d ",cargo2);
   else
   printf("-1"); 
 }

 return 0;

}

  • 写回答

3条回答 默认 最新

  • csdshelton 2017-10-04 14:40
    关注

    我在DEV C++上是正常跑的 不会报错,但是一上网,就提示编译错误。

    评论

报告相同问题?

悬赏问题

  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式