C语言学习第15天结构体的引入

1. 结构体的引入(98.8.1)

  • demo.c
#include <stdio.h>

struct Student
{
	int num;
	char name[20];
	char sex;
	int age;
	double score;
	char addr[20];
};
struct Date
{
	int year;
	int month;
	int day;
};
struct Income
{
	int profit;
	int num;
};

int main()
{
	
	return 0;
}

2. 定义结构体和使用变量(99.8.2)

  • demo01.c
#include <stdio.h>
#include <string.h>

struct Student//结构类型,告诉系统这是一个结构体,模板 不赋值,
{
    int num;//成员变量
    char name[32];//成员变量
    char sex;
    int age;
    double score;
    char addr[32];//记得要写个数
};

int main()
{
	int a;
	
	struct Student stu1;//结构体变量
	struct Student stu2;//stu2是结构体的变量名
	
	a = 10;
	stu1.num = 1;//点运算符来访问结构体中的成员变量(域)
	strcpy(stu1.name,"Jessie");
	stu1.sex ='M';
	stu1.age = 24;
	stu1.score = 98.5;
	strcpy(stu1.addr,"郑州");
	
	printf("学号:%d,姓名:%s,性别:%c,年龄:%d,分数:%lf,地址:%s\n",
			stu1.num,stu1.name,stu1.sex,stu1.age,stu1.score,stu1.addr);
	return 0;
}

3. 小应用(100.8.3)

  • demo02.c 比较两个学生的成绩,输出成绩高的学生信息;用ifelse的方法
#include <stdio.h>
#include <string.h>

struct Student//结构类型,告诉系统这是一个结构体,模板 不赋值,
{
    int num;//成员变量
    char name[32];//成员变量
    char sex;
    int age;
    double score;
    char addr[32];//记得要写个数
};

int main()
{
	int a;
	
	struct Student stu1;//结构体变量
	struct Student stu2={2,"Oxygen",'M',20,99.5,"洛阳"};//stu2是结构体的变量名
	
	a = 10;
	stu1.num = 1;//点运算符来访问结构体中的成员变量(域)
	strcpy(stu1.name,"Jessie");
	stu1.sex ='M';
	stu1.age = 24;
	stu1.score = 98.5;
	strcpy(stu1.addr,"郑州");
	
	if(stu1.score<stu2.score){
		printf("成绩比较好的是:\n");
		printf("学号:%d,姓名:%s,性别:%c,年龄:%d,分数:%lf,地址:%s\n",
			stu2.num,stu2.name,stu2.sex,stu2.age,stu2.score,stu2.addr);
	}else{
		printf("成绩比较好的是:\n");
		printf("学号:%d,姓名:%s,性别:%c,年龄:%d,分数:%lf,地址:%s\n",
			stu1.num,stu1.name,stu1.sex,stu1.age,stu1.score,stu1.addr);
	}
	
	return 0;
}
  • demo03.c 比较两个学生的成绩,输出成绩高的学生信息;用max的方法
#include <stdio.h>
#include <string.h>

struct Student//结构类型,告诉系统这是一个结构体,模板 不赋值,
{
    int num;//成员变量
    char name[32];//成员变量
    char sex;
    int age;
    double score;
    char addr[32];//记得要写个数
};

int main()
{
	int a;
	
	struct Student stu1;//结构体变量
	struct Student stu2={2,"Oxygen",'M',20,99.5,"洛阳"};//stu2是结构体的变量名
	struct Student max;
	
	//a = 10;
	stu1.num = 1;//点运算符来访问结构体中的成员变量(域)
	strcpy(stu1.name,"Jessie");
	stu1.sex ='M';
	stu1.age = 24;
	stu1.score = 99.59;
	strcpy(stu1.addr,"郑州");
	
	max=stu1;
	
	if(stu1.score<stu2.score){
		max=stu2;
	}
	
	printf("成绩比较好的是:\n");
	printf("学号:%d,姓名:%s,性别:%c,年龄:%d,分数:%lf,地址:%s\n",
			max.num,max.name,max.sex,max.age,max.score,max.addr);
	
	return 0;
}
  • task01.c 自行输入学生信息
#include <stdio.h>
#include <string.h>

struct Student//结构类型,告诉系统这是一个结构体,模板 不赋值,
{
    int num;//成员变量
    char name[32];//成员变量
    char sex[32];//中文字符要用%s承接,所以要用字符数组
    int age;
    double score;
    char addr[32];//记得要写个数
};

int main()
{
	int a;
	
	struct Student stu1;//结构体变量
	struct Student stu2;//stu2是结构体的变量名
	struct Student max;
	
	printf("请输入第一个同学的信息:\n");
	
	printf("请输入序号:\n");
	scanf("%d",&stu1.num);
	printf("请输入姓名:\n");
	scanf("%s",&stu1.name);
	printf("请输入性别:\n");
	scanf("%s",&stu1.sex);
	printf("请输入年龄:\n");
	scanf("%d",&stu1.age);
	printf("请输入分数:\n");
	scanf("%lf",&stu1.score);
	printf("请输入所在地区:\n");
	scanf("%s",&stu1.addr);
	
	printf("请输入第二个同学的信息:\n");
	
	printf("请输入序号:\n");
	scanf("%d",&stu2.num);
	printf("请输入姓名:\n");
	scanf("%s",&stu2.name);
	printf("请输入性别:\n");
	scanf("%s",&stu2.sex);
	printf("请输入年龄:\n");
	scanf("%d",&stu2.age);
	printf("请输入分数:\n");
	scanf("%lf",&stu2.score);
	printf("请输入所在地区:\n");
	scanf("%s",&stu2.addr);
	
	max=stu1;
	
	if(stu1.score<stu2.score){
		max=stu2;
	}
	
	printf("成绩比较好的是:\n");
	printf("学号:%d,姓名:%s,性别:%s,年龄:%d,分数:%lf,地区:%s\n",
			max.num,max.name,max.sex,max.age,max.score,max.addr);
	
	return 0;
}

4. 结构体和数组的结合(101.8.4)

  • struct_arr.c
#include <stdio.h>

struct Student
{
    int num;
    char name[32];
    char sex[32];
    int age;
    double score;
    char addr[32];
};

int main()
{
	int arr[3]={2,5,4};
	int len;
	
	struct Student arr2[3]={
		{1,"Jessie","男",24,99.59,"郑州"},
		{2,"Oxygen","男",20,99.5,"洛阳"},
		{3,"Zhouzhou","男",21,97.6,"吉林"}
	};
	
	len=sizeof(arr2)/sizeof(arr2[0]);
	
	for(int i=0;i<len;i++){
		printf("学号:%d,姓名:%s,性别:%s,年龄:%d,分数:%lf,地址:%s\n\n",
			arr2[i].num,arr2[i].name,arr2[i].sex,arr2[i].age,arr2[i].score,arr2[i].addr);
	}

	return 0;
}

5. 结构体数组应用之选票系统(102.8.5)

  • xuanpiao.c
#include <stdio.h>
#include <string.h>

struct XuanMin
{
	char name[32];
	int tickets;
};

int main()
{
	struct XuanMin xm[3];
	struct XuanMin max;
	
	int i,j;
	int len = sizeof(xm)/sizeof(xm[0]);
	char tmpName[32];
	int mark = 0;
	int feiPiao = 0;
	
	//初始化选民信息
	
	for(i = 0; i<len; i++){
		xm[i].tickets = 0;
		printf("请输入第%d个选民的名字:\n",i+1);
		scanf("%s",xm[i].name);
	}
	//唱票环节
	for(i=0;i<5;i++){
		
		mark = 0;//标记废票
		printf("请输入你要投给谁:\n");
		memset(tmpName,'\0',sizeof(tmpName)); //每次清空一下
		scanf("%s",tmpName);//输入选中的选民名字,像拆开一个选票,看到名字一样
		for(j = 0;j<len; j++){ //拿到名字,对应候选人票数加1
			if(strcmp(tmpName, xm[j].name) == 0){
				xm[j].tickets++;
				mark  = 1;
			}
		}
		if(mark == 0){
			printf("没有此候选人,放弃\n");
			feiPiao++;
		}
	}
	//公布结果
	for(i=0;i<len;i++){
		printf("名字:%s,票数:%d\n",xm[i].name,xm[i].tickets);
	}
	max = xm[0];
	for(i=1;i<len;i++){
		if(max.tickets < xm[i].tickets){
			max = xm[i];
		}
	}
	printf("%s以%d票当选!废票有%d票。\n",max.name,max.tickets,feiPiao);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值