C语言结构体:从函数返回结构体变量的值(附习题)

C语言结构体:从函数返回结构体变量的值

在C语言中,结构体的定义有两种书写方式。

  1. 结构体变量的定义:
struct student
{
	char name[10], num[10];
	int score;
};

此时在主类mian()方法中声明变量时必须要使用 struct student stu1

  1. 用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, "张三丰", 69.5, 61.5, 91.5},  {1002, "李云龙", 92.5, 67.5, 81.5}, 
		{1003, "郭 靖",  79.5, 67.5, 86.5 },  {1004, "苗翠花", 83.0, 75.5, 84.0}, 
		{1005, "张无忌", 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 %.1f\n", 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;
}

你可能感兴趣的:(C结构体)