作业
一、
在堆区申请2个字符类型的大小为20字节的空间。
1>定义函数,实现在堆区申请空间
2>定义函数,输入两个字符串
3>定义函数,计算两个字符串的长度【非函数】
sizeof_t my_strlen(const char *s1)
4>定义函数,实现字符串连接
char *my_strcat(const char *dest,const char *src)
5>定义函数,实现字符串的冒泡排序【是对字符串的每一个字符进行排序】
void Bubble(char *s)
4>调用函数释放空间多文件编译
main.c
include "head.h"
typedef unsigned int sizeof_t;
int main(int argc,const char * argv[])
{
int n;
printf("请输入要分配的空间:");
scanf("%d",&n);
char *p=Create(n);
char *q=Create(n);
In(p);
In(q);
sizeof_t s1n=My_strlen(p);
sizeof_t s2n=My_strlen(q);
My_strcat(p,q,s1n);
Bubble(p);
p=My_free(p);
q=My_free(q);
return 0;
}
test.c
#include "head.h"
char *Create(int n)
{
char *p=(char *)malloc(sizeof(char)*n);
if(p==NULL)
{
return NULL;
}
else
{
return p;
}
}
void In(char *p)
{
printf("请输入一个字符串:");
scanf("%s",p);
}
sizeof_t My_strlen(char *p)
{
int i=0;
while(*(p+i))
{
i++;
}
return i;
}
void My_strcat(char *p,char *q,int n)
{
int i=0;
while(*(q+i))
{
*(p+n)=*(q+i);
n++;
i++;
}
*(p+n)='\0';
}
void Bubble(char *p)
{
int n=0;
while(*(p+n))
{
n++;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(*(p+j)>*(p+j+1))
{
char t;
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
}
puts(p);
}
char *My_free(char *p)
{
if(p!=NULL)
{
free(p);
p=NULL;
}
return p;
}
head.c
#ifndef __HEAD_H_
#define __HEAD_H_
typedef unsigned int sizeof_t;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *Create(int n);
void In(char *p);
sizeof_t My_strlen(char *p);
void My_strcat(char *p,char *q,int n);
void Bubble(char *p);
char *My_free(char *p);
#endif
结果:

二、
定义5量车的信息,结构体成员包含【品牌,颜色,价格】
1>使用间接的方法定义结构体数组
2>定义函数,实现循环输入
3>定义结构体,实现循环输出4>定义函数,计算最贵的车辆信息
4.1先计算单价的最大值、以及最大值对应的下标4.2根据下标输出
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct car
{
char brand[50];
char colour[50];
double price;
};
struct car car1[5];
void In(struct car car1[]);
void Out(struct car car1[],int n);
void Put(struct car car1[]);
int main(int argc,const char * argv[])
{
In(car1);
int n=Max(car1);
Put(car1);
printf("\n");
Out(car1,n);
return 0;
}
void In(struct car car1[])
{
for(int i=0;i<5;i++)
{
printf("请输入第%d俩车的品牌:",i+1);
scanf("%s",car1[i].brand);
printf("请输入第%d俩车的颜色:",i+1);
scanf("%s",car1[i].colour);
printf("请输入第%d俩车的价格:",i+1);
scanf("%lf",&(car1[i].price));
}
}
void Put(struct car car1[])
{
printf("brand\tcolour\tprice\t");
for(int i=0;i<5;i++)
{
printf("%s\t%s\t%lf\t",car1[i].brand,car1[i].colour,car1[i].price);
printf("\n");
}
}
int Max(struct car car1[])
{
double max=0;
int maxl=0;
for(int i=0;i<5;i++)
{
if(i==0)
{
max=car1[i].price;
maxl=i;
}
if(max<car1[i].price)
{
max=car1[i].price;
maxl=i;
}
}
return maxl;
}
void Out(struct car car1[],int n)
{
printf("最贵车辆信息:\n");
printf("brand\tcolour\tprice\n");
printf("%s\t%s\t%lf\n",car1[n].brand,car1[n].colour,car1[n].price);
}
结果:
