哪错了啊?帮我看一看

利用指向一维数组的指针,将一个含有m(m<=10)个整数的一维数组中小于平均值的所有元素顺次删除掉。例如,原数组为3,5,7,4,1,删除后的数组应为5,7,4。提示:先输入数组元素个数,再依次输入数组元素的值。

输入格式:
输入数组元素个数的格式:"%d"
输入数组元素的格式:"%d"

输出格式:
"%5d"
这是代码:
#include <stdio.h>int aver(int *a, int len);int shan(int *a, int m, int g, int *t);int main() { int i = 0; scanf("%d", &i); int b, c, n; b = i - 1 ; int t[10] = {0}; int a[b] = {0}; for (c = 0; c < i; c++) { scanf("%d", &a[c]); } n = aver(a, i); int e = 0; e = shan(a, n, i, t); for (c = 0; c <= e; c++) { if (t[c] != 0) printf("%5d", t[c]); } return 0;}int aver(int *a, int len) { int s; int sum; for (s = 0; s < len; s++) { sum = sum + a[s]; } return sum / len;}int shan(int *a, int m, int g, int *t) { int s; int v; for (s = 0; s < g; s++) { if (a[s] >= m) { t[v] = a[s]; v++; } } return v - 1;}

代码给你你看下


```c
#include <stdio.h>

int aver(int *a, int len);
int shan(int *a, int m, int g, int *t);

int main() {
    int i = 0; 
    scanf("%d", &i);
    
    int b, c, n; 
    b = i - 1 ; 
    int t[10] = {0}; 
    int a[b] = {0}; 
    
    for (c = 0; c < i; c++) {
        scanf("%d", &a[c]); 
    }
    
    n = aver(a, i); 
    
    int e = 0;
    e = shan(a, n, i, t); 
    
    for (c = 0; c <= e; c++) {
        if (t[c] != 0) 
            printf("%5d", t[c]); 
    }
    
    return 0;
}

int aver(int *a, int len) {
    int s; 
    int sum = 0;
    
    for (s = 0; s < len; s++) {
        sum += a[s]; 
    }
    
    return sum / len;
}

int shan(int *a, int m, int g, int *t) {
    int s, v = 0;
    
    for (s = 0; s < g; s++) {
        if (a[s] >= m) {   //比较是否大于等于平均值
            t[v] = a[s];   //大于等于平均值的元素存入t数组
            v++;          //t数组下标加1
        }
    }
    
    return v - 1;          //返回t数组的元素个数
}


```

程序有问题哦,修改如下所示:


```c
#include <stdio.h>
int aver(int *a, int len);
int shan(int *a, int m, int g, int *t);
int main() {
    int m= 0; 
    scanf("%d", &m);
    int i, j; 
  
    int t[10] = {0}; 
    int a[10] = {0}; 
    for (i= 0; i< m; i++) {
        scanf("%d", &a[i]); 
    }
    n = aver(a, m);
    int e = 0;
    e = shan(a, n, m,t); 
    for (j = 0; j < e; j++) {
 
            printf("%5d", t[j]); 
    }
    return 0;
}
int aver(int *a, int len) {
    int s; 
    int sum = 0;
    for (s = 0; s < len; s++) {
        sum += a[s]; 
    }
    return sum / len;
}
int shan(int *a, int m, int g, int *t) {
    int s, v = 0;
    for (s = 0; s < g; s++) {
        if (a[s] >= m) {   //比较是否大于等于平均值
            t[v] = a[s];   //大于等于平均值的元素存入t数组
            v++;          //t数组下标加1
        }
    }
    return v;          //返回t数组的元素个数
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7802497
  • 除此之外, 这篇博客: C语言格式输入与输出深度剖析中的 %d格式符:输出十进制整数,有3种用法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    %d格式:按数据实际长度输出,数据范围 -32768~32767。2个字节

    // %d 格式的 printf() 函数使用案例
    #include <stdio.h> 
    
    int main()
    {
        int a = 3, b = 4;
        printf("%d  %d\n ", a, b);
        printf("a = %d, b = %d\n", a, b);
        return 0;
    }
    

    运行结果:

    3  4
    a=3, b=4
    

    格式说明通常用小写字母表示

  • 以下回答来自chatgpt:

    作为一名Chatbot AI助手,我没有特定的代码需要优化。请您提供具体的问题描述和样例,我会尽力为您提供帮助。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^