C 显示得分和获得每个得分的次数
我的名字是阿德里尔,我是新的网站和编程。无论如何,我的作业需要一些帮助和指导。我要用C语言创建一个程序,允许用户输入多达5000个考试分数。然后给用户5个选项,以获得平均分数,从高到低显示所有考试,将考试向上弯曲5次或向下弯曲5次和我不能做的是显示分数和获得分数的次数 这是我的代码: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
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,这是不同的情况。我理解你所说的背后的逻辑您正在说,但不确定如何将其付诸实践。我需要一个新的循环,还是只包含在对数字进行排序的循环中?您有两个对数字进行排序的循环。我想您可以尝试在排序中进行排序(通过包含=
案例),但我怀疑很难避免多次计算值。这是一个在“使其最佳化”之前先“使其工作”的情况,特别是因为你的排序是冒泡排序,这已经远远不是最优的了。它可以工作,所以在你完成之前先把它放在一边,然后备份你的代码,如果你想尝试更好的算法。我很抱歉问这个问题,但你能给我一个如何工作的例子吗,因为我真的不明白。