首页 > 其他分享 >struct的精确用法

struct的精确用法

时间:2024-09-22 12:50:15浏览次数:3  
标签:精确 boy 12 struct int 用法 student girl

目录

我终于回来啦!

1,可以创造根据结构体格式的成员或数组。

普通成员

 数组成员

2,可以用指针遍历成员

3,使用typedef

---------------------------------------------------------------------------------------------------------------------------------

今天我整理了一些struct的用法,但我先说一声:

我终于回来啦!

前几天一直没空,因为今天有空,所以今天更新一下。那么首先第一个用法是:

1,可以创造根据结构体格式的成员或数组。

普通成员

我们先看下列例子:

#include <stdio.h>
#include<iostream>
struct student
{
    char name[20];
    int age;
    char sex[7];
    int score;
};student stu1 = {"Wang.x.m",12,"boy",90};
int main(){
	std::cout<<stu1.name<<" "<<stu1.age<<" "<<stu1.sex<<" "<<stu1.score;
}

这个代码很简单,首先创造一个经典结构体struct,然后在结构体里创建了变量name,age,sex和,score,之后创建一个结构体成员,最后打印。

运行结果:

 数组成员

但是如果成员有10个,那么根据前面的就只能这么写:

#include <stdio.h>
#include <iostream>
struct student
{
    char name[20];
    int age;
    char sex[7];
    int score;
};
int main()
{
    student stu1 = {"Wang.x.m", 12, "boy", 90};
    student stu2 = {"Li.y.n", 13, "girl", 85};
    student stu3 = {"Zhang.z.o", 11, "boy", 92};
    student stu4 = {"Chen.a.p", 14, "boy", 88};
    student stu5 = {"Liu.b.q", 12, "girl", 91};
    student stu6 = {"Sun.c.r", 13, "boy", 87};
    student stu7 = {"Zhao.d.s", 11, "girl", 93};
    student stu8 = {"Wu.e.t", 14, "boy", 86};
    student stu9 = {"Zhou.f.u", 12, "girl", 94};
    student stu10 = {"Qian.g.v", 13, "boy", 89};
    std::cout << stu1.name << " " << stu1.age << " " << stu1.sex << " " << stu1.score << std::endl;
    std::cout << stu2.name << " " << stu2.age << " " << stu2.sex << " " << stu2.score << std::endl;
    std::cout << stu3.name << " " << stu3.age << " " << stu3.sex << " " << stu3.score << std::endl;
    std::cout << stu4.name << " " << stu4.age << " " << stu4.sex << " " << stu4.score << std::endl;
    std::cout << stu5.name << " " << stu5.age << " " << stu5.sex << " " << stu5.score << std::endl;
    std::cout << stu6.name << " " << stu6.age << " " << stu6.sex << " " << stu6.score << std::endl;
    std::cout << stu7.name << " " << stu7.age << " " << stu7.sex << " " << stu7.score << std::endl;
    std::cout << stu8.name << " " << stu8.age << " " << stu8.sex << " " << stu8.score << std::endl;
    std::cout << stu9.name << " " << stu9.age << " " << stu9.sex << " " << stu9.score << std::endl;
    std::cout << stu10.name << " " << stu10.age << " " << stu10.sex << " " << stu10.score << std::endl;
    return 0;
}

这种代码十分不整洁,既不好看还效率低,这时候我们可以运用数组:

#include <stdio.h>
#include <iostream>
struct student
{
    char name[20];
    int age;
    char sex[7];
    int score;
};
int main()
{
    student students[10] = {
        {"Wang.x.m", 12, "boy", 90},
        {"Li.y.n", 13, "girl", 85},
        {"Zhang.z.o", 11, "boy", 92},
        {"Chen.a.p", 14, "boy", 88},
        {"Liu.b.q", 12, "girl", 91},
        {"Sun.c.r", 13, "boy", 87},
        {"Zhao.d.s", 11, "girl", 93},
        {"Wu.e.t", 14, "boy", 86},
        {"Zhou.f.u", 12, "girl", 94},
        {"Qian.g.v", 13, "boy", 89}
    };
    for (int i = 0; i < 10; i++)
    {
        std::cout << students[i].name << " " << students[i].age << " " << students[i].sex << " " << students[i].score << std::endl;
    }
    return 0;
}

这样就比上一个少了900多个字符。

2,可以用指针遍历成员

但是这样需要0.58秒才能运行,很容易让我们等死,如果你想让运行得快一点,那么可以运用指针:

#include <stdio.h>
#include <iostream>
struct student
{
    char name[20];
    int age;
    char sex[7];
    int score;
};
int main()
{
    student students[10] = {
        {"Wang.x.m", 12, "boy", 90},
        {"Li.y.n", 13, "girl", 85},
        {"Zhang.z.o", 11, "boy", 92},
        {"Chen.a.p", 14, "boy", 88},
        {"Liu.b.q", 12, "girl", 91},
        {"Sun.c.r", 13, "boy", 87},
        {"Zhao.d.s", 11, "girl", 93},
        {"Wu.e.t", 14, "boy", 86},
        {"Zhou.f.u", 12, "girl", 94},
        {"Qian.g.v", 13, "boy", 89}
    };
    student* ptr = students;
    for (int i = 0; i < 10; i++)
    {
        std::cout << ptr->name << ptr->age << ptr->sex << ptr->score;
        ptr++;
    }
    return 0;
}

3,使用typedef

但这样比之前也快了0.05秒。有没有更快的方法呢?有,使用typedef关键词,比如这样:

#include <stdio.h>
struct student
{
    char name[20];
    int age;
    char sex[7];
    int score;
};
typedef student Stu;
int main()
{
    Stu students[10] = {
        {"Wang.x.m", 12, "boy", 90},
        {"Li.y.n", 13, "girl", 85},
        {"Zhang.z.o", 11, "boy", 92},
        {"Chen.a.p", 14, "boy", 88},
        {"Liu.b.q", 12, "girl", 91},
        {"Sun.c.r", 13, "boy", 87},
        {"Zhao.d.s", 11, "girl", 93},
        {"Wu.e.t", 14, "boy", 86},
        {"Zhou.f.u", 12, "girl", 94},
        {"Qian.g.v", 13, "boy", 89}
    };
    Stu* ptr = students;
    for (int i = 0; i < 10; i++)
    {
        printf("%s %d %s %d\n", ptr->name, ptr->age, ptr->sex, ptr->score);
        ptr++;
    }
    return 0;
}

这样写可以直接把运行速度飙升到:

4.格式环节

结构体创造:

struct 结构体名{
    格式1
    格式2
    格式3
      .
      .
      .
    格式n
};

成员创造:

普通成员:
struct 结构体名 结构体成员名 = {结构体变量1,结构体变量2,结构体变量3・・・结构体变量n};
数组成员:
struct 结构体名 结构体成员[n]={{结构体变量1.1,结构体变量1.2,结构体变量1.3···结构体成员1.n},
                             {结构体变量2.1,结构体变量2.2,结构体变量2.3···结构体成员2.n},
                             {结构体变量3.1,结构体变量3.2,结构体变量3.3···结构体成员3.n},
                                                         .
                                                         .
                                                         .
                             {结构体变量n.1,结构体变量n.2,结构体变量n.3···结构体成员n.n}};

5.出题环节 

最后该大家出点题:

【1,输出平均数】

请使用struct计算输入的n个平均数。

样例

输入:

5

6.7 8.2 1.3 2.9 7.9

输出:

20.68

【2, 输出总成绩】

请使用 struct 计算输入的 n 个学生成绩的总成绩。

样例:

输入:

3

85 90 88

输出:

263

【3, 输出最高分】

请使用 struct 找出输入的 n 个学生成绩中的最高分。

样例:

输入:

4

78 89 92 84

输出:

92

如果有什么没讲的话,我会尽快更新《sturct的用法第2期》

标签:精确,boy,12,struct,int,用法,student,girl
From: https://blog.csdn.net/sidso/article/details/142433992

相关文章

  • CRICOS Data Structures and Algorithms Trees
    DataStructuresandAlgorithmsTreesPage1of3CRICOSProvideCode:00301JNote:DSATreeNodehasalreadybeenwrittenforyou,butyou’llneedtounderstandandtestit.Thecodeforfind()wasalreadyimplementedforyou-insert()anddelete()are......
  • node nvm 基础用法
    NVM(NodeVersionManager)是一个用于管理多个Node.js版本的工具。它允许你在同一台机器上安装和切换不同版本的Node.js,而不会相互干扰。以下是NVM的一些基础用法:安装NVM:在Linux或macOS上,你可以使用CURL或WGET来安装NVM。例如,使用CURL:curl-o-https://raw.githubuserconte......
  • Excel--DATEDIF函数的用法及参数含义
    DATEDIF函数的用法为:DATEDIF(start_date,end_date,unit),start_date表示的是起始时间,end_date表示的是结束时间。unit表示的是返回的时间代码,是天、月、年等。如下:Datedif函数的参数含义unit参数返回值的意义"y"两个时间段之间的整年数"m"两个时间段之间的整月数"d"两个时......
  • python关于pymysql 执行sql语句in的用法
    今天在执行python代码中发现一个有意思的事,直接看代码注意如下红色部分name='张三'ids=1,2,3sql="selectNAME,NUM,SEXfromTEMP_TWHERENAME=%sandidin(%s)"param=(name,ids)cursor.execute(sql,param) 发现实际执行的sql语句是:selectNAM......
  • 【论文阅读笔记】【Hand Pose Estimation-Interacting Hand】 Interacting Two-Hand 3
    ICCV2021读论文思考的问题论文试图解决什么问题?写作背景是什么?问题:如何针对性解决双手手势识别里出现的重度遮挡以及深度交互的问题?背景:由于严重的遮挡和交互特点,先前针对单手手势识别设计的模型不能很好地应用到双手的情景中文章提出了什么样的解决方法?提出......
  • saltstack高级用法
    一、saltstack的高级用法 一、job管理1、job简介Jid:jobid,格式为%Y%m%d%H%M%S%fmaster在下发指令消息时,会附带上产生的Jid,minion在接收到指令开始执行时,会在本地的cachedir(默认是/var/cache/salt/minion/)下的proc目录产生以Jid命名的文件,用于在执行过程中master查看当......
  • C#——fixed用法
    1.fixed语句*固定用于指针操作的变量;*可防止垃圾回收器重新定位可移动变量,并声明指向该变量的指针;*固定变量的地址,在语句的持续时间内不会更改*fixed语句中,只能使用声明的指针,声明的指针是只读的,无法修改*fixed语句只能在不安全的上下文中使用staticvoidMain(str......
  • C和指针:结构体(struct)和联合(union)
    结构体和联合结构体结构体包含一些数据成员,每个成员可能具有不同的类型。数组的元素长度相同,可以通过下标访问(转换为指针)。但是结构体的成员可能长度不同,所以不能用下标来访问它们。成员有自己的名字,可以通过名字访问成员。结构声明在声明结构时,必须列出它包含的所有成员。struct......
  • zipfile一些常用用法
    zipfile是Python标准库中的一个模块,用于创建、读取、写入和管理ZIP压缩文件。它可以处理文件压缩和解压缩,支持多种模式。以下是zipfile模块的一些常用用法及示例:1.创建ZIP文件并写入内容zipfile.ZipFile支持通过'w'模式创建ZIP文件并写入文件。importzipfile#......
  • 《深度学习》PyTorch 常用损失函数原理、用法解析
    目录一、常用损失函数1、CrossEntropyLoss(交叉熵损失)        1)原理    2)流程        3)用法示例2、L1Loss(L1损失/平均绝对误差)    1)原理        2)用法示例3、NLLLoss(负对数似然损失)    1)原理    2)用法示例......