# 函数(结构体)

//

//  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】结构体中包含函数

• yongh701
• 2016年12月22日 17:21
• 3170

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

• ghostyu
• 2012年11月07日 11:29
• 4078

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

• A09211008
• 2014年08月28日 08:28
• 1966

## C++中的结构体函数

• zhenganzhong_csdn
• 2015年07月14日 18:21
• 1858

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

• dfq12345
• 2017年06月29日 18:48
• 3374

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

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

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

• u014770281
• 2014年04月17日 19:16
• 761

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

• qq_21792169
• 2015年12月30日 17:24
• 21557

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

• zhang_yin_liang
• 2016年08月24日 20:20
• 1706

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

1、函数指针 一般的函数指针可以这么定义: int(*func)(int,int); 表示一个指向含有两个int参数并且返回值是int形式的任何一个函数指针. 假如存在这样的一个函...
• xcxinghai
• 2011年08月29日 15:42
• 5718

举报原因： 您举报文章：函数(结构体) 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)