C 显示得分和获得每个得分的次数

C 显示得分和获得每个得分的次数,c,arrays,count,C,Arrays,Count,我的名字是阿德里尔,我是新的网站和编程。无论如何,我的作业需要一些帮助和指导。我要用C语言创建一个程序,允许用户输入多达5000个考试分数。然后给用户5个选项,以获得平均分数,从高到低显示所有考试,将考试向上弯曲5次或向下弯曲5次和我不能做的是显示分数和获得分数的次数 这是我的代码: main() { //Declared variables char choice; int i, j, a, n; int examScore = 0, HIGH = 0, LO

我的名字是阿德里尔,我是新的网站和编程。无论如何,我的作业需要一些帮助和指导。我要用C语言创建一个程序,允许用户输入多达5000个考试分数。然后给用户5个选项,以获得平均分数,从高到低显示所有考试,将考试向上弯曲5次或向下弯曲5次我不能做的是显示分数和获得分数的次数

这是我的代码:

main() {

    //Declared variables
    char choice;
    int i, j, a, n;
    int examScore = 0, HIGH = 0, LOW = 0, AVG = 0, count = 0, sum = 0, scoreCount = 0;
    int highlow[5000], highExam, lowExam;

    do{//Begin do while #1
        CLS;
        FLUSH;
        printf("=========================\n");
        printf("===== Score program =====\n");
        printf("=========================\n");
        printf("A. Exam scores\n");
        printf("B. Exams average\n");
        printf("C. Exam score High - Low\n");
        printf("D. Times scores obtained\n");
        printf("E. Curved up 5 pts\n");
        printf("F. Curved down 5 pts\n");
        printf("Q. Exit program\n");
        printf("=========================\n");
        printf("Enter your choice: ");
        scanf(" %c", &choice);
        choice = toupper(choice);
        switch (choice){//Begin switch
        case 'A':
            CLS;
            printf("Please Enter The Number of exams:\n");
            scanf("%d", &n);

            printf("Please Enter %d Numbers\n", n);
            for (i = 0; i < n; i++){
                scanf("%d", &highlow[i]);
            }//end for loop
            highlow[examScore];
            count++;
            sum = sum + examScore;
            AVG = sum / count;
            highExam = examScore + 5;
            lowExam = examScore - 5;
            CLS;
            for (i = 0; i < n; i++)
            {
                for (j = i + 1; j<n; ++j)
                {
                    if (highlow[i]<highlow[j])
                    {
                        a = highlow[i];
                        highlow[i] = highlow[j];
                        highlow[j] = a;
                    }
                }
            }


            PAUSE;
            break;

        case 'B':
            CLS;
            printf("Exam average is: %i\n", AVG);
            PAUSE;
            break;

        case 'C':
            CLS;
            printf("The numbers arranged in descending order are given below\n");

            for (i = 0; i < n; ++i)

            {

                printf("%i\n", highlow[i]);
            }
            PAUSE;
            break;

        case 'D':
            CLS;
            printf("Amount of times scored was obtained: %i-%i\n", examScore, count);
            PAUSE;
            break;

        case 'E':
            CLS;
        //  printf("Exam scores curved up by 5 pts: %i\n", highExam);
            PAUSE;
            break;

        case 'F':
            CLS;
        //  printf("Exam scores curved down by 5 pts: %i\n", lowExam);
            PAUSE;
            break;

        case 'Q':
            CLS;
            printf("Quitting program. Goodbye.\n");
            PAUSE;
            break;

        default:
            printf("- Invalid entry -\n");
            PAUSE;
            break;

        }//End switch

    } while (choice != 'Q');//End do while #1


}//End main
main(){
//声明变量
字符选择;
int i,j,a,n;
int examScore=0,HIGH=0,LOW=0,AVG=0,count=0,sum=0,scoreCount=0;
int highlow[5000],highExam,lowExam;
当#1时开始做{//
CLS;
脸红
printf(“===========================================\n”);
printf(“===Score program====n”);
printf(“===========================================\n”);
printf(“A.考试成绩”);
printf(“B.考试平均值”);
printf(“C.考试分数高-低\n”);
printf(“获得的D.次分数\n”);
printf(“E.向上弯曲5分\n”);
printf(“F.向下弯曲5分\n”);
printf(“Q.退出程序”);
printf(“===========================================\n”);
printf(“输入您的选择:”);
scanf(“%c”,选择(&c));
选择=toupper(选择);
开关(选项){//开始开关
案例“A”:
CLS;
printf(“请输入考试次数:\n”);
scanf(“%d”和“&n”);
printf(“请输入%d个数字\n”,n);
对于(i=0;i对于(j=i+1;j为什么计算每个分数在
highlow
数组中的次数如此困难


我一直在考虑一种不同的方法,直到我注意到你有一个排序的分数数组,因此任何重复的分数都将彼此相邻。应该很容易查看
highlow[0]
的值,然后将其与
highlow[1]
进行比较,看看
highlow[0]
是重复的。你只要这样做,直到你发现下一个不是重复的,然后你就开始寻找下一个数字的重复项。

你具体有什么问题吗?C给了我们创建函数的自由。那么你为什么要把代码放在开关盒中。使用函数会让你的程序易于理解和重新运行塞布尔。曲线上升5,你的意思是如果你的考试成绩是:4,9,2,6,3…那么结果是9,14,7,11,8……?@aalganaraz我也有同样的问题。我仍然在想如何使用这个网站。但是是的,每个分数需要上升5,另一个选项下降5,这是不同的情况。我理解你所说的背后的逻辑您正在说,但不确定如何将其付诸实践。我需要一个新的循环,还是只包含在对数字进行排序的循环中?您有两个对数字进行排序的循环。我想您可以尝试在排序中进行排序(通过包含
=
案例),但我怀疑很难避免多次计算值。这是一个在“使其最佳化”之前先“使其工作”的情况,特别是因为你的排序是冒泡排序,这已经远远不是最优的了。它可以工作,所以在你完成之前先把它放在一边,然后备份你的代码,如果你想尝试更好的算法。我很抱歉问这个问题,但你能给我一个如何工作的例子吗,因为我真的不明白。