栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言】第八章结构体

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言】第八章结构体

1.1结构体引入

1.为什么要用结构体?——>可以用来表示多个不同类型为一个结构体、比如学生信息

对比于数组——>数组的类型要相同

定义一个结构体——>结构体为模板不赋值

struct Student //struct作用是告知系统是一个结构体 Student中的S开头要大写
{
    int num;
    char name[32];
    char sex;
    int age;
    double score;
    char addr[32];
    
};//分号要加
1.2定义结构体和使用变量

int a;

int 相当于结构体的struct Student

a相当于给结构体定义一个变量名stu1、stu2

a = 10;

在结构体中赋值相当于stu1.num = 1;

#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;
    a = 10;
    stu1.num = 1;//点是运算符来访问结构体中的成员变量(域)
    stu1.age = 10;
    stu1.score = 98.5;
    strcpy(stu1.name,"aabbccdd");
    strcpy(stu1.addr,"福州");

    printf("学号:%d,年龄:%d,分数:%lf,名字:%s,地址:%s",stu1.num,stu1.age,stu1.score,stu1.name,stu1.addr);
    return 0;
}

直接初始化: struct Student stu2 = {2,”张三“,‘g’,17,98.5,"北京"};

 1.3小应用

例:输入两个学生的名字,学号,成绩,输出成绩高的学生的信息

方法一:if-else判断两个同学哪个成绩好

 

#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,"张三",'g',17,99.5,"北京"};
	
	a = 10;
	stu1.num = 1;
	stu1.age = 10;
	stu1.score = 98.5;
	strcpy(stu1.name,"chenlichen");
	strcpy(stu1.addr,"福州");
	//方法一:利用if-else的方法比较两个同学的成绩 
	if(stu1.score < stu2.score)
	{
		printf("成绩比较好的是:n");
		printf("学号:%d,年龄:%d,分数:%lf,名字:%s,地址:%sn",
			stu2.num,stu2.age,stu2.score,stu2.name,stu2.addr);	
	}
	else
	{
		printf("成绩比较好的是:n");
		printf("学号:%d,年龄:%d,分数:%lf,名字:%s,地址:%sn",
			stu1.num,stu1.age,stu1.score,stu1.name,stu1.addr);	
	}
	
	return 0; 
}

方法二:利用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,"张三",'g',17,99.5,"北京"};
	struct Student max;//定义一个变量存放最大成绩 
	a = 10;
	stu1.num = 1;
	stu1.age = 10;
	stu1.score = 98.5;
	strcpy(stu1.name,"chenlichen");
	strcpy(stu1.addr,"福州");
	
	max = stu1;//比较之前默认等于stu1 
	if(stu1.score < stu2.score)
	{
		max = stu2;//如果stu2大于stu1改变输出时候的变量 
	}
		printf("成绩比较好的是:n");
		printf("学号:%d,年龄:%d,分数:%lf,名字:%s,地址:%sn",
			max.num,max.age,max.score,max.name,max.addr);//输出时候用max替代变量	
	
	return 0; 
}

 1.4结构体和数组的结合 

int arr [3] = {1,2,3};        //普通定义3个整形函数

前面说过int就相当于struct Student

struct Student arr2[3] = {
        {2,"张三",'g',17,99.5,"北京"},
        {3,"李四",'m',18,89.2,"上海"},
        {4,"王五",'f',19,100,"内蒙"}
    };

每一项都是结构体可以不同的类型

#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 arr[3] = {1,2,3};
	int len; //存放计算数组的长度的值 
	int i;
	
	struct Student arr2[3] = {
		{2,"张三",'g',17,99.5,"北京"},
		{3,"李四",'m',18,89.2,"上海"},
		{4,"王五",'f',19,100,"内蒙"}
	};//定义一个结构体数组 
	len = sizeof(arr2)/sizeof(arr2[0]);//计算数组长度 
	for(i=0;i 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/989473.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号