(第12列)C语言:定义结构体数组-----投票系统
2023-09-11 14:19:28 时间
题目:有三个候选人,有十个选民,每个只能投票一人,要求编一个统计投票的程序,先后输入被选人的名字,最后输出个人得票结果。
说再多还是代码一步步解释更好:
第一步:首先定义结构体数组:
//定义结构体数组,并初始化三名候选人和票数 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; }
运行结果:
你学会了吗?
相关文章
- 计算机等级考试二级C语言程序设计专项训练题——数组元素的移动
- 数据结构之---C语言实现最短路径之Dijkstra(迪杰斯特拉)算法
- 《C语言程序设计与实践(第2版)》——2.6 数组
- C语言的条件编译#if, #elif, #else, #endif、#ifdef, #ifndef
- 【C语言】写一个函数,用对输入的五个字符串按由小到大顺序排列输出。
- 【C语言】写一个函数,输入一个N位数,将这个N位数每两个数字之间插入一个空格并输出。例如输入1234,则输出1 2 3 4
- 《C语言解惑》—— 2.7 别混淆字符数组和字符
- C语言 | 结构体成员数组赋值的问题
- C语言函数及数组的综合应用——儿童数学运算 and 递归求最大公约数
- C语言循环结构及数组排序的综合应用——冒泡、插入、选择排序棒图显示and两个超长数相乘
- 【C语言】利用队列的思维理解移位运算符和移位函数
- C语言提高篇(wchar_t)字符类型
- 【C语言进阶】动态内存管理详解与常见动态内存错误以及柔性数组使用与介绍
- C语言100个经典的算法
- C语言中整形数组、字符数组、字符串的区别
- 1045 快速排序 (25 分)C语言
- 1008 数组元素循环右移问题 (20 分)C语言
- C语言指针和数组
- C语言函数指针:指向函数的指针