day1 数据结构 基础练习

练习1.
在堆区分配5个空间,存储5个商品信息,实现排序
1>调用空间申请函数
2>调用录入函数
3>调用排序函数
4>调用输出函数
5>调用释放空间的函数
head.h

#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <stdlib.h>
int *Space();
void Input(int *p,int n);
void Bubble(int *p,int n);
void Simple(int *p,int n);
void Output(int *p,int n);
void free(int *p);
#endif

main.c

#include "head.h"
int main(int argc, const char *argv[])
{
	int *p=Space();
	//输入函数
	Input(p,5);
	//排序冒泡升序
	Bubble(p,5);
	//简单选择升序
	Simple(p,5);
	//输出函数
	printf("\n");
	Print(p,5);
	//释放空间
	free(p);
	p=NULL;
	return 0;
}

test.c

#include "head.h"
int *Space()
{
	int *p=(int *)malloc(sizeof(int)*5);
	if(p==NULL)
	{
		return NULL;
	}
	return p;
}
void Input(int *p,int n)
{
	for(int i=0;i<n;i++)
	{
		scanf("%d",p+i);
	}
}
void Bubble(int *p,int n)
{
	int i,j,t,count;
	for(i=1;i<n;i++)
	{
		count=0;
		for(j=0;i<n-i;j++)
		{
			if(*(p+j)>*(p+j+1))
			{
				t=*(p+j);
				*(p+j)=*(p+j+1);
				*(p+j+1)=t;
				count++;
			}
		}
		if(count==0)
			break;
	}
}
void Simple(int *p,int n)
{
	int i,j,max,t;
	for(i=0;i<n-1;i++)
	{
		max=i;
		for(j=i+1;j<n;j++)
		{
			if(*(max)<*(p+j))
			{
				max=j;
			}
		}
		if(max!=i)
		{
			t=*(p+max);
			*(p+max)=*(p+i);
			*(p+i)=t;
		}
	}
}
void Print(int *p,int n)
{
	for(int i=0;i<n;i+=)
	{
		printf("%d\t",*(p+i));
	}
}
void Free(int *p)
{
	int a;
	if(p==NULL)
		return ;
	free(p);
}

练习2
定义5个学生结构体(姓名name,年龄age,分数score)
多文件编译
1>定义函数实现输入
2>定义函数计算平均值
3>定义函数实现计算最大年龄者的信息
4>定义函数根据分数实现升序排列
5>定义函数输出
head.h

#ifndef __HEAD_H__
#define __HEAD_H__
//函数申明
//全局变量
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Student
{
	char name[10];
	int age;
	int score;
};
void Input(struct Student s[],int n);
void Max(struct Student s[],int n);
void Bubble(struct Student s[],int n);
float Avg(struct Student s[],int n);
void Output(struct Student s[],int n);
#endif

main.c

#include "head.h"
int main(int argc, const char *argv[])
{
	struct Student s[5];//定义结构体变量
	//输入
	Input(s,5);
	//计算平均值
	printf("平均值是:%.2f",Avg(s,5));
	//最大年龄的信息
    Max(s,5);
	//按照分数进行排序
	Bubble(s,5);
	//输出
	Output(s,5);
	return 0;
}

test.c

#include "head.h"
//输入函数
void Input(struct student s[],int n)
{
	for(int i=0;i<n;i++)
	{
		printf("输入姓名:");
		scanf("%s",s[i].name);
		printf("输入年龄:");
		scanf("%d",&s[i].age);
		printf("输入成绩:");
		scanf("f",&s[i].score);
	}
}
//计算平均分
float Avg(struct Student s[],int n)
{
	int i;
	float sum=0;
	for(i=0;i<n;i++)
	{
		sum+=s[i].score;
	}
	return sum/n;
}
//求年龄最大值的人的信息
void Max(struct Student s[],int n)
{
	int i,max,maxi;
	for(i=0;i<n;i++)
	{
		if(i==0)
		{
			max=s[i].age;
			maxi=i;
		}
		if(max<s[i].age)
		{
			max=s[i].age;
			maxi=i;
		}
	}
	printf("年龄最大者的信息是:%s\t%d\t%.2f\n",s[maxi].name,max,s[maxi].score);

}
//根据成绩升序排列
void Bubble(struct student s[],int n)
{
	int i,j,count;
	struct Student temp;
	for(i=1;i<n;i++)
	{
		count=0;
		for(j=0;j<n-i;j++)
		{
			if(s[j].score>s[j+1].score)
			{
				temp=s[j];
				s[j]=s[j+1];
				s[j+1]=temp;
				count++;
			}
		}
		if(count==0)
			break;
	}
}
//输出
void Output(struct Student s[],int n)
{
	for(int i=0;i<n;i++)
	{
		printf("姓名:%s\t年龄:%d\t分数:%.2f\n",s[i].name,s[i].age,s[i].score);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

kei歪歪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值