some friends,some go. 2020-04-20 10:45 采纳率: 100%
浏览 347
已采纳

c语言关于数组循环的问题

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

  • 写回答

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");
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 求文心中文心理分析系统(TextMind)
  • ¥15 chipyard环境搭建问题
  • ¥15 python,pyopenGL的OBV渲染无法设置透明
  • ¥20 matlab可以把多个二维图合成为三维瀑布图吗
  • ¥15 EEPROM,软件i2c
  • ¥500 求解读该段JS代码,需要知道是用干什么的
  • ¥20 qt4代码实现二进制文件读取显示,以及显示的内容进行搜索
  • ¥15 Labview获取LK-G3001数据
  • ¥15 我知道什么是混合树,但是怎么写代码啊
  • ¥50 开发板linux系统安装dpkg,apt函数库 有偿