[题目描述]
课堂参与度是指学生课堂上参与学习活动的多少,是考察学生课堂学习投入的重要指标,学生可以通过各种方式参与课堂的学习活动,例如回答问题、练习题的投稿、向老师提问、同学间的讨论等等,有些学生积极参与课堂活动,但也有些学生很少参与或者不参与,老师想知道在一次课中谁参与的课堂活动最多。
假设一个课堂中学生数不超过100人,并对每个学生从1开始顺序编号。现在输入参与各种活动的学生编号,输出参与课堂活动最多的学生编号。
[输入]
一批整数,表示参与活动的学生编号,各个整数之间用空格分隔,最后一个整数为0,表示输入结束。
[输出]
一个整数,为参与活动最多的学生编号,如果有多个学生编号,按从小到大的编号输出,两个编号之间用一个空格分隔
[样例输入]
5 13 21 7 65 7 21 38 82 21 33 21 0
[样例输出]
21
#include <stdio.h>
#include <string.h>
void main()
{
while (1)
{
char input[1024] = { 0 };
printf("请输入:\n");
if (NULL == fgets(input, 1023, stdin))
{
printf("input error.\n");
continue;
}
int inputSize = strlen(input);
int allStudentNo[101] = { 0 };
char lastChar = 0;
int num = 0;
int maxNum = 0;
int maxStudendNo = 0;
for (int i = 0; i < inputSize; ++i)
{
char c = input[i];
if (c >= '0' && c <= '9')
{
if (lastChar == ' ' && c == '0')
{
break;
}
else
{
num = num * 10 + c - '0';
}
}
else if (c == ' ')
{
if (num > maxStudendNo)
{
maxStudendNo = num;
}
allStudentNo[num] += 1;
if (allStudentNo[num] > maxNum)
{
maxNum = allStudentNo[num];
}
num = 0;
}
else
{
printf("error char. %c\n", c);
break;
}
lastChar = c;
}
printf("输出:\n");
int outputIndex = 0;
for (int i = 1; i <= maxStudendNo; ++i)
{
if (allStudentNo[i] == maxNum)
{
int n = i / 10;
if (n > 0)
{
char c = n + '0';
printf("%c", c);
}
int m = i % 10;
char c = m + 48;
printf("%c", c);
printf(" ");
}
}
printf("0\n");
}
}