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

百马百担c语言编程

以下是一个百马百担问题的C语言编程实现:

  1. #include <stdio.h>
  2. int main() {
  3.     int n, m, k;
  4.     scanf("%d%d%d", &n, &m, &k);
  5.     int a[n], b[m], c[k];
  6.     for (int i = 0; i < n; i++) {
  7.         scanf("%d", &a[i]);
  8.     }
  9.     for (int i = 0; i < m; i++) {
  10.         scanf("%d", &b[i]);
  11.     }
  12.     for (int i = 0; i < k; i++) {
  13.         scanf("%d", &c[i]);
  14.     }
  15.     int sum_a = 0, sum_b = 0, sum_c = 0;
  16.     for (int i = 0; i < n; i++) {
  17.         sum_a += a[i];
  18.     }
  19.     for (int i = 0; i < m; i++) {
  20.         sum_b += b[i];
  21.     }
  22.     for (int i = 0; i < k; i++) {
  23.         sum_c += c[i];
  24.     }
  25.     if (sum_a == sum_b && sum_b == sum_c) {
  26.         printf("YES\n");
  27.     } else {
  28.         printf("NO\n");
  29.     }
  30.     return 0;
  31. }

这个程序首先读取三个整数n、m、k,分别表示马的数量、担的数量和人的数量。然后分别读取n个马的数量、m个担的重量、k个人的人数,存储在数组a、b、c中。接着计算马的总重量sum_a、担的总重量sum_b、人的总重量sum_c,如果三者相等则输出"YES",否则输出"NO"。

当然,这个程序可以根据需要进行一些改进。以下是一个可能的改进版本,它可以处理更一般的情况,并且输出更详细的信息:

  1. #include <stdio.h>
  2. int main() {
  3.     int n, m, k;
  4.     scanf("%d%d%d", &n, &m, &k);
  5.     int a[n], b[m], c[k];
  6.     for (int i = 0; i < n; i++) {
  7.         scanf("%d", &a[i]);
  8.     }
  9.     for (int i = 0; i < m; i++) {
  10.         scanf("%d", &b[i]);
  11.     }
  12.     for (int i = 0; i < k; i++) {
  13.         scanf("%d", &c[i]);
  14.     }
  15.     int sum_a = 0, sum_b = 0, sum_c = 0;
  16.     for (int i = 0; i < n; i++) {
  17.         sum_a += a[i];
  18.     }
  19.     for (int i = 0; i < m; i++) {
  20.         sum_b += b[i];
  21.     }
  22.     for (int i = 0; i < k; i++) {
  23.         sum_c += c[i];
  24.     }
  25.     if (sum_a == sum_b && sum_b == sum_c) {
  26.         printf("YES, all weights are equal.\n");
  27.     } else {
  28.         printf("NO, weights are not equal.\n");
  29.         if (sum_a != sum_b) {
  30.             printf("The total weight of horses is %d, but the total weight of donkeys is %d.\n", sum_a, sum_b);
  31.         }
  32.         if (sum_b != sum_c) {
  33.             printf("The total weight of donkeys is %d, but the total weight of people is %d.\n", sum_b, sum_c);
  34.         }
  35.     }
  36.     return 0;
  37. }

这个版本的程序在比较重量之前先分别计算了马、担和人各自的重量总和,这样如果重量不等,程序可以输出哪个总和与其它总和不相等,以便用户更好地理解问题。

好的,以下是对上述程序的进一步改进,增加了对输入数据的验证和错误处理:

  1. #include <stdio.h>
  2. int main() {
  3.     int n, m, k;
  4.     scanf("%d%d%d", &n, &m, &k);
  5.     // 检查输入数据的有效性
  6.     if (n <= 0 || m <= 0 || k <= 0) {
  7.         printf("Invalid input: all counts must be positive.\n");
  8.         return 0;
  9.     }
  10.     int a[n], b[m], c[k];
  11.     for (int i = 0; i < n; i++) {
  12.         scanf("%d", &a[i]);
  13.     }
  14.     for (int i = 0; i < m; i++) {
  15.         scanf("%d", &b[i]);
  16.     }
  17.     for (int i = 0; i < k; i++) {
  18.         scanf("%d", &c[i]);
  19.     }
  20.     // 检查输入数据的总和是否为整数,并且不超过整数的最大值
  21.     long long sum_a = 0, sum_b = 0, sum_c = 0;
  22.     for (int i = 0; i < n; i++) {
  23.         sum_a += a[i];
  24.     }
  25.     for (int i = 0; i < m; i++) {
  26.         sum_b += b[i];
  27.     }
  28.     for (int i = 0; i < k; i++) {
  29.         sum_c += c[i];
  30.     }
  31.     if (sum_a != sum_b || sum_b != sum_c) {
  32.         printf("The total weights are not equal.\n");
  33.         if (sum_a != sum_b) {
  34.             printf("The total weight of horses is %lld, but the total weight of donkeys is %lld.\n", sum_a, sum_b);
  35.         }
  36.         if (sum_b != sum_c) {
  37.             printf("The total weight of donkeys is %lld, but the total weight of people is %lld.\n", sum_b, sum_c);
  38.         }
  39.     } else {
  40.         printf("YES, all weights are equal.\n");
  41.     }
  42.     return 0;
  43. }

这个版本的程序增加了对输入数据的验证,包括检查输入数据的有效性和总和是否为整数,并且不超过整数的最大值。如果输入数据无效或总和不是整数,程序将输出错误信息。如果总和不等,程序将输出哪个总和与其它总和不相等,以便用户更好地理解问题。

http://www.lryc.cn/news/253125.html

相关文章:

  • C++检测字符串中有效的括号个数
  • 前端依赖下载速度过慢解决方法,nrm 镜像管理工具
  • 如何为 3D 模型制作纹理的最佳方法
  • 智慧校园:TSINGSEE青犀智能视频监控系统,AI助力优化校园管理
  • Three的lod技术
  • Git配置
  • 阻抗控制下机器人接触刚性环境振荡不稳定进行阻抗调节
  • 【鸿蒙应用ArkTS开发系列】-自定义底部菜单列表弹窗
  • yolov8添加ca注意力机制
  • linux java后台启动的几种方式
  • selinux-policy-default(2:2.20231119-2)软件包内容详细介绍(5)
  • 代码随想录二刷 |栈与队列 |理论基础
  • java--接口概述
  • 出海风潮:中国母婴品牌征服国际市场的机遇与挑战!
  • 一文读懂MongoDB的知识点(3),惊呆面试官。
  • ssm的“魅力”西安宣传网站(有报告)。Javaee项目。
  • 怎么让SecureCRT不自动断开连接
  • 介绍几种Go语言开发的IDE
  • 1、设计模式简介(7大原则,3大类)
  • 华为鲲鹏+银河麒麟V10编译FreeSWITCH1.10.9
  • CFS三层靶机内网渗透
  • 软件分享--智能照片识别分类软件
  • Leetcode—409.最长回文串【简单】
  • 计算机网络入侵检测技术研究
  • 深入学习锁--Synchronized各种使用方法
  • pycharm中绘制一个3D曲线
  • 人工智能_AI服务器安装清华开源_CHATGLM大语言模型_GLM-6B安装部署_人工智能工作笔记0092
  • 用户反馈组件实现(Vue3+ElementPlus)含图片拖拽上传
  • K8S部署nginx并且使用NFS存储数据
  • Homework 3: Higher-Order Functions, Self Reference, Recursion, Tree Recursion