scanf里面错误了!修改如下
scanf("%d",&num[i]);
后面还有三个scanf的score1的数组前也要加&符号!
编程语言方面的差异:单片机主要使用C语言(少有汇编),与标准C略有不同,在结构体、指针、共用体及它们与数组的结合等C语言高级特性方面使用较少,而嵌入式则不同,嵌入式软件开发主要有分为底层、应用层。底层多使用C及汇编(并且高级特性运用较多)。应用层则多使用C++、JAVA等高级语言,嵌入式针对基于C语言的数据结构、算法运用能力要求较高。
问题解答:
对于该题目,可以将其分为两个部分来设计:
输入学生人数和各个学生的成绩;
判读该关系是否具有自反性或者反自反性。
首先,我们来完成第一步,如代码所示:
#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);
}
这样就可以实现输入学生人数和各个学生的成绩,然后判断该关系是否具有自反性或者反自反性了。