数据库DAY1-结构体

作业

一、

在堆区申请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);

}

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值