我想通过搜索方法找到每个人的最终结果的最高和最低百分比,总和,项目,MID,最终和等级。
struct student{
char id[10];
char fname[25];
char lname[25];
char letter[10];
int quiz[3];
int assignment[3];
int project,MID,Final,grade,percentage,average,sum;
};
int main() {
struct student person[10];
int input,choose,max=0,min=0;
printf("Input Student : ");
scanf("%d",&input );
printf("\n");
int i,j,k,g;
for ( i = 0; i < input; i++) {
int count=0,count2=0;
printf("Input Id : ");
scanf("%s",person[i].id);
printf("Input Name : ");
scanf("%s",person[i].fname);
scanf("%s",person[i].lname);
printf("\n");
//input assignment
for ( j = 0; j < 3; j++) {
printf("Input Assignment%d : ",j );
scanf("%d",&person[i].assignment[j] );
count+=person[i].assignment[j];
person[i].average = count/3;
}
person[i].percentage = person[i].average*0.20;
person[i].MaxPer = person[i].percentage;
printf("\n");
//input quiz
for ( k = 0; k < 4; k++) {
printf("Input Quiz%d : ",k );
scanf("%d",&person[k].quiz[i] );
count2+=person[k].quiz[i];
person[i].average = count2/4;
}
person[i].sum = person[i].average*0.10;
person[i].MinPer = person[i].percentage;
printf("\n");
//input Project
printf("Input Project Value%d : ",i );
scanf("%d",&person[i].project );
person[i].project= person[i].project * 0.15;
printf("\n");
//input MID
printf("Input Project Value%d : ",i );
scanf("%d",&person[i].MID );
fflush(stdin);
person[i].MID= person[i].MID * 0.25;
printf("\n");
//input Final
printf("Input Project Value%d : ",i );
scanf("%d",&person[i].Final );
fflush(stdin);
person[i].Final= person[i].Final * 0.25;
//count Grade
person[i].grade = person[i].percentage + person[i].sum + person[i].project + person[i].MID + person[i].Final;
printf("\n");
}
printf("Highest Value \t\t\t%15d %25d %11d %10d %10d\n",person[i].MaxPer,person[i].sum,person[i].project,person[i].MID,person[i].Final);
printf("Lowest Value \t\t\t%15d %25d %11d %10d %10d\n",person[i].MinPer,person[i].sum,person[i].project,person[i].MID,person[i].Final);
return 0;
}
因此,如果我输入3个不同编号的人的所有作业,测验等,它将循环并找到三个人中的最高和最低者。最后是打印输出。
答案 0 :(得分:2)
我想通过搜索方法找到每个人的最终结果的最高和最低百分比,总和,项目,MID,最终和等级。
我不明白您的意思,因为每个人的许多数据都是唯一的,那么如何谈谈最小/最大?您是在所有人中谈论最小/最大吗?
无论如何,关于代码跳跃的一些评论对您有帮助
警告两行
printf("Highest Value \t\t\t%15d %25d %11d %10d %10d\n",person[i].MaxPer,person[i].sum,person[i].project,person[i].MID,person[i].Final); printf("Lowest Value \t\t\t%15d %25d %11d %10d %10d\n",person[i].MinPer,person[i].sum,person[i].project,person[i].MID,person[i].Final);
不在for ( i = 0; i < input; i++) {
内,所以 i 值 input ,您可以访问未初始化的值,并且可能不在 person < / p>
在
scanf(“%d”,&input);
您不检查 scanf 返回1以知道输入是否为有效数字,还需要检查 input 是否小于10,否则您将访问对于数组,无论如何也要检查该值是否为正,以指示错误,否则似乎是个好主意。
还要检查另一个 scanf 以了解是否完成了有效的输入,永远不要假设用户输入了有效的输入
字段 MaxPer 和 MinPer 不存在,但也存在于
person[i].MaxPer = person[i].percentage; printf("\n"); //input quiz for ( k = 0; k < 4; k++) { printf("Input Quiz%d : ",k ); scanf("%d",&person[k].quiz[i] ); count2+=person[k].quiz[i]; person[i].average = count2/4; } person[i].sum = person[i].average*0.10; person[i].MinPer = person[i].percentage;
person[i].percentage;
不变,因此 MaxPer 和 MinPer 的值相同
为什么要在循环中而不是之后设置person[i].average
?
为什么*0.10
里面有东西
for ( j = 0; j < 3; j++) { printf("Input Assignment%d : ",j ); scanf("%d",&person[i].assignment[j] ); count+=person[i].assignment[j]; person[i].average = count/3; } person[i].percentage = person[i].average*0.20;
为什么要在循环中而不是之后设置person[i].average
?
为什么person[i].average*0.20;
喜欢管理5个值?