【无标题】

练习2:

(p+i)->(*(p+i)).

在堆区申请5个连续的存储空间,实现车辆信息的输入(品牌,颜色,价格)

1>调用函数在堆区申请空间

2>调用函数实现输入

3>调用函数对价格排序

4>调用函数输出

5>释放堆区空间

head.h

#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <stdlib.h>
struct cat 
{
char name[10];
char colour[10];
int  price;
};
struct cat *SPACE();
void Input(struct cat *p,int n);
void PRICE(struct cat *p,int n);
void PRINTF(struct cat *p,int n);
#endif

main.c

#include "head.h"
int main(int argc, const char *argv[])
{
    int n=5;
     struct cat *p = SPACE(n);
    Input(p,n);
    
     PRICE(p,n);
     PRINTF(p, n);
     free(p);
      return 0;
}

test.c

#include "head.h"
struct cat *SPACE(int n)
{
    struct cat *p=(struct cat*)malloc(sizeof(struct cat)*n);
    if(p==NULL)
        return NULL;
    else     

        return p;

}
void Input(struct cat *p,int n)
{
    int i=0;
    for(i=0;i<n;i++)
    {
        printf("请输入品牌名:\n");
        scanf("%s",(p+i)->name);
        printf("请输入车辆颜色:\n");
        scanf("%s",(p+i)->colour);
        printf("请输入价格:\n");
        scanf("%d",&(p+i)->price);


    }
}
void PRICE(struct cat *p,int n)
{
    int i,j;
    struct cat t;
    int count=0;
    for(i=0;i<n;i++)
    {
        count=0;
        for(j<0;j<n-i-1;j++)
        {
            if((p+j)->price>(p+j+1)->price)
            {
                t=*(p+j);
                *(p+j)=*(p+j+1);
                *(p+j+1)=t;
                count++;
            }
        }
        if(count==0)
            break;
    }
}
void PRINTF(struct cat *p,int n)
{
    
    for(int i=0;i<n;i++)
    {
        printf("品牌名:%s\t",(p+i)->name);
        printf("颜色:%s\t",(p+i)->colour);
        printf("价格:%d\n",(p+i)->price);
    }
}

练习1:定义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[20];
        int age;
        float score;
    };

void StructInput (struct student s[],int n);
void StructOutput (struct student s[],int n);
void maopaoscore(struct student s[],int n);
int  maxage(struct student s[],int n);
float adverg(struct student s[],int n);
#endif

main.c

#include "head.h"
int main(int argc, const char *argv[])
{
    struct student s[3];
    StructInput(s,3);
    printf("平均值:%.2f\n",adverg(s,3));
    maxage(s,3);
    maopaoscore(s,3);
    StructOutput(s,3);
    return 0;
}

test.c

#include "head.h"
void StructInput (struct student s[],int n)
{
    int i=0;
    for(i=0;i<n;i++)
    {
        printf("输入名字");
        scanf("%s",s[i].name);
        printf("输入年龄");
        scanf("%d",&s[i].age);
        printf("输入分数");
        scanf("%f",&s[i].score);

    }
}
void StructOutput (struct student s[],int n)
{
    int i=0;
    for(i=0;i<n;i++)
    {
        printf("姓名:%s\t",s[i].name);
        printf("年龄:%d\t",s[i].age);
        printf("分数:%.2f\n",s[i].score);
    }
    
}
float adverg(struct student s[],int n)
{
    float a=0;
    for(int i=0;i<n;i++)
    {
        a+= s[i].score;
    }
    return a/n;
}
int  maxage(struct student s[],int n)
{    int max=0;
    
    for(int i=0;i<n;i++)
    {
        if(i==0)
        {
            max=s[i].age;
        }
        if(max<s[i].age)
        {
            max=s[i].age;        
        }
    }
    return max;
}
void maopaoscore(struct student s[],int n)
{
    int i=0;
    int j=0;
    int count =0;
    struct student t;
    for(i=0;i<n;i++)
    {
        count =0;
        for(j=0;j<n-i-1;j++)
        {
            if(s[j].score>s[j+1].score)
            {
                t=s[j];
                s[j]=s[j+1];
                s[j+1]=t;
                count++;
            }
        }
        if(count==0)
            break;
    }
}

多文件编译

head.h

#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
void MyStrrev(char *p,int j);
char *MyStrcpy(char *s1,const char *s2,int i,int j);
int MyStrcmp(const char *s1,const char *s2);
void PRINTF(char *p);
long MyStrlen(const char *dest);
#endif

main.c

#include "head.h"
#include <stdio.h>
int main(int argc, const char *argv[])
{
    char arr[20]="ABCHC";
    char brr[]="HELLO";
    MyStrrev(arr,MyStrlen(arr));
    printf("%s\n",arr);    
        char *a = MyStrcpy(arr,brr,MyStrlen(arr),MyStrlen(brr));
        printf("%s\n",a);
        MyStrrev(arr,MyStrlen(arr));
    int sub=MyStrcmp(arr,brr);
    printf("%d\n",sub);

    

    return 0;
}

test.c

ude "head.h"


void MyStrrev(char *p,int j)

{
    int i;
    char t=0;
    for(i=0;i<j;i++)
    {
        t=*(p+i);
        *(p+i)=*(p+j-1);
        *(p+j-1)=t;
        j--;
    }
}
char *MyStrcpy(char *s1,const char *s2,int i,int j)
{
    
    
        while(*s2!='\0')
        {
            *s1=*s2;
            s1++;s2++;
        }

    *s1='\0';
    return s1-5 ;
}
int MyStrcmp(const char *s1,const char *s2)
{

    int k=0;int sub=0;

    while(*(s1+k)==*(s2+k)&&*(s1+k)!='\0')
    {
        k++;
    }
    if(*(s1+k)!=*(s2+k))
    {
        sub=*(s1+k)-*(s2+k);

        return sub;
    
    }
    else 
        return 0;

}
void PRINTF(char *p)
{
    int i=MyStrlen(p);

    for(int j=0;j<i;j++)

    {
        printf("%c",p[j]);
    }
    printf("\n");
}
long MyStrlen(const char *dest)
{    int i=0;
    while(*(dest))
    {
        dest++;
        i++;
    }
    
    return i;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值