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

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题