You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅用函数实现C++程序:输入10个数并输出其值、总和与平均值

趣味C++编程挑战实现与优化

挑战内容

编写一个C++程序,需完成以下功能:

  • 输入10个数字并展示它们
  • 计算并显示这些数字的总和以及平均值

同时必须遵守以下限制:

  • 不得使用任何显式定义的变量
  • 不得使用任何数据结构
  • 不得使用循环和条件语句
  • 仅可使用函数,允许使用函数参数

当前接近要求的实现代码

#include <functional>
#include <iostream>
#include <string>

using namespace std;

int getSum( int suma ) {
   cin >> suma;
   return suma;
}

void message( int sum, int count, int limit ) {
    cout << "Sum = " << sum << endl;
    cout << "average = " << sum / limit;
}

void calculate( int sum, int count, int limit ) {
   sum = sum + getSum(sum );

   function< void( int, int, int )> array[ 2 ] {
        message,
        calculate
   };
   
   array[ limit > count - true + 1 ]( sum, ++count, limit );
}

int main() {
   int amount = 3;
   std::cout << "Enter " << amount << " values: ";
   calculate( 0, 1, amount );
    return 0;
}

注:当前代码main函数中amount设为3,需改为10以匹配挑战要求。

代码逻辑说明

  • 输入与累加技巧:在sum + getSum(sum)操作中,利用C++执行机制,sum会保持原值参与运算,getSum仅负责读取输入值并返回——这里实际用到了getSum内部临时生成的变量,但未显式定义。
  • 递归终止与分支控制:通过函数数组配合布尔值转索引的方式实现分支选择:当limit > count时,计算得到的索引为1,会递归调用calculate函数并递增count;当count等于limit时,索引变为0,调用message函数输出结果,执行结束。

待优化点

当前实现仍使用了函数数组,需移除该数据结构以完全符合挑战限制。

内容的提问来源于stack exchange,提问作者Marce Puente

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 08:47:26