
#include <stdio.h>
#include <math.h>
struct Student
{
char name;int A;int B;int C;float aver;};
int main()
{
struct Student stud[5];//定义结构体数组stud[5]int x;void input(struct Student s[], int n);void average(struct Student s[], int n);void print(struct Student s[], int n);scanf("%d",&x);input(stud,x);average(stud,x);print(stud,x);return 0;}
void input(struct Student s[], int n)
{
int i;for(i=1;i<=n;i++){printf("请输入第%d名学生数据:\n",i);printf("姓 名:");scanf("%s",&s[i].name);printf("A课程成绩:");scanf("%d",&s[i].A);printf("B课程成绩:");scanf("%d",&s[i].B);printf("C课程成绩:");scanf("%d",&s[i].C);}printf("\n");}
void average(struct Student s[], int n)
{
int i;for(i=1;i<=n;i++){s[i].aver=(s[i].A+s[i].B+s[i].C)/3.0;}}
void print(struct Student s[], int n)
{
int i;printf("学生成绩列表:\n");for(i=1;i<=n;i++){printf("姓名:%s,A课程成绩:%d,B课程成绩:%d,C课程成绩: %d,平均分:%f。\n",s[i].name,s[i].A,s[i].B,s[i].C,s[i].aver);}printf("\n");}
我能看到的问题就是%s输出应该取地址,要不你就用%c,但这输出一个字符。
注意到你使用一个char来保存字符串,最好是用char数组,输出的时候就可以用s[i].name了。