基于数组和函数的成绩计算

img

img


可以帮忙看一下嘛
我这个只能运行到学生人数,就结束了,怎么改啊

scanf里面错误了!修改如下
scanf("%d",&num[i]);
后面还有三个scanf的score1的数组前也要加&符号!

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7648712
  • 这篇博客也不错, 你可以看下输入某班学生某门课的成绩(最多不超过40人),当输入为负值时,表示输入结束,用函数编程统计成绩高于平均分的学生人数。
  • 除此之外, 这篇博客: 嵌入式软件学习问题汇总(一)什么是嵌入式?中的 编程语言的差别 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •   编程语言方面的差异:单片机主要使用C语言(少有汇编),与标准C略有不同,在结构体、指针、共用体及它们与数组的结合等C语言高级特性方面使用较少,而嵌入式则不同,嵌入式软件开发主要有分为底层、应用层。底层多使用C及汇编(并且高级特性运用较多)。应用层则多使用C++、JAVA等高级语言,嵌入式针对基于C语言的数据结构、算法运用能力要求较高。

  • 您还可以看一下 刘建萍老师的人工智能系列课程零基础讲解知识点和实例应用线性回归梯度下降逻辑回归课程中的 讲解机器学中会涉及到的有关数学方面的知识储备有哪些小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题解答:

    对于该题目,可以将其分为两个部分来设计:

    1. 输入学生人数和各个学生的成绩;

    2. 判读该关系是否具有自反性或者反自反性。

    首先,我们来完成第一步,如代码所示:

    #include <stdio.h>
    #define N 100
    
    // 声明函数
    float average(int a[], int n);
    float var(int a[], int n);
    
    int main() {
        int n, i, a[N];
        float ave, variance;
        printf("请输入学生人数:");
        scanf("%d", &n);
        printf("请依次输入各个学生的成绩:\n");
        for(i = 0; i < n; i++) {
            scanf("%d", &a[i]);
        }
        ave = average(a, n);
        variance = var(a, n);
        printf("平均数是:%f\n方差是:%f\n", ave, variance);
        return 0;
    }
    
    // 求平均数的函数
    float average(int a[], int n) {
        int i;
        float sum = 0;
        for(i = 0; i < n; i++) {
            sum += a[i];
        }
        return sum/n;
    }
    
    // 求方差的函数
    float var(int a[], int n) {
        float ave = average(a, n), sum = 0;
        int i;
        for(i = 0; i < n; i++) {
            sum += (a[i] - ave) * (a[i] - ave);
        }
        return sum / (n - 1);
    }
    

    接下来,我们来完成第二个部分,如代码所示:

    #include <stdio.h>
    #define N 100
    
    // 声明函数
    float average(int a[], int n);
    float var(int a[], int n);
    
    int main() {
        int n, i, a[N];
        float ave, variance;
        printf("请输入学生人数:");
        scanf("%d", &n);
        printf("请依次输入各个学生的成绩:\n");
        for(i = 0; i < n; i++) {
            scanf("%d", &a[i]);
        }
        ave = average(a, n);
        variance = var(a, n);
        printf("平均数是:%f\n方差是:%f\n", ave, variance);
        // 根据主对角线中1的个数判进行断
        int sum = 0;
        for(i = 0; i < n; i++) {
            if(a[i] == i) {
                sum++;
            }
        }
        if(sum == n) {
            printf("该关系具有自反性!\n");
        } else if(sum == 0) {
            printf("该关系具有反自反性!\n");
        } else {
            printf("该关系不具有自反性或反自反性!\n");
        }
        return 0;
    }
    
    // 求平均数的函数
    float average(int a[], int n) {
        int i;
        float sum = 0;
        for(i = 0; i < n; i++) {
            sum += a[i];
        }
        return sum/n;
    }
    
    // 求方差的函数
    float var(int a[], int n) {
        float ave = average(a, n), sum = 0;
        int i;
        for(i = 0; i < n; i++) {
            sum += (a[i] - ave) * (a[i] - ave);
        }
        return sum / (n - 1);
    }
    

    这样就可以实现输入学生人数和各个学生的成绩,然后判断该关系是否具有自反性或者反自反性了。