我写过代码但不知道如何删除和搜索。请协助。我被困在删除和搜索中。请在代码中提出一些更改,以便删除和搜索。
#include<stdio.h>
#define SIZE 50
struct student {
char name[30];
int rollno;
int sub[3];
};
main() {
int i, j, max, count, total, n, a[SIZE], ni;
struct student st[SIZE];
printf("Enter how many students: ");
scanf("%d", &n);
/* for loop to read the names and roll numbers*/
for (i = 0; i < n; i++) {
printf("\nEnter name and roll number for student %d : ", i);
scanf("%s", &st[i].name);
scanf("%d", &st[i].rollno);
}
/* for loop to read ith student's jth subject*/
for (i = 0; i < n; i++) {
for (j = 0; j <= 2; j++) {
printf("\nEnter marks of student %d for subject %d : ", i, j);
scanf("%d", &st[i].sub[j]);
}
}
/* (i) for loop to calculate total marks obtained by each student*/
for (i = 0; i < n; i++) {
total = 0;
for (j = 0; j < 3; j++) {
total = total + st[i].sub[j];
}
printf("\nTotal marks obtained by student %s are %dn", st[i].name,total);
a[i] = total;
}
/* (ii) for loop to list out the student's roll numbers who
have secured the highest marks in each subject */
/* roll number who secured the highest marks */
for (j = 0; j < 3; j++) {
max = 0;
for (i = 0; i < n; i++) {
if (max < st[i].sub[j]) {
max = st[i].sub[j];
ni = i;
}
}
printf("\nStudent %s got maximum marks = %d in Subject : %d",st[ni].name, max, j);
}
max = 0;
for (i = 0; i < n; i++) {
if (max < a[i]) {
max = a[i];
ni = i;
}
}
printf("\n%s obtained the total highest marks.", st[ni].name);
}
答案 0 :(得分:0)
您可以使用此代码根据代码
搜索学生int sroll, flag = 0,
scanf("%d",&sroll);
for(i=0;i<n;i++)
{
if(st[i].rollno == i) // Checking if student exists based on roll
{
flag = 1;
break;
}
}
if(flag == 0)
printf("not found\n");
else
printf("found\n");
并使用此代码段根据代码编号删除某人
printf("Enter the roll number of the student whom you want to delete\n");
scanf("%d",&droll);
for(i=0;i<n;i++)
{
if(st[i].rollno != droll) // Not interested till the roll appears
continue;
st[i] = st[i+1]; // Shifting one student to left to compensate deletion
}
n--; // Decreasing the total students
for(i=0;i<n;i++)
printf("%s",st[i].name); // Printing the students present