解题思路:
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分
80 人评分
#include<stdio.h> typedef struct Score { int math; int chinese; int english; }Score; typedef struct chengji { char *xuehao; char *name; Score score; }chengji; void input(chengji a[],int n) { for(int i=0;i<n;i++) {scanf("%s %s %d %d %d",&a[i].xuehao,&a[i].name, &a[i].score.chinese,&a[i].score.math,&a[i].score.english);} } void print(chengji a[],int n) { for(int i=0;i<n;i++) {printf("%s,%s,%d,%d,%d\n",a[i].xuehao,a[i].name, a[i].score.chinese,a[i].score.math,a[i].score.english);} } int main() { int n,i; scanf("%d",&n); chengji a[n]; input(a,n);print(a,n);return 0;} 哪位大佬可以帮我指一下我错在了哪
#include <stdio.h> struct Date { char num[10]; char name[10]; int grade1; int grade2; int grade3; } stu[100]; int N; void input() { int i; for(i=0;i<N;i++) scanf("%s %s %d %d %d",&stu[i].num,&stu[i].name,&stu[i].grade1,&stu[i].grade2,&stu[i].grade3); } void print() { int i; for(i=0;i<N;i++) printf("%s,%s,%d,%d,%d\n",stu[i].num,stu[i].name,stu[i].grade1,stu[i].grade2,stu[i].grade3); } int main() { scanf("%d",&N); input(); print(); return 0; }
uq_78487532311 2021-12-23 15:34:51 |
这个input和print的()里都需要加N吧
花开回落 2022-03-03 16:48:37 |
这样写会不会太浪费内存了,来自小白的发问
为什么list已经是student_info *,发送了地址input(&list[i]),但函数接收不是void input(student_info **L),还有为什么输入用的是&(L->s_score[0],输出却是L->s_score[0],
input(&list[i]); 为什么这里要加&,list[i]不是代表地址吗
list = (student_info *)malloc(sizeof(student_info)*n); 请问最后的指针n是什么意思?
cuzz,rank的神 2020-03-20 21:09:39 |
这里*是乘的意思,这句话应该是向内存申请n个student_info_结构体类型的空间。
葡萄 2020-03-23 13:39:56 |
@uq_97086515507 谢谢哥们!
#include<stdio.h> #include<stdlib.h> struct chengji { int yuwen; int shuxue; int yingyu; }; typedef struct { char xuehao[20]; char xingmin[50]; struct chengji temp; }temp1; int main() { temp1* array; int n; scanf("%d",&n); array = (temp1*)calloc(n, sizeof(temp1)); for (int i = 0; i < n; i++) scanf("%s%s%d%d%d",&array[i].xuehao, &array[i].xingmin, &array[i].temp.shuxue, &array[i].temp.yingyu, &array[i].temp.yuwen); for (int i = 0; i < n; i++) printf("%s,%s,%d,%d,%d\n", array[i].xuehao, array[i].xingmin, array[i].temp.shuxue, array[i].temp.yingyu, array[i].temp.yuwen); return 0
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:535 |
奖学金 (C++代码)浏览:2040 |
C语言训练-求PI* (C语言代码)浏览:628 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:635 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:1051 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:516 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:516 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:467 |
Manchester-汽水瓶问题浏览:4203 |
用筛法求之N内的素数。 (C语言代码)浏览:600 |
云中 2023-04-18 23:24:35 |
1、函数input错了,函数里的变量是局部变量,你在函数里输入,回到主函数的时候你输入的数据就没了,你去看看函数的值传递和地址传递的区别 2、xuehao和name不用&,因为这就是地址 3、要给xuehao和name分配空间