【无标题】

作业:补充完作业代码3.c,打印完所有地址和内容,查询什么是小端模式,什么是大端模式, 他们的优缺点

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

//计算结构体空间大小
//1.找成员内 

void test_mem_size(void)
{
//	typedef struct
//	{
//		char ch;
//		short sh;
//		int ih;
//
//	}Mem_size;
//	
//	Mem_size stu01;
//	printf("%d\n",sizeof(stu01));//size=4,ch变量只占用一个字节,另外浪费
//	
//	typedef struct
//	{
//		char ch;
//		short sh;
//		int ih;
//
//	}Mem_size01;
//	
//	Mem_size01 stu02;
//	
//	printf("%d\n",sizeof(stu02)); //size=8,ch变量只占用一个字节,另外浪费 
	
	//目的:测试结构成员存放具体地址及情况 
//	char *p=&stu02;
//	stu02.ch='c';
//	stu02.sh=0x1234;
//	stu02.ih=0x56789ABC;
//	
//	printf("%#p\n",p);
//	printf("%c\n",*p);
//	printf("%#p\n",p+1);
//	printf("%x\n",*(p+1));
//	printf("%#p\n",p+2);
//	printf("%x\n",*(p+2));
//	printf("%#p\n",p+3);
//	printf("%x\n",*(p+3));
//	printf("%#p\n",p+4);
//	printf("%x\n",*(p+4));
	
	
	typedef struct{
		char ch01;		   
		char ch02; 
		char ch03; 
		char ch04;
		char ch05;
		short sh01;
		short sh02;	
		int   ih; 
	}Mem_size03;	
	Mem_size03  stu03;
	char *p=&stu03;
	stu03.ch01='c';
	stu03.sh01=0x1234;
	stu03.ih=0x56789ABC;
	
	printf("%#p\n",p);
	printf("%c\n",*p);
	printf("%#p\n",p+1);
	printf("%x\n",*(p+1));
	printf("%#p\n",p+2);
	printf("%x\n",*(p+2));
	printf("%#p\n",p+3);
	printf("%x\n",*(p+3));
	printf("%#p\n",p+4);
	printf("%x\n",*(p+4));
	printf("%#p\n",p+5);
	printf("%x\n",*(p+5));
	printf("%#p\n",p+6);
	printf("%x\n",*(p+6));
	printf("%#p\n",p+7);
	printf("%x\n",*(p+7));
	printf("%#p\n",p+8);
	printf("%x\n",*(p+8));
	printf("\n");
	printf("\n");
	printf("\n");
	
	Mem_size03  stu04;
	char *p1=&stu04;
	stu04.ch01='c';
	stu04.sh01=0x1234;
	stu04.ih=0x56789ABC;
	
	printf("%#p\n",p1);
	printf("%c\n",*p1);
	printf("%#p\n",p1+1);
	printf("%x\n",*(p1+1));
	printf("%#p\n",p1+2);
	printf("%x\n",*(p1+2));
	printf("%#p\n",p1+3);
	printf("%x\n",*(p1+3));
	printf("%#p\n",p1+4);
	printf("%x\n",*(p1+4));
	printf("%#p\n",p1+5);
	printf("%x\n",*(p1+5));
	printf("%#p\n",p1+6);
	printf("%x\n",*(p1+6));
	printf("%#p\n",p1+7);
	printf("%x\n",*(p1+7));
	printf("%#p\n",p1+8);
	printf("%x\n",*(p1+8));
	//以此类推 
}

void test_malloc_struct(void)
{
	typedef struct
	{
		int id;
		char name[20];
		float score;
	}Stu_info;
	//p是一个结构体类型指针变量 
	Stu_info *p=NULL;
	//1.无返回值的类型转化,不建议 
	//p=malloc(sizeof(int)*10)
	//2.返回指针变量进行强制类型转化,提高代码阅读性 
	p=(Stu_info *)malloc(sizeof(Stu_info));
	
	//通过取*法 
	(*p).id=999;
	strcpy((*p).name,"咪咪");
	(*p).score=999;
	
	printf("id=%d name=%s score=%f\n",(*p).id,(*p).name,(*p).score);
	
	// 通过取向法 
	p->id=996;
	strcpy(p->name,"咪咪");
	p->score=99.9;

	//打印输出
	printf("id=%d name=%s score=%f\n",p->id,p->name,p->score);
	
	(*(p+1)).id=998;
	strcpy((*(p+1)).name,"咪咪");
	(*(p+1)).score=99;
	
	printf("id=%d name=%s score=%f\n",(*(p+1)).id,(*(p+1)).name,(*(p+1)).score);
	
	(p+1)->id=997;
	strcpy((p+1)->name,"咪咪");
	(p+1)->score=99.1;
	
	printf("id=%d name=%s score=%f\n",(p+1)->id,(p+1)->name,(p+1)->score);
}

int main()
{
	test_mem_size();
	//test_malloc_struct();
	
	return 0;
}

2.

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




void test_shuju(void)
{
	struct stu
	{
		int num;
		char name[20];
		char sex;
		float score;
	}boy[6]={{101,"li ping",'m',45},
	{102,"zhang ping",'m',62.5},
	{103,"he fang",'m',92.5},
	{104,"cheng ling",'f',87},
	{106,"wang ming",'m',58}
	};
	
	int i,j=0;
	for(i=0;i<5;i++)
	{
		if(boy[i].score<60)
		j++;
		
	}
	printf("不及格人数为:%d\n",j);
	struct stu n={105,"ma li",'f',20};
	struct stu *p=NULL;
	p=&boy;
	memcpy((void *)(boy+5),(void *)(boy+4),sizeof(boy[4]));
	memcpy((void *)(boy+4),(void *)(&n),sizeof(n));
	for(i=0;i<6;i++)
	{
		printf("num=%d name=%s sex=%c score=%.1f\n",(*(p+i)).num,(*(p+i)).name,(*(p+i)).sex,(*(p+i)).score);
	}
	printf("\n");
	
	memset((void *)(boy+3),0,sizeof(boy[3]));
	for(i=0;i<6;i++)
	{
		printf("num=%d name=%s sex=%c score=%.1f\n",(*(p+i)).num,(*(p+i)).name,(*(p+i)).sex,(*(p+i)).score);
	}
}

int main()
{
	test_shuju(); 
	
	return 0;
}

3. 编写一个程序,完成根据学员姓名查询成绩的功能(要求查询通过函数实现),

定义一个学员结构体,包含姓名,成绩,定义一个结构体数组,保存所有学员的

信息(假定有3个学生),首先录入学员信息,然后调用查询函数获得要查询学员成绩

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

struct stu
{
	int id;
	char name[20];
	float score1;
	float score2;
	float score3;
	float avg;
};

void stu_fun(struct stu bb[3],int n)
{
	int i;
	float temp=0;
	int s;
	for(i=0;i<3;i++)
	{
		//float temp;
		if(temp<bb[i].avg)
		{
			temp=bb[i].avg;
			s=i;
		}
			
			
	}
	//printf("%f",temp);
	printf("学号=%d 姓名=%s 第一门成绩%f 第二门成绩%f 第三门成绩%f\n",bb[s].id,bb[s].name,bb[s].score1,bb[s].score2,bb[s].score3);
	printf("%f平均分为:",temp);
}

void stu_avg(struct stu b[3],int n)
{
	int i;
	float num=0;
	for(i=0;i<3;i++)
	{
		num=b[i].score1+b[i].score2+b[i].score3;
		b[i].avg=num/3;
		printf("第%d位学生的平均成绩为:%f\n",i+1,b[i].avg);
	}
}

void print_stu_arr(struct stu aa[3],int n)
{
	int i;
	for(i=0;i<3;i++)
	{
		printf("学号=%d 姓名=%s 第一门成绩%f 第二门成绩%f 第三门成绩%f\n",aa[i].id,aa[i].name,aa[i].score1,aa[i].score2,aa[i].score3);
	}
}

void test_student(void)
{
	struct stu a[3];
	int i;
	for(i=0;i<3;i++)
	{
		printf("请输入第%d个学生的学号、姓名、3门课程成绩:\n",i+1);
		scanf("%d",&a[i].id);
		getchar();
		gets(a[i].name);
		scanf("%f",&a[i].score1);
		scanf("%f",&a[i].score2);
		scanf("%f",&a[i].score3);
		//printf("学号=%d 姓名=%s 第一门成绩%f 第二门成绩%f 第三门成绩%f",a.id,a.name,a.score1,a.score2,a.score3);
		//print_stu_arr(a,3);
	}

	print_stu_arr(a,3);
	stu_avg(a,3);
	stu_fun(a,3); 
	
}

int main()
{
	
	test_student();
	
	return 0;
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值