C语言结构体:从函数返回结构体变量的值
在C语言中,结构体的定义有两种书写方式。
结构体变量的定义: struct student{char name[10], num[10];int score;};
此时在主类mian()方法中声明变量时必须要使用 struct student stu1。
用typedef定义数据类型: typedef struct student{int iNum; char cName[10]; double fCh, fMath, fEng; } STUDENT;
此时在主类main()方法中声明变量时使用 STUDENT stu1 。
习题:
程序的功能是:已知5名学生信息,从键盘输入学生姓名,根据姓名查找该学生是否存在,如果存在则输出学生信息,否则输出不存在提示。
#include <stdio.h>#include <string.h>/* User Code Begin(考生可在本行后添加代码,例如结构体类型的定义、函数原型声明等,行数不限) */typedef struct student //由main函数中的声明可知是用typedef定义{int iNum; char cName[10]; double fCh, fMath, fEng; } STUD;STUD *FindByName(STUD sTranscript[], int n, char name[16]); /* User Code End(考生添加代码结束) */int main(void){STUD sTranscript[] = { {1001, "jmddm", 69.5, 61.5, 91.5}, {1002, "痴情的大山", 92.5, 67.5, 81.5}, {1003, "xrpdys", 79.5, 67.5, 86.5 }, {1004, "活泼的身影", 83.0, 75.5, 84.0}, {1005, "kqdbl", 65.5, 81.5, 71.0} };STUD *stu;char name[16];printf("请输入你要查找的学生姓名: ");gets(name);stu = FindByName(sTranscript, 5, name); //调用函数查找信息if (stu){printf("n查找的学生信息为: ");printf("%d %s %.1f %.1f %.1fn", stu->iNum, stu->cName, stu->fCh, stu->fMath, stu->fEng);}else{printf("n你要查找的学生不存在!n");}return 0;}/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */STUD *FindByName(STUD sTranscript[], int n, char name[16]){int i;for (i = 0; i < n; i++){if (strcmp(sTranscript[i].cName, name) == 0) //字符串比较是否相同{return &sTranscript[i]; //返回该学生信息在数组中存放地址值}}return 0;}