好的,所以我在我的c程序的下一步遇到了麻烦。基本上,它是一个接受用户输入的数据库,然后使用switch语句来检索或计算个人或组统计信息。注意: 将EUID(卷号)存储在EUID阵列的位置i中的学生将其作业平均分,考试1分和考试2分存储在相应阵列的位置i中。
到目前为止,代码能够运行,但是当涉及到switch语句时,我感到难过。
我真的只需要关于switch语句的第一个案例的建议,但其余的只是以防万一。
简而言之,对于案例1,我如何让程序打印出学生的成绩并使用特定的EUID进行平均分。输出应该如下所示:
1
请输入学生EUID: 1893839
EUID:1893839作业:84.34考试1:84考试2:76
这是我到目前为止所拥有的:
#include <stdio.h>
#include <math.h>
struct Grade
{
int euid;
double hwavg;
double exam1;
double exam2;
};
int main()
{
struct Grade record[200];
int input, i;
printf("Input each student's EUID, homework average, exam 1 grade, and exam 2 grade: \n\n");
printf("To terminate input '-1' as the student EUID, along with throwaway values for the average and grades.");
for(i=0; i<200; ++i)
{
scanf("%d %lf %lf %lf", &record[i].euid, &record[i].hwavg, &record[i].exam1, &record[i].exam2);
if(record[i].euid == -1)
{
break;
}
}
while(1)
{
printf("Select one of the following:\n 1. Student grade data \n 2. Student grade average \n 3. Class average for assignment \n 4. Exit\n");
scanf("%d\n",&input);
switch(input)
{
case 1:
printf("Enter the student's EUID:\n");
/*The output here should be the EUID, homework avgerage, exam 1 grade and exam 2 grade. */
break;
case 2:
printf("Enter the student's EUID:\n");
/*Finds and prints the the students average and letter grade. */
/* (HW * 0.5) + (EXAM1 * 0.25) + (EXAM2 * 0.25) */
break;
case 3:
/* Finds total class average. */
break:
case 4:
printf("Terminating program: Bye-bye!\n");
return 0;
break;
default:
printf("Error! Invalid input.\n\n");
}
}
}
答案 0 :(得分:0)
基本上,看起来你正在寻找的东西就是这样......
printf("EUID:%d Homework: %.2f Exam 1:%.0f Exam2: %.0f\n", record[i].euid, record[i].hwavg, record[i].exam1, record[1].exam2);
注意:%。0f输出0位小数。
为了计算平均值,可以在你的第一个for循环中完成,它会读取并填充数组。
你可能想在网上搜索“printf double”; here's an example reference。 - 我几乎从未看到提到的是你可以使用%2 $ f选择参数数字(其中2表示参数编号2)。
要查找EUID的索引,您可以使用以下内容:
i = 0;
while(record[i].euid != -1 && record[i].euid != euid)
{
i++;
}
- 你当然需要scanf来获得euid。