第K极值C语言实现在VC上没有问题,但在OJ上测试出现问题

C语言 码拜 9年前 (2016-04-13) 888次浏览
这是问题:
给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m能否为质数。(0<k<=n)
这是本人的解答:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10000
typedef struct{
int key;
}Redtype;
typedef struct{
Redtype r[MAXSIZE];
int length;
}SqList;
void SelectSort(SqList &L){
int j, l;
Redtype temp;
for (int i = 0; i < L.length; i++){
l = i ;
for (j = i + 1; j < L.length; j++){
if (L.r[j].key < L.r[l].key)
l = j;
}
if (i != l){
temp = L.r[i];
L.r[i] = L.r[l];
L.r[l] = temp;
}
}
}
bool isPrimeNum(int x){
if (x < 2)
return false;
else if (x == 2)
return true;
else{
for (int i = 2; i < x; i++){
if (x%i == 0)
return false;
}
return true;
}
}
int main(){
SqList L;
int n,k,i,m;
scanf(“%d %d”, &n,&k);
if (n > MAXSIZE || k > n)
exit(0);
L.length = n;
for (i = 0; i < n; i++){
scanf(“%d”, &L.r[i].key);
if (L.r[i].key < 0)
break;
}
SelectSort(L);
m = L.r[n – k].key – L.r[k – 1].key;
if (isPrimeNum(m))
printf(“YES\n%d\n”, m);
else
printf(“NO\n%d\n”, m);
system(“pause”);
return 0;
}
求指导答!
解决方案

5

这里的序列,是数组吗?

10

出了什么问题?

10

Compiler Error。C语言好像没有bool类型。

40

你点开你的OJ上有显示错误:
error: expected “;”, “,” or “)” before “&” token void SelectSort(SqList &L){ ^
Main.c:29:1: error: unknown type name “bool” bool isPrimeNum(int x)
1.第一个错误是你使用了引用
2.第二个错误是你使用了bool
(bool和引用都是C++才有的)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明第K极值C语言实现在VC上没有问题,但在OJ上测试出现问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)