修改如下,供参考:
#include <stdio.h>
#include <stdlib.h>
struct Person {
char arr[20];
char ch;
unsigned int age;
};
void personInput(struct Person* pPerson)
{
printf("请输入姓名:");
scanf("%s", pPerson->arr);//scanf("%s", &pPerson->arr[20]);
getchar();
printf("请输入性别:");
scanf("%c", &pPerson->ch);
printf("请输入年龄:");
scanf("%u", &pPerson->age);
}
void personOutput(struct Person* pPerson)
{
printf("Person:%s的个人信息为:\n", pPerson->arr);
printf("\t Name:%s\n", pPerson->arr);
printf("\t Sex :%d\n", pPerson->ch);
printf("\t Age :%u\n", pPerson->age);
}
struct Grade {
int math;
int english;
int language;
float average;//int average;
};
void gradeInput(struct Grade* pGrade)
{
printf("请输入数学成绩:");
scanf("%d", &pGrade->math);
getchar();
printf("请输入英语成绩:");
scanf("%d", &pGrade->english);
printf("请输入语文成绩:");
scanf("%d", &pGrade->language);
pGrade->average = (pGrade->math + pGrade->english + pGrade->language) / 3.0;
}
void gradeOutput(struct Grade* pGrade)
{
printf("\t数学:%d\n", pGrade->math);
printf("\t英语:%d\n", pGrade->english);
printf("\t语文:%d\n", pGrade->language);
printf("\t平均:%.2f\n",pGrade->average);
printf("\n");
}
struct Student {
struct Person person;
long id;
struct Grade grade;
};
void studentInput(struct Student* pStudent)
{
personInput(&pStudent->person);//personOutput(&pStudent->person);
printf("请输入学号:");
scanf("%ld", &pStudent->id);
gradeInput(&pStudent->grade);
}
void studentOutput(struct Student* pStudent)
{
personOutput(&pStudent->person);
printf("\t学号:%ld\n", pStudent->id);
gradeOutput(&pStudent->grade);
}
int main()
{
struct Student stu1, stu2;
void studentInput(struct Student* pStudent);
void studentOutput(struct Student* pStudent);
studentInput(&stu1);
studentInput(&stu2);
if (stu1.person.age > stu2.person.age)//if (stu1.grade.average > stu2.grade.average)
printf("%s 比 %s 年龄大\n",stu1.person.arr,stu2.person.arr);
else
printf("%s 比 %s 年龄大\n",stu2.person.arr,stu1.person.arr);
studentOutput(&stu1);
studentOutput(&stu2);
return 0;
}