帮我检查一下代码中的错误:#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<iostream> #include<string> #include<algorithm> using namespace std; long long N[1000005]; long long Q[1000005]; int cmp(const void* a, const void* b) { return *(long long*)a - *(long long*)b; } int main() { int n, q, Ai, xi; long long response = 0; scanf("%d%d", &n, &q); for (int i = 0; i < n; i++) { scanf("%ld", &Ai); N[i] = Ai; } for (int i = 0; i < q; i++) { scanf("%ld", &xi); Q[i] = xi; } qsort(N, n, sizeof(long long), cmp); for (int i = 0; i < q; i++) { int count = 1; response = N[n-count]; if (response >= Q[i]) printf("%d\n", count); else { while (response < Q[i]) { count++; response += N[n - count]; } printf("%d\n", count); } } }
时间: 2024-01-14 08:05:13 浏览: 82
如何使用_CRT_SECURE_NO_WARNINGS
5星 · 资源好评率100%
在代码中存在以下错误:
1. `#include<iostream>` 库不应该被包含,因为代码中并没有使用到 `iostream` 库的任何函数。
2. `scanf("%ld", &Ai)` 和 `scanf("%ld", &xi)` 的格式控制符应该改为 `%lld`,因为 `Ai` 和 `xi` 是 `long long` 类型的。
3. 在 `qsort` 函数中,`sizeof(long long)` 应该改为 `sizeof(long long int)`,因为 `long long` 和 `long long int` 是等价的,但是 `sizeof` 操作符需要一个完整的类型名称。
4. 在 `printf("%d\n", count)` 中,输出的应该是 `long long` 类型的 `count`,格式控制符应该改为 `%lld`。
修改后的代码如下:
```c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
long long N[1000005];
long long Q[1000005];
int cmp(const void* a, const void* b) {
return *(long long int*)a - *(long long int*)b;
}
int main() {
int n, q, Ai, xi;
long long response = 0;
scanf("%d%d", &n, &q);
for (int i = 0; i < n; i++) {
scanf("%lld", &Ai);
N[i] = Ai;
}
for (int i = 0; i < q; i++) {
scanf("%lld", &xi);
Q[i] = xi;
}
qsort(N, n, sizeof(long long int), cmp);
for (int i = 0; i < q; i++) {
int count = 1;
response = N[n - count];
if (response >= Q[i])
printf("%lld\n", count);
else {
while (response < Q[i]) {
count++;
response += N[n - count];
}
printf("%lld\n", count);
}
}
return 0;
}
```
阅读全文