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\n%d\n%.2f\n",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 != '\0') {
        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 != '\0') {
        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\n%d\n%.2f\n%.2f\n%.2f\n%.2f\n%.2f\n",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\n",(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\n",pp->name,pp->sex,pp->age);
        pp++;
    }
    
//6.
    char s1[] = "HappyYear";
    char s2[]=" New ";
    insert(s1, s2, 5);
    printf("%s\n",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;
}

posted @ 2014-03-14 16:53  lxl奋小斗  阅读(158)  评论(0编辑  收藏  举报