(第12列)C语言:定义结构体数组-----投票系统

简介: (第12列)C语言:定义结构体数组-----投票系统

题目:有三个候选人,有十个选民,每个只能投票一人,要求编一个统计投票的程序,先后输入被选人的名字,最后输出个人得票结果。

说再多还是代码一步步解释更好:



第一步:首先定义结构体数组:

//定义结构体数组,并初始化三名候选人和票数
struct person
  {
    char name[20];
    int count;
  }arry[3]={"李华",0,"小明",0,"小红",0};


第二步:声明:

  int i,j;
  char arry_name[20];//用来接收输入的数据


第三步:输入:

  for(i=1;i<=10;i++)
    {
    printf("请投票:");
    scanf("%s",&arry_name);  //输入被投人的名字
  }


第四步:计数:

    for(j=0;j<3;j++)
    {
            //利用拷贝函数strcmp,将arry[j].name分别复制进arry_name中,进行判断
      if(strcmp(arry_name,arry[j].name)==0)
      {
                //判断为真票数加一
        arry[j].count++;
      }
    }


第五步:把输入和计数同时进行:

  for(i=1;i<=10;i++)
    {
    printf("请投票:");
    scanf("%s",&arry_name);
        //输入的同时进行比较计数
    for(j=0;j<3;j++)
    {
      if(strcmp(arry_name,arry[j].name)==0)
      {
        arry[j].count++;
      }
    }
    printf("\n");
  }


第六步:最后输出:

  printf("结果为:\n");
  for(j=0;j<3;j++)
  {
    printf("姓名:%s,票数:%d\n",arry[j].name,arry[j].count);
  }

分步分析是不是简单多了,现在就写出完整的代码:

#include<stdio.h>
#include<string.h>
struct person
  {
    char name[20];
    int count;
  }arry[3]={"李华",0,"小明",0,"小红",0};
int main()
{
  int i,j;
  char arry_name[20];
  for(i=1;i<=10;i++)
    {
    printf("请投票:");
    scanf("%s",&arry_name);
    for(j=0;j<3;j++)
    {
      if(strcmp(arry_name,arry[j].name)==0)
      {
        arry[j].count++;
      }
    }
    printf("\n");
  }
  printf("结果为:\n");
  for(j=0;j<3;j++)
  {
    printf("姓名:%s,票数:%d\n",arry[j].name,arry[j].count);
  }
  printf("\n");
  return 0;
}


运行结果:

图片.png

相关文章
|
22天前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
108 14
|
26天前
|
存储 编译器 C语言
【C语言】结构体详解 -《探索C语言的 “小宇宙” 》
结构体通过`struct`关键字定义。定义结构体时,需要指定结构体的名称以及结构体内部的成员变量。
121 10
|
26天前
|
传感器 算法 安全
【C语言】两个数组比较详解
比较两个数组在C语言中有多种实现方法,选择合适的方法取决于具体的应用场景和性能要求。从逐元素比较到使用`memcmp`函数,再到指针优化,每种方法都有其优点和适用范围。在嵌入式系统中,考虑性能和资源限制尤为重要。通过合理选择和优化,可以有效提高程序的运行效率和可靠性。
83 6
|
26天前
|
C语言
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
33 5
|
26天前
|
编译器 C语言
【C语言】宏定义在 a.c 中定义,如何在 b.c 中使用?
通过将宏定义放在头文件 `macros.h` 中,并在多个源文件中包含该头文件,我们能够在多个文件中共享宏定义。这种方法不仅提高了代码的重用性和一致性,还简化了维护和管理工作。本文通过具体示例展示了如何定义和使用宏定义,帮助读者更好地理解和应用宏定义的机制。
43 2
|
29天前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
55 5
|
1月前
|
存储 数据建模 程序员
C 语言结构体 —— 数据封装的利器
C语言结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个整体。它支持数据封装,便于管理和传递复杂数据,是程序设计中的重要工具。
|
29天前
|
存储 算法 C语言
C语言中常见的字符串处理技巧,包括字符串的定义、初始化、输入输出、长度计算、比较、查找与替换、拼接、截取、转换、遍历及注意事项
本文深入探讨了C语言中常见的字符串处理技巧,包括字符串的定义、初始化、输入输出、长度计算、比较、查找与替换、拼接、截取、转换、遍历及注意事项,并通过案例分析展示了实际应用,旨在帮助读者提高编程效率和代码质量。
89 4
|
29天前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
1月前
|
存储 C语言 计算机视觉
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。