#include <stdio.h> #include <string.h> #define MAX_N 1000 #define MAX_M 1000 int main() { int n, m; int cnt[MAX_M + 1]; // cnt[i] 表示喜欢第 i 门课的同学数 memset(cnt, 0, sizeof(cnt)); // 初始化为 0 scanf("%d %d", &n, &m); for (int i = 0; i < n; i++) { int a; scanf("%d", &a); for (int j = 0; j < a; j++) { int k; scanf("%d", &k); cnt[k]++; // 统计喜欢第 k 门课的同学数 } } int ans = 0; for (int i = 1; i <= m; i++) { if (cnt[i] == n) { // 如果所有同学都喜欢第 i 门课 ans++; // 答案加一 } } printf("%d\n", ans); return 0; }用C语言怎么编写
时间: 2024-01-09 07:04:44 浏览: 100
C代码教程1显示#include <stdio.
这段代码的功能已经在之前的问题中进行了描述,是求出有多少门课是被所有调查到的同学都喜欢的。以下是代码的解释:
```c
#include <stdio.h>
#include <string.h>
#define MAX_N 1000
#define MAX_M 1000
int main() {
int n, m;
int cnt[MAX_M + 1]; // cnt[i] 表示喜欢第 i 门课的同学数
memset(cnt, 0, sizeof(cnt)); // 初始化为 0
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++) {
int a;
scanf("%d", &a);
for (int j = 0; j < a; j++) {
int k;
scanf("%d", &k);
cnt[k]++; // 统计喜欢第 k 门课的同学数
}
}
int ans = 0;
for (int i = 1; i <= m; i++) {
if (cnt[i] == n) { // 如果所有同学都喜欢第 i 门课
ans++; // 答案加一
}
}
printf("%d\n", ans);
return 0;
}
```
代码中定义了一个数组 `cnt`,其中 `cnt[i]` 表示喜欢第 `i` 门课的同学数。通过 `memset()` 函数将数组 `cnt` 初始化为 0。然后通过输入的方式读入学生对每门课的喜爱情况,统计每门课的喜爱人数。最后遍历所有的课程,找到所有同学都喜欢的课程,计算其数量并输出。
需要注意的是,这里的数组下标从 `1` 开始,因为题目中课程编号从 `1` 开始。
阅读全文