函数(结构体)

原创 2015年11月18日 21:19:04

//

//  main.m

//  C6_多文件,结构体

//

//  Created by dllo on 15/11/18.

//  Copyright © 2015 dllo. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "MyFunction.h"


int main(int argc, const char * argv[]) {

   

    //定义三个学生变量

//    Student stu1={20,'w',"jj",90};

//    Student stu2={25,'m',"zhangsan",66};

//    Student stu3={22,'m',"fd",78};

   // printStu(stu1);

    

  //  getMaxScore(stu1,stu2,stu3);

    

   ////三个学生,找到最高成绩,并返回

  //  printf("%.1f\n",maxScore(stu1,stu2,stu3));

//    

//   Student maxStu=getMaxScore(stu1,stu2,stu3);

//    printStu(maxStu);

//    

//    getMinAge(stu1,stu2,stu3);

//    

    

    //结构体数组

    Student stu1={20,'w',"zhangsan",60};

    Student stu2={22,'m',"lisi",53};

    Student stu3={16,'m',"wangwu",70.5};

    Student stu4={17,'w',"shenliu",90};

    Student stu5={19,'w',"tianqi",50};

    Student allStu[5]={stu1,stu2,stu3,stu4,stu5};

    //

//    int childCount = children(allStu,5);

//    printf("%d\n",childCount);

//    

    

    //

//    int passCount=passChildren(allStu, 5);

//    printf("%d\n",passCount);

    

    //

//    Student maxStu=getMaxScore(allStu, 5);

//    printStu(maxStu);

    //

//    sortByScore(allStu,5);

    

//    printf("%ld\n",sizeof(Test));

    

    Room room ={"yamfa4",stu1};

    printf("%s\n",room.stu.stuName);

    

    

    

    

    

    

    

    

    

    

    return 0;

}












///////////////////////////////////////////////////////////////////////

//

//  MyFunction.h

//  C6_多文件,结构体

//

//  Created by dllo on 15/11/18.

//  Copyright © 2015 dllo. All rights reserved.

//


#import <Foundation/Foundation.h>


//结构体的声明

struct student{

    int stuAge;

    char stuSex;

    char stuName[20];

    float score;

};

typedef struct student Student;

void printStu(Student stu);

//打印学生的所有信息

//void printStu(Student stu);

//

////参数是三个学生,把成绩最高的那个学生返回给主函数

//

//Student getMaxScore(Student stu1,Student stu2,Student stu3);

//

////三个学生,找到最高成绩,并返回

//float maxScore(Student stu1,Student stu2,Student stu3);

//

//

////

//Student getMinAge(Student stu1,Student stu2,Student stu3);

//

//

////找到数组里未成年的个数,并且返回

//int children(Student allStu[],int count);

//

//

////及格以上的成绩个数

//int passChildren(Student allStu[],int count);


//找到成绩最高的人,并返回

Student getMaxScore (Student allStu[],int count);


//对五个人依据成绩进行排序

void sortByScore(Student allStu[],int count);


struct test{

    int a;

    int c;

    char b;

   

    char arr[19];

};

typedef struct test Test;


//结构体的嵌套

struct classRoom{

    char roomName[20];

    Student stu;

};

typedef struct classRoom Room;





//////////////////////////////////////

//

//  MyFunction.m

//  C6_多文件,结构体

//

//  Created by dllo on 15/11/18.

//  Copyright © 2015 dllo. All rights reserved.

//


#import "MyFunction.h"


//void printStu(Student stu){

//    

//    printf("姓名:%s, 性别:%c, 年龄:%d, 成绩:%g\n",stu.stuName,stu.stuSex,stu.stuAge,stu.score);

//    //打印中文会影响代码提示

//}


void printStu(Student stu){

    printf("姓名:%s, 性别:%c, 年龄:%d, 成绩:%g\n",stu.stuName,stu.stuSex,stu.stuAge,stu.score);

}


//参数是三个学生,把成绩最高的那个学生返回给主函数

//Student getMaxScore(Student stu1,Student stu2,Student stu3){

//    Student maxScore=stu1.score>stu2.score?stu1:stu2;

//    maxScore.score>stu3.score?maxScore:stu3;

//    printf("%s\n",maxScore.stuName);

//    return maxScore;

//}

//三个学生,找到最高成绩,并返回

//float maxScore(Student stu1,Student stu2,Student stu3){

//    float maxScore=stu1.score>stu2.score?stu1.score:stu2.score;

//    return maxScore>stu3.score?maxScore:stu3.score;

//}


//找到年龄最小的人


//Student getMinAge(Student stu1,Student stu2,Student stu3){

//  

//    Student minAge=stu1.stuAge<stu2.stuAge?stu1:stu2;

//    printf("%s\n",minAge.stuName);

//    return minAge.stuAge<stu3.stuAge?minAge:stu3;

//}


Student getMinAge(Student stu1,Student stu2,Student stu3){

    Student minAge=stu1.stuAge<stu2.stuAge?stu1:stu2;

    printf("%s\n",minAge.stuName);

    return minAge.stuAge<stu3.stuAge?minAge:stu3;

}


//

int children(Student allStu[],int count){

    int num=0;

    for (int i=0; i<count ; i++) {

        if (allStu[i].stuAge<18) {

            num++;

        }

    }

    return num;


    

}


//

int passChildren(Student allStu[],int count){

    int num = 0;

    for (int i = 0; i< count; i++) {

        if (allStu[i].score>=60) {

            num++;

        }

    }

    return num;

}


//

//Student getMaxScore (Student allStu[],int count){

//    Student maxScore=allStu[0];

//    for (int i = 1; i<count; i++) {

//        maxScore=maxScore.score>allStu[i].score?maxScore:allStu[i];

//    }

//    printf("%s\n",maxScore.stuName);

//    return maxScore;

//    

//}


Student getMaxScore (Student allStu[],int count){

    

    Student maxStu={};

    for (int i =0; i<count; i++) {

        if (maxStu.score<allStu[i].score) {

            maxStu= allStu[i];

        }

    }

    return maxStu;

}



//

void sortByScore(Student allStu[],int count){

    

    for (int i = 0; i<count-1; i++) {

        for (int j = 0; j<count-1-i; j++) {

            if (allStu[j].score<allStu[j+1].score) {

                Student temp=allStu[j];

                allStu[j]=allStu[j+1];

                allStu[j+1]=temp;

                

            }

        }

    }

    for (int i = 0; i<count ; i++) {

        printStu(allStu[i]);

    }

}
























【C】结构体中包含函数

在《【C】Malloc与结构体,其实就是C语言里面的new和类》(点击打开链接)提到,C语言结构体里面也可以包含函数,如同类中有方法一样,但是不能通过直接放过一个函数进去,需要通过函数指针的方式,同时...
  • yongh701
  • yongh701
  • 2016年12月22日 17:21
  • 3170

原来结构体和函数是可以同名的

见识太少了。。。 #include struct _func{ int s; }; void _func(struct _func s) { printf("in function _func...
  • ghostyu
  • ghostyu
  • 2012年11月07日 11:29
  • 4078

指针结构体函数-其实可以这样详细理解

今天一大早登了下QQ空间,看到本科的一个学弟发表一篇日志,写关于西电微软俱乐部面试题的解答,写的很不错。我也一下子起兴了,因为我曾经也是被指针困惑很久,搞不清头绪,本科到研究生,我也笔试面试不下二十次...
  • A09211008
  • A09211008
  • 2014年08月28日 08:28
  • 1966

C++中的结构体函数

代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.c...
  • zhenganzhong_csdn
  • zhenganzhong_csdn
  • 2015年07月14日 18:21
  • 1858

结构体、结构体体指针作为函数返回值

函数使用结构体、结构体指针作为返回值分析32位机,gcc编译器使用结构体作为返回值分析反汇编代码可知,当被调用的子函数返回值为结构体的时候,调用函数将分配一段空间用于存放返回的结构体(使用一个结构体变...
  • dfq12345
  • dfq12345
  • 2017年06月29日 18:48
  • 3374

C++ 结构体中含有函数时sizeof结构体大小

C++中结构体可以包含函数,当含有函数时,结构体所占内存还是只有成员变量的大小吗?...
  • gjtboa
  • gjtboa
  • 2016年03月21日 11:35
  • 533

在函数中完成结构体的初始化

今天在实现一个单链表的时候
  • u014770281
  • u014770281
  • 2014年04月17日 19:16
  • 761

C语言结构体中定义函数指针详解

在学习嵌入式我们经常和结构体函数指针打交道,还有链表,环形缓冲区之类的,这里中点讲解结构体中定义函数指针。下面这个程序你看一遍你基本也明白用法了。 下面是我写的一个很简单的程序struct.c #in...
  • qq_21792169
  • qq_21792169
  • 2015年12月30日 17:24
  • 21557

结构体定义与作为函数参数的结构

在结构体内部如下定义是违法的: struct s {     int a;     struct s b; } 因为内部包含自己的成员永远不会终止,类似递归。 但是如下定义是合法的: struct s...
  • zhang_yin_liang
  • zhang_yin_liang
  • 2016年08月24日 20:20
  • 1706

C语言结构体中的函数指针与函数

1、函数指针 一般的函数指针可以这么定义: int(*func)(int,int); 表示一个指向含有两个int参数并且返回值是int形式的任何一个函数指针. 假如存在这样的一个函...
  • xcxinghai
  • xcxinghai
  • 2011年08月29日 15:42
  • 5718
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:函数(结构体)
举报原因:
原因补充:

(最多只允许输入30个字)