解题思路:1.定义结构体变量,并以此变量定义一个二维数组。

              2.先定义并输入二维数组的行数,之后再用正常的input和output输入输出即可。

              3.输入输出的形参为指针类型(也可以认为是输入自己所定义的结构体变量的数组的首位)

              4.每行是每个变量的内容是for循环一次的操作内容,而for要循环几次取决于列数

参考代码:

#include <stdio.h>
struct stu
{
	char num[100];
	char name[100];
	int score[3];
};
void input(struct stu* a,int n);
void output(struct stu* a,int n);
int main(void)
{
	int n;
	scanf("%d",&n);
	struct stu a[n];
	input(a,n);
	output(a,n);
	
	return 0;
}

void input(struct stu * a,int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		scanf("%s%s%d%d%d",&(a[i].num),&(a[i].name),&(a[i].score[0]),&(a[i].score[1]),&(a[i].score[2]));
	}
}

void output(struct stu* a,int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		printf("%s,%s,%d,%d,%d\n",a[i].num,a[i].name,a[i].score[0],a[i].score[1],a[i].score[2]);
	}
}


点赞(0)
 

0.0分

41 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 20 条评论

月下花钱 2年前 回复TA
@sttttt 而且定义的两个函数接收的是结构体指针类型的参数,此时传递的就是结构体变量的首地址,所以调用的时候要intput(&a,n)。
sttttt 2年前 回复TA
a[i]的num和name不需要去地址符号!!!
小明 2年前 回复TA
a[n]为啥我编译器报错
dotcpp0586360 2年前 回复TA
@Euclid233 确实不能运行
Euclid233 2年前 回复TA
@Euclid233 定义的时候
Euclid233 2年前 回复TA
@Euclid233 但貌似结构数组里不能用变量 只能用常量
Euclid233 2年前 回复TA
6 比要申请动态内存的简单多了
Kaiiiiiix 2年前 回复TA
用到了结构体数组,牛鼻
面具男 3年前 回复TA
结构体数组可以临时定义?
爱羊羊 3年前 回复TA
写的很好