定义struct结构体数组

2023-05-16

题目要求:
有3个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果。
解题思路:
设一个结构体数组,数组中包含3个元素
每个元素中的信息应包括候选人的姓名(字符型)和得票数(整型)
输入被选人的姓名,然后与数组元素中的“姓名”成员比较,如果相同,就给这个元素中的“得票数”成员的值加1
输出所有元素的信息

说明:
(1)定义结构体数组一般形式是
① struct 结构体名
    {成员表列} 数组名[数组长度];
② 先声明一个结构体类型,然后再用此类型定义结构体数组:
     结构体类型  数组名[数组长度];
   如:
     struct Person  leader[3]; 


(2)对结构体数组初始化的形式是在定义数组的后面加上:
={初值表列}; 
 如:
struct Person  leader[3]= {"Li",0,"Zhang",0,"Fun",0}; 
/* Note:Your choice is C IDE */
#include "stdio.h"

struct Person{
 char name[20];//姓名
 int count;//票数
}a[3]={"li",0,"zhang",0,"liu",0};//a[3]为全局的结构体数组

void main()
{
    int i,j;
    char b[20];
    printf("请输入10个人的投票的结果:");
    for(i=0;i<10;i++){
     scanf("%s",b);//读人10个人的投票姓名
     for(j=0;j<3;j++)
     if(strcmp(b,a[j].name)==0)//stcmp函数比较字符串的大小,若两个字符串大小相等则结果为0
     a[j].count++;//人数累加
    }
    for(i=0;i<3;i++)
    printf("%5s:%d\n",a[i].name,a[i].count);
}


结果显示:
请输入10个人的投票的结果:li li li li liu liu zhang zhang zhang zhang
   li:4
zhang:4
  liu:2

题目要求:
有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息。
解题思路:
用结构体数组存放n个学生信息,采用选择法对各元素进行排序(进行比较的是各元素中的成绩)。

/* Note:Your choice is C IDE */
#include "stdio.h"

struct Student{
  int num; 
  char name[20]; 
  float score; 
   };//注意,分号不能省略 

void main()
{
    struct Student stu[5]={
     {10101,"Zhang",78},
        {10103,"Wang",98.5},
        {10106,"Li",86.9},
        {10108,"Ling",73.5},
        {10110,"Fun",100}  
    };//分号不可省略
    const int n=5;// const是一个C语言的关键字,它限定一个变量不允许被改变。
    //若有30个人则 const  int  n=30;
    //const  int  n=5;相当于在最上面直接定义,即 #define N 5
    //一旦被修饰就不能被赋值改变。当const int n=5之后再令n=9就是错的
    int i,j;
    struct Student k;
    for(i=0;i<n-1;i++){//冒泡排序
     for(j=0;j<n-1-i;j++)
     if(stu[j+1].score>stu[j].score){
      k=stu[j];
      stu[j]=stu[j+1];
      stu[j+1]=k;
      }
    }
    for(i=0;i<n;i++)
    printf("%6d %8s %6.2f\n",stu[i].num,stu[i].name,stu[i].score);
}


结果显示:
  10110      Fun 100.00
 10103     Wang  98.50
 10106       Li  86.90
 10101    Zhang  78.00
 10108     Ling  73.50
上面代码进行优化   1
函数的调用
/* Note:Your choice is C IDE */
#include "stdio.h"
void sort(struct Student stu[],int n);
struct Student{
  long int num; 
  char name[20]; 
  float score; 
   };
void main()
{
    struct Student stu[3]={
        {2019010,"Meng",69.7},
        {2019012,"Liu",78.9},
        {2019014,"Zhang",98.5}
    };
    int i,n=3;
    sort(stu,n);
    for(i=0;i<n;i++)
    printf("%6ld %8s %6.1f\n",stu[i].num,stu[i].name,stu[i].score);
}
void sort(struct Student stu[],int n){
 int i,j;
 struct Student k;
    for(i=0;i<n-1;i++){//冒泡排序
     for(j=0;j<n-1-i;j++)
     if(stu[j+1].score>stu[j].score){
       if(stu[j+1].score>stu[j].score){
      k=stu[j];
      stu[j]=stu[j+1];
      stu[j+1]=k;
      }
    }
    }
}



结果显示:
2019014    Zhang   98.5
2019012      Liu   78.9
2019010     Meng   69.7
上面的代码进行优化     2
函数的调用
#include "stdio.h"
void sort(struct student src[3],int n);//全局函数声明 
struct student
    {
     long xuehao;
     char name[20];
     int grade;
    };//全局结构体类型 声明 
int main()
{
 int i;
    struct student src[3]={//定义结构体类型数组,并且初始化 
     {2019052,"a",69},
        {2019051,"b",78},
        {2019053,"c",70}   
    };
  sort(src,3);
   for(i=0;i<3;i++){
  printf("%ld %8s %d\n",src[i].xuehao,src[i].name,src[i].grade);
 }
}
void sort(struct student src[3],int n)
{
 int j=0,i=0;
struct student temp;
 for(j=2;j>0;j--){
  for(i=0;i<j;i++){
   if(src[i+1].grade>src[i].grade){ 
   temp=src[i];
   src[i]=src[i+1];
   src[i+1]=temp;//数组整体换
    }
  }
 }
}


结果显示:
2019051        b 78
2019053        c 70
2019052        a 69
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

定义struct结构体数组 的相关文章

  • Linux驱动----mmap系统调用

    在介绍mmap之前 xff0c 我们首先要了解 xff0c 如果没有mmap xff0c 在我们对一个设备进行操作时 xff0c 内核中其实有映射一份该设备的物理内存地址 xff0c 这是一份虚拟地址 xff0c 但是这是属于内核的 xff
  • STM32的启动流程

    本文主要介绍 xff0c STM32从 CPU 上电复位执行第 1 条指令开始 xff08 汇编文件 xff09 到进入 C 程序 main 函数入口之间的那个部分 基本流程如下 1 确定启动方式 每个STM32的芯片上都有两个管脚BOOT
  • 推挽输出&&开漏输出

    在学习STM32的时候 xff0c 我发现了一个很值得研究学习的问题 xff0c 下面 xff0c 用我的理解来阐述一遍 xff0c 这其中的原理 首先请看电路图 在给GPIO配置输出的时候 xff0c 其有两种工作模式可选 xff0c 分
  • const

    const是一个限定符 xff0c 被const限定的变量其值不会被改变 目录 1 修饰变量 2 修饰指针 3 修饰引用 4 修饰成员函数 5 宏定义 define 和 const 常量 1 修饰变量 指向的变量的值不可改变 xff0c 次
  • 用联合体(union)判断大小端

    1 联合体的概念 联合 xff08 union xff09 是一种节省空间的特殊的类 xff0c 一个 union 可以有多个数据成员 xff0c 但是在任意时刻只有一个数据成员可以有值 当某个成员被赋值后其他成员变为未定义状态 这是因为和
  • 字节对齐(结构体)

    直接从问题入手 xff0c 下面这个结构体 xff0c 占多大内存 xff0c 也就是求sizeof xff08 A xff09 是多少 struct A int a char b double c 这就涉及到一个字节对齐的问题 xff0c
  • mysql 8.0.12安装注意事项

    安装 使用msi方式安装 xff0c win10系统 问题 安装之后想使用命令行的方式 xff0c 不是mysql自带的mysql shell所产生的问题 xff1a mysql 不是内部或外部命令 xff0c 也不是可运行的程序或批处理文
  • 树莓派创建WiFi热点

    0x00 将代码clone到本地 git span class hljs keyword clone span https span class hljs comment github com oblique create ap span
  • 虚函数表和虚函数指针

    虚函数表 vtable 虚函数指针 vptr 虚函数表会出现在一个带有虚函数的类中 xff0c 是属于类的 虚函数表相当于一个数组 xff0c 其中存放的只有虚函数 xff0c 可以是继承而来的 xff0c 也可以是自己本身的 虚函数指针是
  • 在构造函数中使用虚函数可以实现多态吗?

    在构造函数和析构函数中使用虚函数可以实现多态吗 xff1f 不能 因为不管是构造函数还是析构函数 xff0c 其父类和子类的执行都是有一定顺序的 xff0c 拿构造函数来说 xff0c 父类的构造函数会先生成 xff08 一个很简单的道理
  • C++类型转换操作符

    在C语言中其实已有类型转换 xff0c 比如强制类型转换 xff0c 形式上是 type expression 对标C中的强制类型转换 xff0c C 43 43 中按照类型转换的意图对他们进行了分类 xff0c 形式上是 static c
  • 直接插入法排序

    本文试例在VS编译器下可正常使用 算法思想 xff1a 每次从待排序的原始序列中取出一个元素 xff0c 将其排入一个新的有序数列中 xff0c 这实际上是一个有序子序列不断增长的过程 xff0c 当有序子序列与原序列的长度一致时 xff0
  • 编译器的差别gcc和VS

    问题的由来是我写了一个排序算法程序 xff0c 在gcc编译器下运行 xff0c 发现结果有问题 xff0c 然后开展的寻找错误解决问题 这是我写的一个简单的插入排序算法 include lt stdio h gt 直接插入法排序函数主体
  • 计算机程序内存分布

    计算机存储器 计算机中有两种存储器 xff0c RAM和ROM RAM xff1a 随机存取存储器 xff08 random access memory xff09 xff0c 也叫主存 内存 它可以随时读写 xff0c 而且速度很快 xf
  • linux下的线程thread

    何为线程 xff1f 线程是一种轻量级的进程 xff0c 一个进程至少包含 1 个线程 xff0c 也可以包含多个线程 xff0c 所有线程共享进程的资源 xff0c 各个线程也可以拥有属于自己的私有资源 其实 xff0c 进程仅负责为各个
  • 线程同步的实现

    互斥锁 互斥锁的使用就是当有线程访问进程空间中的公共资源时 xff0c 线程执行 加锁 操作 将资源锁起来 xff0c 阻止其它线程的访问 访问完成后 xff0c 该线程 xff08 谁锁上的必须由谁来解锁 xff09 负责完成 解锁 操作
  • TCP粘包问题

    TCP是一种可靠 顺序 耗资的传输协议 xff0c UDP则反之 关于TCP的粘包问题 首先 xff0c 关于传输层协议中的TCP和UDP两种协议 xff0c 其中只有TCP会出现这个沾包的问题 xff0c 因为 xff0c TCP是流式套
  • 如何在shell脚本中使用环境变量的值

    1 问题的由来 此处展示的是脚本的一部分 if Update mode eq 0 then TF update else UDS update fi 说明 xff1a Update mode是一个环境变量 xff0c TF update和U
  • clang-format格式文件。可以直接复制引用

    Language Cpp BasedOnStyle LLVM AccessModifierOffset 2 AlignAfterOpenBracket Align AlignConsecutiveMacros false AlignCons
  • 环形缓冲区(c语言)

    1 概念介绍 在我们需要处理大量数据的时候 xff0c 不能存储所有的数据 xff0c 只能先处理先来的 xff0c 然后将这个数据释放 xff0c 再去处理下一个数据 如果在一个线性的缓冲区中 xff0c 那些已经被处理的数据的内存就会被

随机推荐

  • JAVA基础06——运算符02

    1 位运算 处理数据类型的时候 xff0c 可以直接对组成整形数值的各个位完成操作 amp 34 and 34 34 or 34 xff08 34 not 34 xff09 34 xor 以下用例皆为byte类型 xff1a xff1a 按
  • TCP/IP协议学习笔记(五)Windows下多线程多客户端的TCP服务端的实现

    使用多线程来实现可与多个客户端通信的服务端 当客户端连接上服务端之后 xff0c 为该客户端创建一个新的线程 xff0c 在该线程中与客户端进行通信 服务端程序中的主线程负责监听并接受客户端的连接请求 xff0c 创建与客户端通信的线程 另
  • docker tomcat ,把webapps.dist里面的全部文件 复制到 webapps下面就行。

    docker tomcat xff0c 把webapps dist里面的全部文件 复制到 webapps下面就行 cp r webapps dist webapps
  • ffmpeg 视频合并,无声或音视不同步

    无声 xff1a 第一个视频无声 xff0c 合并之后整个视频无声 例如上面是我用图片合成的视频 xff0c 就是没有音频的视频 只要没有音频的视频放在最前面 xff0c 那么整个视频都会没有声音 xff0c ffmpeg默认以第一个视频为
  • week4实验A 咕咕东的奇遇(字母圆环)

    题目 xff1a 咕咕东是个贪玩的孩子 有一天 xff0c 他从上古遗迹中得到了一个神奇的圆环 这个圆环由字母表组成首尾相接的环 xff0c 环上有一个指针 最初指向字母a 咕咕东每次可以顺时针或者逆时针旋转一格 例如 a顺时针旋转到z x
  • week13 作业C HDU-1176

    题目 xff1a 在大家不辞辛劳的帮助下 xff0c TT 顺利地完成了所有的神秘任务 神秘人很高兴 xff0c 决定给 TT 一个奖励 xff0c 即白日做梦之捡猫咪游戏 捡猫咪游戏是这样的 xff0c 猫咪从天上往下掉 xff0c 且只
  • week13作业B TT的神秘任务2

    题目 xff1a 在你们的帮助下 xff0c TT 轻松地完成了上一个神秘任务 但是令人没有想到的是 xff0c 几天后 xff0c TT 再次遇到了那个神秘人 而这一次 xff0c 神秘人决定加大难度 xff0c 并许诺 TT xff0c
  • week14作业B Q老师与十字叉

    Input 9 5 5 3 4 4 3 5 5 1 4 5 5 5 3 3 3 4 4 Output 0 0 0 0 0 4 1 1 2 记录每一行 每一列空白的格子数目 xff0c 然后遍历每一个格子 xff0c
  • week14 作业D Q老师染砖

    衣食无忧的 Q老师 有一天突发奇想 xff0c 想要去感受一下劳动人民的艰苦生活 具体工作是这样的 xff0c 有 N 块砖排成一排染色 xff0c 每一块砖需要涂上红 蓝 绿 黄这 4 种颜色中的其中 1 种 且当这 N 块砖中红色和绿色
  • 用队列实现图的拓扑排序

    span class hljs preprocessor include lt stdio h gt span span class hljs preprocessor include lt stdlib h gt span span cl
  • week14作业E Q老师度假

    忙碌了一个学期的 Q老师 决定奖励自己 N 天假期 假期中不同的穿衣方式会有不同的快乐值 已知 Q老师 一共有 M 件衬衫 xff0c 且如果昨天穿的是衬衫 A xff0c 今天穿的是衬衫 B xff0c 则 Q老师 今天可以获得 f A
  • week15作业A ZJM 与霍格沃兹

    ZJM 为了准备霍格沃兹的期末考试 xff0c 决心背魔咒词典 xff0c 一举拿下咒语翻译题 题库格式 xff1a 魔咒 对应功能 背完题库后 xff0c ZJM 开始刷题 xff0c 现共有 N 道题 xff0c 每道题给出一个字符串
  • week16 实验A TT数鸭子

    题目 xff1a 这一天 xff0c TT因为疫情在家憋得难受 xff0c 在云吸猫一小时后 xff0c TT决定去附近自家的山头游玩 TT来到一个小湖边 xff0c 看到了许多在湖边嬉戏的鸭子 xff0c TT顿生羡慕 此时他发现每一只鸭
  • group by分组查询后排序

    group by分组查询后排序 如 xff1a 分组查询 SELECT s name name COUNT s id value FROM t setmeal s t order o WHERE s id 61 o setmeal id G
  • 数据库的视图

    数据库视图的作用 数据库视图是一种虚拟的表 xff0c 它不是一个实际的表 xff0c 而是根据一个或多个实际表的查询结果生成的一个虚拟表 xff0c 它可以看作是对一个或多个表的一个或多个列的子集的逻辑表示 在数据库中 xff0c 视图有
  • Ubuntu开启FTP服务+FileZilla传输文件

    1 Ubuntu安装 FTP 服务 sudo apt install vsftpd 2 本地 写入权限使能 xff0c 首先打开 etc vsftpd conf 进行配置 sudo vim etc vsftpd conf 配置文件中 loc
  • spring集成Junit单元测试出现的问题及解决办法

    spring集成Junit单元测试出现的问题及解决办法 1 在spring集成Junit单元测试的时候 xff0c 所有的集成步骤都没有问题 xff0c 但是在启动测试的时候出现如下问题 xff1a java lang IllegalSta
  • MySQL实验

    表如下 xff1a 学院 xff08 学院代码 xff0c 学院名称 xff09 学生 xff08 学号 xff0c 姓名 xff0c 性别 xff0c 学院代码 xff09 教师 xff08 教师号 xff0c 教师名 xff0c 学院代
  • SpringBoot整合Mybatis-plus代码生成器

    本文还是采用经典实用知识三段论 是什么 xff1f 能干什么 xff1f 怎么干 xff1f 让Mybatis plus代码生成器轻而易举的为你所用 希望文章能够帮到你提高写代码的效率 前言 整合基于在idea已经创建好的Springboo
  • 定义struct结构体数组

    题目要求 xff1a 有3个候选人 xff0c 每个选民只能投票选一人 xff0c 要求编一个统计选票的程序 xff0c 先后输入被选人的名字 xff0c 最后输出各人得票结果 解题思路 xff1a 设一个结构体数组 xff0c 数组中包含