C语言小题,输入两个学生的学号、姓名和成绩,输出成绩较高的学生的学号、姓名和成绩。(结构体变量的初始化和引用)

前言:
此篇是针对 结构体变量的初始化和引用 方面的练习。

解题思路:

定义两个结构相同的结构体变量 student1 和 student2;

分别输入两个学生的学号、姓名和成绩;

比较两个学生的成绩,如果学生1的成绩高于学生2的成绩,就输出学生1的全部信息,如果学生2的成绩高于学生1的成绩,就输出学生2的全部信息。如果二者相等,输出两个学生的全部信息。

正文:

#include<stdio.h>
int main() {
	struct Student {			//声明结构体类型struct Student 
		int num;
		char name[20];
		float score;
	} student1,student2;		//定义两个结构体变量student1,student2 
	scanf("%d%s%f",&student1.num,student1.name,&student1.score);//输入学生1的数据 
	scanf("%d%s%f",&student2.num,student2.name,&student2.score);//输入学生1的数据 
	printf("The highter score is:\n");
	if(student1.score>student2.score)
		printf("%d	%s	%6.2f\n",student1.num,student1.name,student1.score);
	else if(student1.score<student2.score)
		printf("%d	%s	%6.2f\n",student2.num,student2.name,student2.score);
	else {
		printf("%d	%s	%6.2f\n",student1.num,student1.name,student1.score);
		printf("%d	%s	%6.2f\n",student2.num,student2.name,student2.score);
	}
	return 0;
}

程序分析:

student1 和 student2 是 struct Student 类型的变量。在3个成员中分别存放学号、姓名和成绩。

用 scanf 函数输入结构体变量时,必须分别输入它们的成员的值,不能在scanf 函数中使用结构体变量名一揽子输入全部成员的值。注意在scanf 函数中在成员 student1.num 和 student.score 的前面都有地址符&,而在 student1.name 前面没有&,这是因为 name 是数组名,本身就代表地址,故不能画蛇添足地再加一个&。

根据 student1.sore 和 student2.sore 的比较结果,输出不同学生的信息。从这里可以看到利用结构体变量的好处:由于 student1是一个 “组合项” ,内放有关联的一组数据,student1.score 是属于 student1 变量的一部分,因此如果确定了 student1.score 是成绩较高的,则输出 student1 的全部信息是轻而易举的,因为它们本来是互相关联,捆绑在一起的。

总结:
运行结果:
在这里插入图片描述

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级Mr Yin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值