关于##include#的问题,如何解决?(语言-c语言)

新手上路求解答
不知道这么错了



#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;
}

编译报错

img

学生求解

这个错误是因为在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;
}

谢谢我憨憨了