新手上路求解答
不知道这么错了
#include
int max(int a[], int len);
int max(int a[], int len) {
int maxid = 0;
for (int i = 0; i < len; i++) {
if (a[i > a[maxid]]) {
maxid = i;
}
}
printf("每次%d\n", maxid);
return maxid;
}
int mian() {
int a[] = {2, 45, 6, 12, 87, 34, 90, 24, 23, 11, 65};
int len = sizeof(a) / sizeof(a[0]);
// sizeof(a)/sizeof(a[0]) 表示数组的长度
for (int i = len - 1; i > 0; i--) {
int maxid = max(a, i + 1);
// swap a[maxid],a[len-1]
int t = a[maxid];
a[maxid] = a[i];
a[i] = t;
}
for (int i = 0; i <= len; i++) {
printf("%d", a[i]);
}
return 0;
}
编译报错
学生求解
这个错误是因为在main函数中,函数名称拼写错误,应该是main而不是mian。
mian()改成main()
main函数拼写错误
应该是main而不是mian
#include <stdio.h>
int max(int a[], int len);
int max(int a[], int len) {
int maxid = 0;
for (int i = 0; i < len; i++) {
if (a[i > a[maxid]]) {
maxid = i;
}
}
printf("每次%d\n", maxid);
return maxid;
}
int main() {
int a[] = {2, 45, 6, 12, 87, 34, 90, 24, 23, 11, 65};
int len = sizeof(a) / sizeof(a[0]);
// sizeof(a)/sizeof(a[0]) 表示数组的长度
for (int i = len - 1; i > 0; i--) {
int maxid = max(a, i + 1);
// swap a[maxid],a[len-1]
int t = a[maxid];
a[maxid] = a[i];
a[i] = t;
}
for (int i = 0; i <= len; i++) {
printf("%d", a[i]);
}
return 0;
}
这段代码编译报错的原因是在main函数的名称中写错了, 应该是main而不是mian.
另外在这段代码中, 在打印数组a的循环中i<=len, 应该改成i<len, 因为数组下标是从0开始的, 所以数组中最后一个元素的下标为len-1.
还有一个问题是在max函数中, 判断语句 a[i > a[maxid]]应该改成 a[i] > a[maxid]
修改后的代码如下
#include <stdio.h>
int max(int a[], int len);
int max(int a[], int len) {
int maxid = 0;
for (int i = 0; i < len; i++) {
if (a[i] > a[maxid]) {
maxid = i;
}
}
printf("每次%d\n", maxid);
return maxid;
}
int main() {
int a[] = {2, 45, 6, 12, 87, 34, 90, 24, 23, 11, 65};
int len = sizeof(a) / sizeof(a[0]);
// sizeof(a)/sizeof(a[0]) 表示数组的长度
for (int i = len - 1; i > 0; i--) {
int maxid = max(a, i + 1);
// swap a[maxid],a[len-1]
int t = a[maxid];
a[maxid] = a[i];
a[i] = t;
}
for (int i = 0; i < len; i++) {
printf("%d ", a[i]);
}
return 0;
}
这样就可以编译运行了。
望采纳!!
我帮你把代码修改好了,如下,main 函数要有参数,另外,你的 main 写错了,你写成了 mian:
#include <stdio.h>
int max(int a[], int len);
int max(int a[], int len) {
int maxid = 0;
for (int i = 0; i < len; i++) {
if (a[i > a[maxid]]) {
maxid = i;
}
}
printf("每次%d\n", maxid);
return maxid;
}
int main(int argc, char *argv[]) {
int a[] = {2, 45, 6, 12, 87, 34, 90, 24, 23, 11, 65};
int len = sizeof(a) / sizeof(a[0]);
// sizeof(a)/sizeof(a[0]) 表示数组的长度
for (int i = len - 1; i > 0; i--) {
int maxid = max(a, i + 1);
// swap a[maxid],a[len-1]
int t = a[maxid];
a[maxid] = a[i];
a[i] = t;
}
for (int i = 0; i <= len; i++) {
printf("%d", a[i]);
}
return 0;
}
谢谢我憨憨了