嵌入式C语言学习--结构体成绩2

学到的问题:

1.结构体中定义的类型不一样访问的方式不一样:

  结构体定义:                                              访问方式 

                                                                    指针:                                                            正常

     int num;                        &p->num(由结构体定义决定跟,指针p关系不大)                &n[i].num
    char name[50];                        p->name(数组名就是地址)                                     &n[i].name
    int scores[2];                  *1   &(p->scores[0])(访问整形数组里具体的位置--索引)&n[i].scores

*1  变量scores[]取地址&进行引用  score数组是地址

*2 p++可相当于行变化,具体访问数组那个位置要确定i的值

 

s

代码;

#include <stdio.h>
#include <string.h>

struct Student
{
	int num;
	char name[50];
	char gender[20];
	int scores[2];
	
};

int main()
{
	struct Student n[2];
	
	struct Student n2;
	struct Student max;
	struct Student *p;
	   p=n;//数组名就是地址不用加&
	printf("num=%d,scores=%d\n",p->num,p->scores);
	for(int i = 0;i<2;i++){
	    p->num= 0;
			memset(p->name ,'\0',sizeof(p->name));
			memset(p->gender ,'\0',sizeof(p->gender));
	    p->scores[0] =0;
	printf("初始化;num=%d,scores=%d\n",p->num,p->scores);
		printf("请输入第%d名学生的信息:\n",i);
		puts("学号:1/2");
		scanf("%d",&p->num);//加&:结构体中不是数组或指针,要加&。访问数组要加下标--索引,访问的是变量,num是地址
		getchar();
		puts("姓名:");
		scanf("%s",p->name);
		getchar();
		puts("性别:男?女");
		scanf("%s",p->gender);
		getchar();
		puts("成绩:");
		scanf("%d",&(p->scores[0]));
		getchar();
		p++;
		
	}
	p=n;
	for(int i = 0;i<2;i++){
		printf("成绩较高的学生信息:学号:%d \n姓名:%s \n性别:%s \n成绩:%d\n"
		,p->num,p->name,p->gender,p->scores[0]);
		p++;
		
	}
	
	p=n;
	 max =n[0];
	if(n[0].scores[0] < n[1].scores[0]){
		
		 max = n[1];
		
	}if(n[0].scores[0] == n[1].scores[0]){
		
		puts("这俩一样优秀");
		
	}
	p=n;	
	if(n[0].scores[0] != n[1].scores[0]){	
	printf("成绩最·高的学生信息:学号:%d \n姓名:%s \n性别:%s \n成绩:%d \n",max.num,max.name,max.gender,max.scores[0]);
	}
	
	return 0;
}

结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值