#include<stdio.h>
#define N 3
struct student
{
char num[10];
char name[10];
int CPL;
int math;
int English;
int all;
};
int main()
{
student stu[3];
void input(student *p,int n);
void output(student *p, int n);
//int allmax(student stu[], int n);
struct student stu[N], * p = stu;
input(p, 3);
output(p, 3);
//allmax(stu, 3);
return 0;
}
//
void input(student *p,int n)
{
for (int i = 0; i < n; i++)
{
printf("请输入学号:");
gets_s("%c",&p->num);
printf("\n请输入姓名:");
gets_s("%c", &p->name);
getchar();
printf("\n请输入c语言成绩:");
scanf_s("%d",&p->CPL);
printf("\n请输入数学成绩:");
scanf_s("%d", &p->math);
printf("\n请输入英语成绩:");
scanf_s("%d", &p->English);
printf("\n");
//p++;
}
}
void output(student * p, int n)
{
//表头
printf("学号\t姓名\tC语言\t数学\t英语\t");
for (int i = 0; i < n; i++)
{
printf("\n%s\t",p->num);
printf("%s\t",p->name);
printf("%d\t", p->CPL);
printf("%d\t", p->math);
printf("%d\t", p->English);
p++;
}
}

出现了报错,不知道该怎么改。
不知道是哪里出了问题
gets_s、scanf_s,都改为 scanf 再试试。
另外,第16、17行要移到 main() 方法外面,放它前面去。
改成这样了:
#include<stdio.h>
#define N 3
typedef struct student
{
char num[10];
char name[10];
int CPL;
int math;
int English;
int all;
}student;
int main()
{
//student stu[3];
void input(student *p,int n);
void output(student *p, int n);
//int allmax(student stu[], int n);
struct student stu[N];// * p = stu;
input(stu, 3);
output(stu, 3);
//allmax(stu, 3);
return 0;
}
//
void input(student *p,int n)
{
for (int i = 0; i < n; i++)
{
printf("请输入学号:");
scanf("%s", &p->num);
printf("请输入姓名:");
scanf("%s", &p->name);
//getchar();
printf("请输入c语言成绩:");
scanf("%d",&p->CPL);
printf("请输入数学成绩:");
scanf("%d", &p->math);
printf("请输入英语成绩:");
scanf("%d", &p->English);
printf("");
p++;
}
}
void output(student * p, int n)
{
//表头
printf("学号\t姓名\tC语言\t数学\t英语\t");
for (int i = 0; i < n; i++)
{
printf("\n%s\t",p->num);
printf("%s\t",p->name);
printf("%d\t", p->CPL);
printf("%d\t", p->math);
printf("%d\t", p->English);
p++;
}
}