找出签到数据中重复签到的同学
输入格式:
[1, 2, 2, 3, 4, 5, 4],数字表示收集的签到的学生的学号
输出格式:
2 4
输出重复签到的学生学号,从小到大输出,数字后面有一个空格符
输入样例:
在这里给出一组输入。例如:
[1, 2, 2, 3, 4, 5, 4]
输出样例:
在这里给出相应的输出。例如:
2 4
#include <stdio.h>
#define MAX_SIZE 100
int main() {
char c;
int m[MAX_SIZE] = {0};
int index = 0;
scanf("%c", &c);
while (c != ']') {
int man;
scanf("%d", &man);
m[man]++;
scanf(" %c", &c);
}
for (int i = 0; i < MAX_SIZE; i++) {
if (m[i] != 0 && m[i] != 1) {
printf("%d ", i);
}
}
return 0;
}
-
数组大小和越界: 你使用了一个大小为
MAX_SIZE
的数组m
,这是一个良好的实践,可以在程序中定义数组的最大大小。然而,需要注意的是在实际使用时,要确保输入的数据不超过数组的大小,以防止越界访问。 -
循环输入: 使用
while (c != ']')
的循环结构来读取输入的整数,这是一个有效的方式。不过,需要确保输入的整数不超过数组m
的范围。 -
输入格式: 通过
scanf("%c", &c)
读取字符,以及scanf("%d", &man)
读取整数,这是一种简单而有效的输入处理方式。 -
输出格式: 使用
printf("%d ", i)
输出重复出现的元素,这也是合适的。注意末尾有一个空格,如果不需要,可以根据需要进行调整。 -
代码健壮性: 虽然这是一个简单的程序,但在实际应用中,可能需要更多的输入验证和错误处理。例如,可能要考虑用户输入非整数的情况。
-
函数的使用: 对于更大规模的程序,考虑将一些功能划分成函数,以提高代码的可读性和可维护性。
总体而言,你的代码实现了基本的功能,适用于小规模的输入。在实际应用中,可能需要根据具体需求进行更多的优化和错误处理。