C语言基础——结构体及基础结构体题目

1.结构体,把描述同一个事物的多个变量放在一起,构成一个结构体

/*结构体结构举例(学生信息表)*/
struct student      //结构体名称
{
	int number;	    //学生学号	
	char name[20];	//学生姓名
	int age;	    //学生年龄	
	int score;	    //学生成绩
};

现在根据基础结构体举个例子:定义一个结构体worker,有成员:姓名、编号、年龄、工资(float)。输入信息,并输出。

#include <stdio.h>
struct worker//定义结构体
{
	int number;
	char name[20];
	int age;
	float salary;
};
int main()
{
	struct worker w1;//结构体成员
	scanf("%d%s%d%f", &w1.number, w1.name, &w1.age, &w1.salary);//输入信息
	printf("%d,%s,%d,%.2f\n", w1.number, w1.name, w1.age, w1.salary);//输出信息
}
//运行成果
linux@ubuntu:~/c++$ ./a.out
1001 xiaodi 22 12000
1001,xiaodi,22,12000.00

:普通结构体的成员访问用“.”,举例为“s.number”,而结构体指针访问成员用“->”,举例为“s->number”。
现在举一个结构体指针的例子:写一个函数,传入n个student,查询其中年龄 > 25的student,并且输出该student的基本信息(调用print_student函数)

#include <stdio.h>
struct student		
{
	int number;
	char name[20];
	int age;	
	int score;
};
void print_student(struct student *s)
{
	printf("%d, %s, %d, %d\n", s->number, s->name, s->age, s->score);
}
void find_by_age(struct student *s, int n, int age)
{
	int i;
	for(i = 0; i < n; i++)
	{
		if(s[i].age > age)
		{
			print_student(&s[i]);
		}
	}
}
int main()
{
	struct student s[3] = {	{1001, "xiaoli", 25, 95},
                        {1002, "xiaowang", 26, 90},
                        {1003, "xiaozhang", 27, 85}
			};
	find_by_age(s, 3, 25);
}
//运行结果
linux@ubuntu:~/c++$ ./a.out
1002, xiaowang, 26, 90
1003, xiaozhang, 27, 85

结构体是一种可以灵活的表示出大量数据的集合,结构体不但在C语言中运用广泛,在C++中同样有所应用。这些在后面的C++篇章中会进行总结。

现在最后举一个关于结构体的例题:
1 定义时间结构体: 包含年、月、日成员
2 完成set_date函数
函数声明如下: void set_date(struct date *p, int y, int m, int d);
3 完成print_date函数
函数声明如下: void print_date(struct date *p);
4 完成main函数,实现如下功能:
1) 定义 时间结构体变量 d1
2) 输入时间,并使用set_date函数设置给变量d1
3) 使用print_date函数输出设置的时间

#include <stdio.h>
struct date
{
	int year;
	int month;
	int day;
};

void set_date(struct date *p, int y, int m, int d)
{
	p->year = y;
	p->month = m;
	p->day = d;
}

void print_date(struct date *p)
{
	printf("%d-%d-%d\n", p->year, p->month, p->day);//注意结构体指针的格式
}

int main()
{
	struct date d1;
	int y, m, d;
	scanf("%d%d%d", &y, &m, &d);
	set_date(&d1, y, m, d);	
	print_date(&d1);
}

PS:关于结构体的基础内容就总结到这里,在之后的许多项目或者题目中都离不开结构体,所以一定要认真的学习结构体。如有瑕疵还请评论区纠正,辛苦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值