C 如果每个人不止一个,则查找每个人的最高值和最低值
我想找到每个人的百分比,总和,项目,中,最终和搜索方法等级最终结果的最高和最低C 如果每个人不止一个,则查找每个人的最高值和最低值,c,C,我想找到每个人的百分比,总和,项目,中,最终和搜索方法等级最终结果的最高和最低 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
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个人的所有作业、测验等,并使用不同的数字,它将循环查找三个人中的最高和最低。最后一个是打印输出
我想找到每个人的百分比,总和,项目,中,最终和搜索方法等级最终结果的最高和最低
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;
}
我不明白你的意思,因为这些数据对于每个人来说都是独一无二的,那么如何在这些数据上谈论最小值/最大值呢?你是说所有人中的最小值/最大值吗
无论如何,一些关于你的代码跳跃的评论会对你有所帮助
警告两条线
当i=0时,不符合要求;i<输入;i++{所以i值输入,您可以访问未初始化的值,并且可能不属于个人
在
扫描%d,&输入
您不需要检查scanf返回1,就可以知道输入是否为有效数字,您还需要检查输入是否小于10,否则您将从数组中访问,无论如何,也要检查值是否为正值以指示错误,否则看起来是个好主意
还要检查另一个scanf以了解是否完成了有效输入,千万不要假设用户输入了有效输入
字段MaxPer和MinPer不存在,但也存在
为什么要在循环中设置person[i]。平均值,而不是在循环之后
为什么是人[我].average*0.20;例如,如果您管理了5个值?您的代码出了什么问题?我想将fidn逻辑添加到最高和最低的数字,但我很难在CPL中使用searchin方法,请您的问题添加此信息,而不是在注释中回答。请同时显示您使用的输入、实际得到的输出以及y是什么您希望获取示例输入的。
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;
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;