当前位置: 首页 > news >正文

c语言200例 64

大家好,欢迎来到无限大的频道。

今天带领大家来学习c语言。

题目要求:

	 设计一个进行候选人的选票程序。假设有三位候选人,在屏幕上输入要选择的候选人姓名,
有10次投票机会,最后输出每个人的得票结果。好的,我们可以设计一个简单的选票程序,允许用户为三个候选人投票。以下是问题分析及解题思路,并最终给出 C 语言解决方案。

问题分析

  • 我们需要对三个候选人进行投票,每位候选人有一个唯一的名称。
  • 用户有 10 次投票机会,在每次投票时输入一个候选人的姓名。
  • 在所有投票完成后,程序需要统计并输出每个候选人获得的票数。

解题思路

  1. 定义候选人:我们需要一个字符数组来存储每个候选人的名称,另一个整数数组来存储每个候选人的票数。
  2. 初始化票数:在程序开始时,将所有候选人的票数初始化为 0。
  3. 进行投票:使用循环让用户进行投票,输入候选人的姓名,如果输入合法,则票数加 1。
  4. 输出结果:在投票结束后,输出每个候选人的得票结果。

C 语言实现

以下是实现该程序的 C 语言代码:

#include <stdio.h>
#include <string.h>#define CANDIDATE_COUNT 3
#define VOTE_COUNT 10int main() {char candidates[CANDIDATE_COUNT][20] = {"Alice", "Bob", "Charlie"};int votes[CANDIDATE_COUNT] = {0, 0, 0};char input[20];printf("请投票,您可以选择以下候选人(输入候选人姓名):\n");for (int i = 0; i < CANDIDATE_COUNT; i++) {printf("%s\n", candidates[i]);}// 进行投票for (int i = 0; i < VOTE_COUNT; i++) {printf("投票 %d/%d 请输入候选人姓名: ", i + 1, VOTE_COUNT);scanf("%s", input);// 统计票数int found = 0;for (int j = 0; j < CANDIDATE_COUNT; j++) {if (strcmp(input, candidates[j]) == 0) {votes[j]++;found = 1;break;}}if (!found) {printf("无效的候选人姓名,请重新输入。\n");i--; // 重新进行这次投票}}// 输出投票结果printf("\n投票结果:\n");for (int i = 0; i < CANDIDATE_COUNT; i++) {printf("%s: %d 票\n", candidates[i], votes[i]);}return 0;
}

运行结果如下

在这里插入图片描述

代码说明

  1. 使用 char candidates[CANDIDATE_COUNT][20] 数组存储候选人姓名。
  2. 使用 int votes[CANDIDATE_COUNT] 数组初始化候选人票数为 0。
  3. 通过循环,用户输入候选人姓名进行投票,若输入无效则要求重新输入。
  4. 最后输出每位候选人的得票情况。

问题优化

  1. 候选人数由用户决定:在程序开始时询问用户输入候选人数。
  2. 候选人姓名由用户决定:用户输入每位候选人的姓名。
  3. 使用数字选举候选人:用户通过输入对应的候选人数字进行投票,而不需要输入姓名。

优化后的 C 语言代码

#include <stdio.h>
#include <stdlib.h>int main() {int candidate_count;// 询问用户输入候选人数printf("请输入候选人人数: ");scanf("%d", &candidate_count);// 动态分配内存以存储候选人姓名和票数char **candidates = malloc(candidate_count * sizeof(char *));int *votes = malloc(candidate_count * sizeof(int));// 初始化每个候选人的姓名和票数for (int i = 0; i < candidate_count; i++) {candidates[i] = malloc(20 * sizeof(char)); // 假设每个名字最大为20个字符printf("请输入第 %d 位候选人的姓名: ", i + 1);scanf("%s", candidates[i]);votes[i] = 0; // 初始化票数为0}printf("\n请根据编号投票,您可以选择以下候选人:\n");for (int i = 0; i < candidate_count; i++) {printf("%d. %s\n", i + 1, candidates[i]);}int vote_count = 10; // 投票次数for (int i = 0; i < vote_count; i++) {int choice;printf("投票 %d/%d 请输入候选人编号 (1-%d): ", i + 1, vote_count, candidate_count);scanf("%d", &choice);// 统计票数if (choice >= 1 && choice <= candidate_count) {votes[choice - 1]++;} else {printf("无效的候选人编号,请重新输入。\n");i--; // 重新进行这次投票}}// 输出投票结果printf("\n投票结果:\n");for (int i = 0; i < candidate_count; i++) {printf("%s: %d 票\n", candidates[i], votes[i]);}// 释放动态分配的内存for (int i = 0; i < candidate_count; i++) {free(candidates[i]);}free(candidates);free(votes);return 0;
}

运行结果如下

在这里插入图片描述

代码说明

  1. 动态内存分配:使用 malloc 动态分配存储候选人姓名和票数的内存,这样可以根据用户输入的候选人数调整内存大小。
  2. 获取候选人数和姓名:用户在程序开始时输入候选人数,然后输入每位候选人的姓名。
  3. 使用数字进行投票:用户在投票时根据候选人的编号(1到候选人数)进行投票。
  4. 输入验证:验证用户输入的编号是否在有效范围内,若无效则提示并重试。
  5. 内存释放:在程序结束前释放动态分配的内存,以防止内存泄漏。

优化结果

通过这些改进,程序变得更加灵活和用户友好,用户可以自定义候选人及其数量,并通过简单的数字输入进行投票。

相关文章:

c语言200例 64

大家好&#xff0c;欢迎来到无限大的频道。 今天带领大家来学习c语言。 题目要求&#xff1a; 设计一个进行候选人的选票程序。假设有三位候选人&#xff0c;在屏幕上输入要选择的候选人姓名&#xff0c; 有10次投票机会&#xff0c;最后输出每个人的得票结果。好的&#xff…...

[leetcode]216_组合总和III_给定数字范围且输出无重复

找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。示例 1: 输入: k 3, n 7 输出: [[1,2,4]] 解释: 1…...

Doris 2.x 安装及使用

Doris 2.x 安装及使用 简介 Apache Doris 是一款基于 MPP 架构的高性能、实时的分析型数据库&#xff0c;以高效、简单、统一的特点被人们所熟知&#xff0c;仅需亚秒级响应时间即可返回海量数据下的查询结果&#xff0c;不仅可以支持高并发的点查询场景&#xff0c;也能支持…...

MySQL字符集设置

MySQL字符集设置 一、查看当前配置的字符集 \s;示例 MariaDB [(none)]> \s -------------- mysql Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1Connection id: 11 Current database: Current user: rootlocalhost SSL: …...

深度学习模型量化

模型量化是深度学习领域中的一项重要技术&#xff0c;它通过降低模型参数的精度&#xff0c;将浮点数转换为整数或定点数&#xff0c;从而实现模型的压缩和优化。以下是进行模型量化的详细步骤和注意事项&#xff1a; 一、模型量化的基本步骤 选择量化方法 后训练量化&#xf…...

红黑树和B+树

红黑树和B树是两种常用的自平衡数据结构&#xff0c;适用于不同的应用场景和需求。下面是对这两种树的详细比较和描述&#xff1a; 红黑树 基本结构&#xff1a; 红黑树是一种自平衡的二叉搜索树&#xff08;Binary Search Tree&#xff09;&#xff0c;其中每个节点都有一个颜…...

debian 12配置固定ip

配置文件 cat /etc/network/interfaces |grep -v # source /etc/network/interfaces.d/*auto lo iface lo inet loopbackallow-hotplug ens18 iface ens18 inet staticaddress 192.168.0.105/24network 192.168.0.0broadcast 192.168.0.255gateway 192.168.0.1dns-nameserver…...

OceanBase技术解析: 执行器中的自适应技术

在《OceanBase 数据库源码解析》这本书中&#xff0c;对于执行器的探讨还不够深入&#xff0c;它更多地聚焦于执行器的并行处理机制。因此&#xff0c;通过本文与大家分享OceanBase执行器中几种典型的自适应技术&#xff0c;作为对书中执行器部分的一个补充。 提升数据库分析性…...

Spring Cloud Gateway接入WebSocket:实现实时通信

在现代的微服务架构中&#xff0c;实时通信变得越来越重要。Spring Cloud Gateway作为Spring Cloud生态中的API网关&#xff0c;提供了动态路由、监控、弹性、安全等功能。本文将介绍如何通过Spring Cloud Gateway接入WebSocket&#xff0c;实现服务之间的实时通信。 为什么需…...

linux信号| 学习信号三步走 | 学习信号需要打通哪些知识脉络?

前言: 本节内容主要讲解linux下信号的预备知识以及信号的概念&#xff0c; 信号部分我们将会分为几个阶段进行讲解&#xff1a;信号的概念&#xff0c; 信号的产生&#xff0c; 信号的保存。本节主要讲解信号 ps:本节内容适合学习了进程相关概念的友友们进行观看哦 目录 什么是…...

Java调用第三方接口、http请求详解,一文学会

Java 调用第三方接口的封装方法详解 在开发企业级应用时&#xff0c;调用第三方接口是非常常见的场景。我们可能需要与外部服务集成&#xff0c;如支付接口、短信接口、天气服务接口等。为了提高代码的可维护性、复用性和易扩展性&#xff0c;封装第三方接口调用的方法非常重要…...

windows10使用bat脚本安装前后端环境之redis注册服务

首先需要搞清楚redis在本地是怎么安装配置、然后在根据如下步骤编写bat脚本&#xff1a; 思路 1.下载zip格式redis 2.查看windows server服务是否已安装redis 3.启动查看服务是否正常 bat脚本 echo off echo windows10 x64 server redis init REM 请求管理员权限并隐藏窗口 …...

fastapp-微信开发GPT项目第一课

0. 开发说明 在学习开发本项目之前&#xff0c;必须保证有以下知识储备和环境工具。 技术栈说明python>3.9、pydantic>2.7.1python基础&#xff0c;http协议fastapi>0.111.0web协程异步框架&#xff0c;有web开发基础&#xff0c;异步编程&#xff0c;类型标注[pyth…...

在双十一必买的好物有哪些?2024年双十一好物清单分享

一年一度的双十一购物狂欢节再次悄然临近&#xff0c;它不仅是一场购物的盛宴&#xff0c;更是我们提前规划生活、享受优惠的绝佳时机&#xff0c;在这个全民狂欢的日子里&#xff0c;各大品牌纷纷亮出杀手锏&#xff0c;推出年度最给力的优惠和新品&#xff0c;让人目不暇接&a…...

避免glibc版本而报错,CentOS等Linux安装node.js完美方法

概述 对于Node.js v18.x或更高&#xff0c;Node.js官方默认是在Ubuntu 20.04, Debian 10, RHEL 8,CentOS 8等高版操作系统上编译得到的&#xff0c;高版本操作系统的glibc版本≥2.28。所以&#xff0c;下载Node.js后&#xff0c;也需要glibc版本≥2.28才能使用。 而CentOS 7.x等…...

elasticsearch实战应用

Elasticsearch是一个基于Lucene的分布式、实时全文搜索引擎&#xff0c;广泛应用于日志收集和可视化、数据分析以及大规模数据检索等领域。其强大的搜索和分析能力&#xff0c;使得Elasticsearch成为许多企业和开发者在处理大规模数据时的首选工具。以下将从Elasticsearch的实战…...

STM32精确控制步进电机

目的&#xff1a;学习使用STM32电机驱动器步进电机&#xff0c;进行电机运动精确控制。 测试环境&#xff1a; MCU主控芯片STM32F103RCT6 &#xff1b;A4988步进电机驱动器模块&#xff1b; 微型2相4线步…...

Qemu开发ARM篇-5、buildroot制作根文件系统并挂载启动

文章目录 1、 buildroot源码获取2、buildroot配置3、buildroot编译4、挂载根文件系统 在上一篇 Qemu开发ARM篇-4、kernel交叉编译运行演示中&#xff0c;我们编译了kernel&#xff0c;并在qemu上进行了运行&#xff0c;但到最后&#xff0c;在挂载根文件系统时候&#xff0c;挂…...

光控资本:10转10送10股有多少股?转股与送股又什么区别?

10转10送10股是投资者每10股转增10股并送10股&#xff0c;即每10股添加20股&#xff0c;变为30股。 例如&#xff0c;某投资者有1000股&#xff0c;上市公司10转10送10后&#xff0c;投资者将添加2000股&#xff0c;手中持有股票变为3000股。 上市公司进行10转10送10股之后&a…...

【音乐格式转换攻略】6个好用的音乐转换成mp3格式技巧!

现如今&#xff0c;不少用户在将手机下载的歌曲转移到其他设备&#xff0c;如MP3播放器、车载音响或智能音箱时&#xff0c;却遭遇了兼容性难题。尤其是面对一些特殊音频格式&#xff0c;只能在各自的平台播放器上正常播放&#xff0c;一旦尝试在其他设备上打开&#xff0c;往往…...

OpenClaw多通道控制:Qwen3-32B-Chat同时响应飞书与网页端指令

OpenClaw多通道控制&#xff1a;Qwen3-32B-Chat同时响应飞书与网页端指令 1. 为什么需要多通道控制&#xff1f; 上周三晚上11点&#xff0c;我正在用OpenClaw的网页控制台整理项目文档&#xff0c;突然飞书弹出同事的紧急需求&#xff1a;"能不能立刻帮我生成上季度销售…...

AI-Agent元年来了!2026年全面爆发,掌握Agent工程化思维,从0到1打造爆款智能体!

前言 如果说[2025年是AI-Agent元年]&#xff0c;那么2026年无疑是AI-Agent全面爆发的一年。无论是近期引发全民热潮的“养虾”智能体[OpenClaw&#xff0c;还是渗透进各行各业、解决实际工作问题的智能助手&#xff0c;它们都属于AI-Agent的生动实践。从这些案例中不难看出&…...

Nunchaku-flux-1-dev在Typora文档中的自动插图生成

Nunchaku-flux-1-dev在Typora文档中的自动插图生成 1. 引言 写技术文档最头疼的是什么&#xff1f;对我来说&#xff0c;一定是配图。每次写到关键的技术概念或者流程说明&#xff0c;都得停下来去找合适的示意图&#xff0c;或者打开绘图工具手动制作。不仅打断思路&#xf…...

Maestro移动测试自动化成长路径:从零基础到专家的完整技能图谱

Maestro移动测试自动化成长路径&#xff1a;从零基础到专家的完整技能图谱 【免费下载链接】maestro Painless Mobile UI Automation 项目地址: https://gitcode.com/GitHub_Trending/ma/maestro 想要构建可靠的移动应用测试体系却不知从何开始&#xff1f;Maestro移动测…...

PiliPlus视频播放进度条:自定义绘制与交互实现终极指南

PiliPlus视频播放进度条&#xff1a;自定义绘制与交互实现终极指南 【免费下载链接】PiliPlus PiliPlus 项目地址: https://gitcode.com/gh_mirrors/pi/PiliPlus PiliPlus是一款功能强大的视频播放器应用&#xff0c;其中自定义视频播放进度条是其核心功能之一。这个进度…...

VibeVoice与Vue3前端整合:浏览器端语音合成方案

VibeVoice与Vue3前端整合&#xff1a;浏览器端语音合成方案 1. 为什么要在浏览器里直接合成语音 你有没有遇到过这样的场景&#xff1a;在做一个在线教育应用时&#xff0c;想让系统自动朗读课文&#xff0c;但每次都要把文字发到后端服务器&#xff0c;等几秒钟再把音频文件…...

AI智能二维码工坊 vs 传统方案:OpenCV+QRCode性能对比评测

AI智能二维码工坊 vs 传统方案&#xff1a;OpenCVQRCode性能对比评测 二维码&#xff0c;这个黑白相间的小方块&#xff0c;早已渗透进我们生活的方方面面。从扫码支付到添加好友&#xff0c;从产品溯源到活动签到&#xff0c;它无处不在。作为开发者&#xff0c;我们经常需要…...

探索数字微流控:OpenDrop开源平台完全实践

探索数字微流控&#xff1a;OpenDrop开源平台完全实践 【免费下载链接】OpenDrop Open Source Digital Microfluidics Bio Lab 项目地址: https://gitcode.com/gh_mirrors/ope/OpenDrop OpenDrop作为一款基于电润湿技术的开源数字微流控平台&#xff0c;致力于为开源实验…...

M2LOrder模型轻量化对比:Web端与移动端部署可行性评估

M2LOrder模型轻量化对比&#xff1a;Web端与移动端部署可行性评估 最近在折腾一个挺有意思的事儿&#xff0c;就是把一个原本跑在服务器上的AI模型&#xff0c;想办法塞到手机里或者浏览器里。这个模型叫M2LOrder&#xff0c;主要干的是情感分析的活儿。你可能会想&#xff0c…...

AtlasOS:终极Windows系统性能优化与隐私保护指南

AtlasOS&#xff1a;终极Windows系统性能优化与隐私保护指南 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/Atl…...