原题链接:[编程入门]结构体之成绩记录
解题思路:
1、使用结构体指针存储学生信息
2、输入数据长度后使用malloc分配存储空间
注意事项:
参考代码:
#include<stdio.h>
#include<malloc.h>
typedef struct _student_info_
{
char s_id[16]; //学号
char s_name[32]; //姓名
int s_score[3]; //三科成绩
}student_info;
void input(student_info *L)
{
scanf("%s %s %d %d %d", L->s_id, L->s_name, &(L->s_score[0]), &(L->s_score[1]), &(L->s_score[2]));
}
void print(student_info *L)
{
printf("%s,%s,%d,%d,%d\n", L->s_id, L->s_name, L->s_score[0], L->s_score[1], L->s_score[2]);
}
int main()
{
student_info *list;
int n = 0, i = 0;
scanf("%d", &n);
while(getchar() != '\n')
continue;
if(n > 0 && n < 100)
list = (student_info *)malloc(sizeof(student_info)*n);
else
return 0;
for(i = 0; i < n; i++)
{
input(&list[i]);
//一行一行获取,忽略一行多余的数据
while(getchar() != '\n')
continue;
}
for(i = 0; i < n; i++)
{
print(&list[i]);
}
free(list);
return 0;
}0.0分
50 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
编译没报错,运行错误,这么回事呀,求大神看看,解释一下好不 #include<stdio.h> struct student_information { char student_id[16]; char student_name[16]; int chinese; int mathematics; int english; }; void input(struct student_information * p,int stu_num) { int i; for(i=0;i<stu_num;i++) scanf("%s %s %d %d %d", (p+i)->student_id,(p+i)->student_name, &(p+i)->chinese,&(p+i)->mathematics,&(p+i)->english); } void print(struct student_information *p,int std_num) { int i; for(i=0;i<std_num;i++) printf("%s,%s,%d,%d,%d",p[i].student_id,p[i].student_name, p[i].chinese,哪里错啊 #include "stdio.h" #include "malloc.h" typedef struct Student { char id[10]; char a[10]; int ch; int ma; int en; }Student; void input(int n,Student *li) { int i; for(i=0;i<n;i++) { scanf("%s %s %d %d %d",&li->id,&li->a,&li->ch,&li->ma,&li->en); } } void print(Student *li) { printf("%s,%s,%d,%d,%d\n",li->id,li->a,li->ch,li->ma,li->en); } void main() { Student *list; int n,i; scanf("%d",&n); if(n>0&&n<100) list = (Student *)malloc(sizeof(Student)*n); for(i=0;i<n;i++) { input(n,&list[i]); } for(i=0;i<n;i++) { print(&list[i]);@弈 我的是这样#include "stdio.h" #include "malloc.h" typedef struct Student { char id[10]; char a[10]; int ch; int ma; int en; }Student; void input(int n,Student *li) { int i; for(i=0;i<n;i++) { scanf("%s %s %d %d %d",&li->id,&li->a,&li->ch,&li->ma,&li->en); } } void print(Student *li) { printf("%s,%s,%d,%d,%d\n",li->id,li->a,li->ch,li->ma,li->en); } void main() { Student *list; int n,i; scanf("%d",&n); if(n>0&&n<100) list = (Student *)malloc(sizeof(Student)*n); for(i=0;i<n;i++) { input(n,&list[i]); } for(i=0;i<n;i++) { print(&list[i]); } free(list); }请问while(getchar() != '\n') continue; 这两行具体有什么作用,可以不加吗?@豆豆哦 补充void main(){ int n; scanf("%d",&n); print(input(n)); }