我試圖在C中創建一個程序,它允許我存儲一些關於學生的信息。這個想法是創建一個新的數據類型,然後用它來創建一些函數來操縱數據。特別是在某一時刻,我必須找到一個組中最古老的學生,然後使用其他功能打印出詳細信息。我所做的這個功能應該可以找到組中的最大年齡不起作用。誰能找到這個錯誤?特別是那些不起作用的功能,我認爲是calcmax和find。有一些錯誤,但是當我在main調用calcmax並嘗試打印結果時,會出現一些隨機數字,就是這樣。我認爲其中一個循環中的邏輯存在問題,但我無法找到它。非常感謝。typedef,在兩個函數中找不到錯誤
typedef struct{
char f[MAXIM];
char s[MAXIM];
char id[MAXIM];
char dep[MAXIM];
char g;
int age;
}student_t;
student_t mkstud(char first[],char sec[], char idn [],char de[], char sex, int eta){
student_t person;
strcpy(person.f,first);
strcpy(person.s,sec);
strcpy(person.id,idn);
strcpy(person.dep,de);
person.g = sex;
person.g = eta;
return person;
}
student_t scstud(){
char first[MAXIM],sec[MAXIM],idn[MAXIM],de[MAXIM];
char sex;
int eta;
student_t person;
printf("name ");
scanf("%s",first);
printf("surname ");
scanf("%s",sec);
printf("id ");
scanf("%s", idn);
printf("depart ");
scanf("%s",de);
printf("sex ");
scanf(" %c",&sex);
printf("age ");
scanf(" %d", &eta);
person= mkstud(first,sec,idn,de,sex,eta);
return person;
}
int calcmax(student_t *class, int length){
int diff,i;
int max[MAXIM];
diff=class[0].age-class[1].age;
if(diff>=0){
max[0]=class[0].age;
}
else if(diff<0){
max[0]=class[1].age;
}
max[1]=max[0];
for (i=0;i<length;i++){
if (max[i]>=class[i+1].age){
max[i+1]=max[i];
}
else if(max[i]<class[i+1].age){
max[i+1]=class[i+1].age;
}
}
return max[length];
}
void printdetails(student_t std){
printf("name: %s",std.f);
printf("surname: %s",std.s);
printf("ID: %s",std.id);
printf("department: %s",std.dep);
printf("gender: %c",std.g);
printf("age: %d",std.age);
}
/*void find(student_t *class, int length){
int std,i;
std = calcmax(class, length);
for(i=0;i<=length-1;i++){
if (std==class[i].age) {
printdetails(class[i]);
}
}
}*/
int main(void){
int i,j;
student_t class[6];
class[0]= mkstud("John","Bishop","s1234","inf", 'm',18);
class[1]=mkstud("Lady","Cook","s2345","Eng",'f',21);
class[2]=mkstud("James","Jackson","s3456","Eng",'m',17);
for(i=4;i<=6;i++){
printf(" student %d \n", i);
class[i-1]=scstud();
}
j=calcmax(class, 6);
printf("%d", j);
/*find(class, 3);*/
return EXIT_SUCCESS;}
計算'類[0]','類[1]'和'類[2]'的最大值,當你明白了什麼是最大的結果?將問題分解下來,以便更容易找到錯誤。在最大計算函數中使用'printf'來「看」它正在做什麼,或者通過調試器來執行它。 – DigitalNinja