zoukankan      html  css  js  c++  java
  • ios学习记录 day12

    练习:

    MyFunction.h

    #import <Foundation/Foundation.h>

    struct sanguosha {
        char name[20];
        int age;
        float fighting;
    };
    typedef struct sanguosha SGS;
    //1.定义一个用来记录学生信息结构体,结构体有三个成员变量:姓名,年龄以及成绩
    struct stu {
        char name[20];
        char sex;
        int age;
    };
    //2.定义一个结构体Node,结构体内有两个成员变量,一个是一个int类型的变量(名字自己取),另一个是Node类型的指针
    struct Node {
        int num;
        struct Node * p;
    };
    //5.
    void fuzhi(struct stu * p,int count);
    //6.
    void move(char * s);
    void insert(char *s1,char *s2,int pos);
    //
    void printStruct(SGS * per);
    //1.定义一个用来存放学生信息的结构体,该结构体包含姓名,年龄,语文成绩,数学成绩,英语成绩,总成绩,平均成绩
    struct student {
        char name[20];
        int age;
        float chinese;
        float math;
        float english;
        float sum;
        float avg;
    };
    typedef struct student Stu;

    void inputStudent(Stu * arr,int count);

    void bubbleSort(Stu * p,int count);

    void avgStu(Stu * arr,int count);

    //8.定义一个结构体node,其中含有一个Stu和一个node类型的结构体指针p。定义两个node类型的变量a和b。要求a中的p指向b,b中的p指向a。
    struct node1{
        Stu stu;
        struct node1 * p;//结构体指针
    };
    typedef struct node1 nod;

    MyFunction.m

    #import "MyFunction.h"


    void printStruct(SGS * per){
        printf("%s %d %.2f ",per->name,per->age,per->fighting);
    }
    //5.定义一个形参为指针类型的自定义函数,其功能是为第三题所定义的结构体数组赋值
    void fuzhi(struct stu * p,int count){
        for (int i = 0; i < count; i++) {
            scanf("%s %c,%d",p->name,&p->sex,&p->age);//name是数组不用加&,sex age 需要用&取出地址
            p++;
        }
    }

    //6、编写函数insert(char *s1,char *s2,int pos),实现在字符串s1中的指定位置pos处插入字符串s2。(花了我1天的编程时间2010.3.12)
    //HappyYear
    //New
    //7
    //Happy New Year
    //思路:
    //1.s1字符串找第pos个位置
    //2.将pos位置后的元素顺移动一位,插入s2字符串中一个元素
    //3.接着插入直到s2字符串结束
    void move(char * s){
        char * p = s;
        int length = 0;
        while (*p != '') {
            p++;
            length++;
        }
        for (int i = 0; i < length; i++) {
            *(p + 1) = *p;//*p往后一位*p+1移动
            p--;
        }
    }
    void insert(char *s1,char *s2,int pos){
        char * p = s1;
        for (int i = 0; i < pos - 1; i++) {
            p++;
        }
        char * pp = s2;
        while (*pp != '') {
            move(p);
            p++;
            *p = *pp;
            pp++;
        }
    }
    //4.定义一个函数用来实现对第二题定义数组中的内容赋值,形参为指针类型
    void inputStudent(Stu * arr,int count){
        for (int i = 0; i <count; i++) {
            scanf("%d",&arr[i].age);
            scanf("%s",arr[i].name);
            scanf("%f",&arr[i].chinese);
            scanf("%f",&arr[i].math);
            scanf("%f",&arr[i].english);
        }
    }
    //5.定义并实现一个函数,其功能为按照年龄从小到大的顺序为第二题定义的数组排序,形参为指针类型
    void bubbleSort(Stu * arr,int count){
        for (int i = 0; i < count - 1; i++) {
            for (int j = 0; j < count - i - 1; j++) {
                if (arr[j].age > arr[j + 1].age) {
                    Stu temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
    //6.定义并实现一个函数,其功能为为第二题定义的数组中的每一个元素求出平均值
    void avgStu(Stu * arr,int count){//arr是结构体数组名,count是人数
        for (int i = 0; i < count; i++) {
            arr[i].avg = (arr[i].chinese + arr[i].english + arr[i].math) / 3.0;
        }
    }
    //7.定义并实现一个函数,其功能为打印第二题中定义结构体的所有元素,参数类型为指针类型
    void printStudent(Stu * arr,int count){//数组基本形参里有个count
        for (int i = 0; i < count; i++) {
            printf("%s %d %.2f %.2f %.2f %.2f %.2f ",arr[i].name,arr[i].age,arr[i].chinese,arr[i].english,arr[i].math,arr[i].sum,arr[i].avg);
        }
    }

    main.m

    #import <Foundation/Foundation.h>
    #import "MyFunction.h"
    int main(int argc, const char * argv[])
    {
        SGS per1 = {"guansheng",33,39};
        SGS per2 = {"linchong",43,79};
        SGS per3 = {"qinming",53,69};
        SGS per4 = {"huyanzhuo",44,59};
        SGS per5 = {"dongping",33,89};
        
        SGS per[5] = {per1,per2,per3,per4,per5};
        SGS * p = per;
        printf("%s ",(p + 1)->name);// p[1].name

        printStruct(p + 4);
        
    //3.定义一个长度为10的学生信息结构体数组
        struct stu xuesheng[10] = {"",' ',0};
    //4.定义一个结构体指针,指向上一题的结构体数组
        struct stu * pp = xuesheng;
        
    //5.
        fuzhi(pp,3);
        for (int i = 0; i < 3; i++) {
            printf("%s,%c,%d ",pp->name,pp->sex,pp->age);
            pp++;
        }
        
    //6.
        char s1[] = "HappyYear";
        char s2[]=" New ";
        insert(s1, s2, 5);
        printf("%s ",s1);
        
    //2.定义一个长度为10的结构体(第一题定义的结构体)数组
        Stu stu[10] = {0};
    //3.定义一个结构体指针指向上题所定义的结构体数组
        Stu * p = stu;
    //4.
        inputStudent(p, 10);//intputStudent(stu,10);
    //5.
        bubbleSort(p, 10);//bubbleSort(stu, 10);
    //6.
        avgStu(p, 10);//avgStu(stu,10);
    //8.
        nod a = {0};
        nod b = {0};
        a.p = &b;
        b.p = &a;

        return 0;
    }

  • 相关阅读:
    elementui组件库eldialog弹出框被遮罩层挡住
    python常规基础操作
    python中的字典排序
    python列表面试题
    python logging日志模块
    python序列之列表
    jmeter中csv连接数据库
    python必会的知识基础
    jmeter tcp 压力测试
    python模块基础知识练习
  • 原文地址:https://www.cnblogs.com/lxllanou/p/3600912.html
Copyright © 2011-2022 走看看