练习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);
}
}