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;
    }

  • 相关阅读:
    Knockout应用开发指南 第八章:简单应用举例(2)
    微软ASP.NET站点部署指南(7):生产环境部署
    Knockout应用开发指南 第七章:Mapping插件
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(6)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(5)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(3)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(9)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(8)
    Microsoft Visual Studio .NET 2003 引导程序插件下载地址(非官方)
    Vs2010在没有安装SQL Server 2005/2008 Express时如何连接MDF数据文件?
  • 原文地址:https://www.cnblogs.com/lxllanou/p/3600912.html
Copyright © 2011-2022 走看看