【发布时间】:2016-10-09 13:45:31
【问题描述】:
我正在为我的介绍课编写一个 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: %.1f\n", highestMark);
printf ("lowest mark in the group: %.1f\n", lowestMark);
printf ("The average of all marks in this group is %.1f.\n", avgofMarks);
printf ("Program Ended.\n");
return 0;
}
The work 问,
在输入标记的循环中,每次输入后检查输入标记的值:
- 如果是及格,则将通过次数加一,并将分数加到通过分数的总和中。
- 如果是失败,则将失败次数加一,并将标记的值添加到失败标记的总和中。
- 如果该值高于最高标记,则将最高标记设置为读取的值。
- 如果值低于最低标记,则将最低标记设置为 读取的值。在所有的分数都输入和检查后,划分 相应分数的总和得到平均值和 打印结果。
【问题讨论】:
-
这不是家庭作业服务。试着问一个更具体的问题,你目前在哪里挣扎(以及到目前为止你已经尝试过什么)
-
为什么在你读完之前,通过和失败的次数是 1 而不是 0?这是一对令人担忧的初始化。
标签: c loops if-statement