显示最高/最低和输入分数的平均值- C编程



我正在为我的介绍类写一个c程序,我被困在if/else语句上。我们必须输出最高、最低的成绩,以及这些成绩的平均成绩。输入的标记必须在0-100之间。这是我的代码到目前为止,我似乎不能弄清楚,感谢任何建议!:

#include <stdio.h>
int main (void)
{
  int numberofMarks;
  int i;
  int x;
  int y;
  int numofPasses=1;
  int numofFails=1;
  float sumpassedMarks =0;
  float sumfailedMarks=0;
  float markEntered=0;
  float highestMark=0;
  float lowestMark=0;
  float totalMark=0;
  float avgofMarks=0;
  float avgpassedMarks=0;
  float avgfailedMarks=0;

        printf ("       ---=== IPC mark Analyser ===---n");
        printf ("Please enter the number of marks(between 3 and 40): ");
         scanf ("%d", &numberofMarks);

//asks user for number of marks, only takes 3-40, otherwise outputs error msg
        for (i=1 ; (numberofMarks < 3)||(numberofMarks > 40) ; i++) {
          printf ("Invalid number, enter a number between 3 and 40 inclusive: ");
          scanf ("%d", &numberofMarks);
        }
//for loop recieves the mark
        for (x=1 ;(x <= numberofMarks) ; x++) {
          printf ("%d> ", x);
          scanf ("%f", &markEntered);

//contd loop..loop makes sure mark entered is between 1-100
        for (y=1; (markEntered <0)||(markEntered>100); y++)
        {
            printf ("Error, Enter values between 0 and 100 incluisve.n");
            printf ("%d> ", x);
             scanf ("%f", &markEntered);

            if (markEntered >= 50) {
              numofPasses=numofPasses+1;
           }
            if else (markEntered <= 49) {
              numofFails = numofFails+1;
           }
            if else (markEntered > highestMark) {
              highestMark = markEntered;
           }
            else (markEntered < lowestMark) {
              lowestMark = markEntered;
           }
        }
//adds the mark entered to all the marks entered for a overall sum
        totalMark = totalMark + markEntered;
        }
        avgofMarks = (float)totalMark / numberofMarks;
        avgpassedMarks = (float)sumpassedMarks / numberofMarks;
        avgfailedMarks = (float)sumfailedMarks / numberofMarks;

        printf ("Total of %d students passed with an average of %.1f.n", numofPasses,avgpassedMarks);
        printf ("Total of %d students failed with an average of %.1f.n", numofFails, avgfailedMarks);
        printf ("Highest mark in the group: %.1fn", highestMark);
        printf ("lowest mark in the group: %.1fn", lowestMark);
        printf ("The average of all marks in this group is %.1f.n", avgofMarks);
        printf ("Program Ended.n");
return 0;
}

工作要求,

在输入标记的循环中,在每个条目之后检查输入的标记的值:

  • 如果是通过,则在通过数上加1,并将该分数的值与通过分数之和相加。
  • 如果为不合格,则在不合格数上加1,并将评分值与不合格评分之和相加。
  • 如果该值高于最高分,则将最高分设置为读取的值。
  • 如果低于最低值,则将最低值设置为读取的值。所有的分数输入和检查后,分这些总和由相应的分数得到平均分和打印结果。

这是我的输出和样本输出的对比

你的代码一团糟;让我们把事情弄清楚:

  • 如果你不打算在for循环体中使用i,没有理由初始化和自增它。最好用一会儿。
  • 当你发布一个问题时,从答案中清除所有非严格必要的代码,这样更容易帮助
  • 考虑使用数组代替15个变量,或者,如果你不打算在后面的程序中使用这些值,直接打印结果。

交货。

int a = 10, b = 15;如果你想打印总和,没有理由将其保存在新的int sum中,只需打印tf("%d", a + b);

  • 不要在循环之外请求投票数,然后循环验证该值(您的第一个for循环)。可以考虑使用DO..WHILE循环。

do{
 scanf("%d", &n);
} while(n <= 0);
//Scan integer and save into n, until you get a positive value
  • 避免无缘无故嵌套for循环,使用更多的if() .. else if() ..如果有必要。

  • 这不是最好的做法,但您也可以使用continuebreak关键字分别继续或停止循环。

  • 不要随意使用"else"。如果您有更多的条件要检查,留下If而不带else。如果(当第一个条件返回true时)你不希望检查下一个条件(它们将被跳过!)

最新更新