#include <stdio.h>
struct student{
int num;
char name[40];
int computer, english, math;
double average;
};
int update_score(struct student *p, int n, int num, int course, int score);
int main(void){
int course, i , n, num, pos, score;
struct student students[50];
printf("Input n:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("Input the info of No.%d:\n", i+1);
printf("number:");
scanf("%d", &students[i].num);
printf("name:");
scanf("%s", students[i].name);
printf("math score:");
scanf("%d", &students[i].math);
printf("english score:");
scanf("%d", &students[i].english);
printf("computer socre:");
scanf("%d", &students[i].computer);
students[i].average = (students[i].math + students[i].english + students[i].computer) / 3.0;
}
printf("input the number of the student to be updated");
scanf("%d", &num);
printf("Choice of course:1.math 2.english 3.computer");
scanf("%d", &course);
printf("Input the new sorce");
scanf("%d", &score);
pos = update_score(students, n, num, course, score);
if (pos == -1) {
printf("Not found!\n");
}else{
printf("After update:\n");
printf("num\t math\t english\t computer \n");
printf("%d\t %d\t %d\t %d\n", students[pos].num, students[pos].math, students[pos].english, students[pos].computer);
}
return 0;
}
int update_score(struct student *p, int n, int num, int course, int score){
int i, pos;
for (i = 0; i < n; i++, p++) {
if (p->num == num) break;
}
if (i < n) {
switch (course) {
case 1:
p ->math = score;
break;
case 2:
p->english = score;
break;
case 3:
p->computer =score;
break;
}
pos = i;
}else{
pos = -1;
}
return pos;
}