[题目描述]
课堂参与度是指学生课堂上参与学习活动的多少,是考察学生课堂学习投入的重要指标,学生可以通过各种方式参与课堂的学习活动,例如回答问题、练习题的投稿、向老师提问、同学间的讨论等等,有些学生积极参与课堂活动,但也有些学生很少参与或者不参与,老师想知道在一次课中谁参与的课堂活动最多。
假设一个课堂中学生数不超过100人,并对每个学生从1开始顺序编号。现在输入参与各种活动的学生编号,输出参与课堂活动最多的学生编号。
[输入]
一批整数,表示参与活动的学生编号,各个整数之间用空格分隔,最后一个整数为0,表示输入结束。
[输出]
一个整数,为参与活动最多的学生编号,如果有多个学生编号,按从小到大的编号输出,两个编号之间用一个空格分隔
[样例输入]
5 13 21 7 65 7 21 38 82 21 33 21 0
[样例输出]
21

c语言关于数组循环的问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- Huoon 2020-04-20 22:50关注
#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"); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报